Menggunakan keterangan gambar di Markdown Jekyll


149

Saya hosting Blog Jekyll di Github dan menulis posting saya dengan Markdown. Ketika saya menambahkan gambar, saya melakukannya dengan cara berikut:

![name of the image](http://link.com/image.jpg)

Ini kemudian menunjukkan gambar dalam teks.

Namun, bagaimana saya bisa memberi tahu Markdown untuk menambahkan keterangan yang disajikan di bawah atau di atas gambar?

Jawaban:


115

Jika Anda tidak ingin menggunakan plugin (yang berarti dapat Anda mendorongnya untuk GitHub langsung tanpa menghasilkan situs yang pertama), Anda dapat membuat file baru bernama image.htmldi _includes:

<figure class="image">
  <img src="{{ include.url }}" alt="{{ include.description }}">
  <figcaption>{{ include.description }}</figcaption>
</figure>

Dan kemudian tampilkan gambar dari penurunan harga Anda dengan:

{% include image.html url="/images/my-cat.jpg" description="My cat, Robert Downey Jr." %}

1
Ide yang bagus! Namun, site_roottidak diterima sebagai variabel yang valid. Ketika diterjemahkan itu berakhir sebagai src="{{ site.url_root }}....
orschiro

2
Ah, benar, itu adalah variabel yang ditambahkan dalam Octopress . Saya mengeditnya, jadi kode sampel hanya menggunakan URL relatif ke gambar.
IQAndreas

3
Jekyll sekarang termasuk site.urlvariabel.
Roy Tinker

20
Markup yang lebih baik adalah:<figure class="image"><img src="{{ include.url }}" alt="{{ include.description }}"><figcaption>{{ include.description }}</figcaption></figure>
edmundo

Saya butuh informasi lebih lanjut ... apakah mungkin untuk meletakkan lebih dari satu gambar tanpa perlu mengulang include image.html? Saya mencoba dengan sesuatu seperti {% for image in page.images %}tetapi tidak berhasil. Bisakah kamu membantuku?
edmundo

287

Saya tahu ini adalah pertanyaan lama tapi saya pikir saya masih akan berbagi metode saya menambahkan keterangan gambar. Anda tidak akan dapat menggunakan captionataufigcaption tag , tetapi ini akan menjadi alternatif sederhana tanpa menggunakan plugin apa pun.

Dalam penurunan harga Anda, Anda dapat membungkus takarir Anda dengan tag penekanan dan meletakkannya langsung di bawah gambar tanpa memasukkan baris baru seperti:

![](path_to_image)
*image_caption*

Ini akan menghasilkan HTML berikut:

<p>
    <img src="path_to_image" alt>
    <em>image_caption</em>
</p>

Kemudian di CSS Anda, Anda bisa menatanya menggunakan pemilih berikut tanpa mengganggu emtag lain pada halaman:

img + em { }

Perhatikan bahwa Anda tidak boleh memiliki garis kosong antara gambar dan teks karena itu akan menghasilkan:

<p>
    <img src="path_to_image" alt>
</p>
<p>
    <em>image_caption</em>
</p>

Anda juga dapat menggunakan tag apa pun yang Anda inginkan selain em. Pastikan ada tag, jika tidak, Anda tidak akan bisa men-style-nya.


3
Luar biasa! Tidak perlu mengingat beberapa sintaks
jekyll yang

2
Saya penggemar ini
Alex Williams

Terima kasih! Sedang mencari itu
Michal Gruca

1
Hai yang disana! Saya tidak yakin di mana dan bagaimana menempatkan bagian CSS ... akan sangat bagus jika ada yang bisa membantu.
ChriiSchee

2
@ChriiSchee Entah Anda meletakkannya di file CSS utama, atau Anda dapat membuatnya sendiri dan menautkannya ke tata letak default Anda. Sebagai contoh, tata letak default saya menghubungkan ke file main.css <link href="{{ site.baseurl }}/assets/css/main.css" rel="stylesheet">jadi saya hanya menambahkan definisi CSS kustom saya di bagian bawah file ini: // My custom css img + em { display: block; text-align: center; } //image captions
Jan Zavrel

95

Anda dapat menggunakan tabel untuk ini. Ini bekerja dengan baik.

| ![space-1.jpg](http://www.storywarren.com/wp-content/uploads/2016/09/space-1.jpg) | 
|:--:| 
| *Space* |

Hasil:

masukkan deskripsi gambar di sini


8
Jawaban ini adalah yang terbaik .. Menggunakan markdown murni dan mendapatkan apa yang Anda butuhkan. Terima kasih!
Kadam Parikh

Agak offtopic, tetapi ini juga berfungsi di Jupyter Notebooks.
paulochf

Ini mengurangi lebar dari 100% untuk saya. Bagaimana saya melebarkannya?
Abhay Hegde

50

HTML yang benar untuk digunakan untuk gambar dengan teks, adalah <figure>dengan<figcaption> .

Tidak ada Markdown yang setara untuk ini, jadi jika Anda hanya menambahkan teks sekali-sekali, saya sarankan Anda untuk menambahkan html itu ke dalam dokumen penurunan harga Anda:

Lorem ipsum dolor sit amet, consectetur adipiscing elit...

<figure>
  <img src="{{site.url}}/assets/image.jpg" alt="my alt text"/>
  <figcaption>This is my caption text.</figcaption>
</figure>

Vestibulum eu vulputate magna...

Spesifikasi Markdown mendorong Anda untuk menyematkan HTML dalam kasus-kasus seperti ini, sehingga itu akan ditampilkan dengan baik. Ini juga jauh lebih sederhana daripada mengotak-atik plugin.

Jika Anda mencoba menggunakan fitur Markdown-y lainnya (seperti tabel, tanda bintang, dll) untuk menghasilkan teks, maka Anda hanya mencari-cari bagaimana Markdown dimaksudkan untuk digunakan.


5
Sayang sekali jawaban ini tidak mendapat perhatian - saya benar-benar berpikir itu adalah yang paling sederhana dan paling benar secara semantik. Saya sangat tertekan dengan semua jawaban yang menyarankan pemformatan menggunakan tabel, yang hanya menimbulkan kekacauan tahun 1990-an. ;-)
sudo make install

Saya setuju. Namun sepertinya belum didukung oleh Bitbucket. Kucing.
Boriel

Saya suka jawaban yang cerdas dan sederhana yang disediakan oleh @Andrew tapi saya harus menggunakan yang ini secara eksplisit, menggunakan tag HTML yang sesuai, dan tidak perlu mengetik terlalu banyak.
Seanba

1
Terima kasih banyak, saya baru mengenal jekyll dan tidak tahu penurunan harga dapat digunakan dengan html.
Sambo Kim

6

Riff kecil di bagian atas memberikan suara yang saya temukan menjadi sedikit lebih eksplisit adalah dengan menggunakan sintaks jekyll untuk menambahkan kelas ke sesuatu dan kemudian gaya itu seperti itu.

Jadi di pos Anda akan memiliki:

![My image](/images/my-image.png)

{:.image-caption}
*The caption for my image*

Dan kemudian di file CSS Anda, Anda dapat melakukan sesuatu seperti ini:

.image-caption {
  text-align: center;
  font-size: .8rem;
  color: light-grey;

Keluar terlihat bagus!


4

Ada dua solusi semantik yang benar untuk pertanyaan ini:

  1. Menggunakan plugin
  2. Membuat custom termasuk

1. Menggunakan plugin

Saya sudah mencoba beberapa plugin melakukan ini dan favorit saya adalahjekyll-figure .

1.1. Installjekyll-figure

Salah satu cara untuk menginstal jekyll-figureadalah menambahkan gem "jekyll-figure"Gemfile Anda di grup plugin Anda.

Kemudian jalankan bundle installdari jendela terminal Anda.

1.2. Menggunakanjekyll-figure

Cukup bungkus penurunan harga {% figure %}dan {% endfigure %}tag Anda.

Keterangan Anda ada di {% figure %}tag pembuka , dan Anda bahkan dapat menatanya dengan penurunan harga!

Contoh:

{% figure caption:"Le logo de **Jekyll** et son clin d'oeil à Robert Louis Stevenson" %}
    ![Le logo de Jekyll](/assets/images/2018-08-07-jekyll-logo.png)
{% endfigure %}

1.3. Gaya itu

Sekarang gambar dan teks Anda secara semantik benar, Anda dapat menerapkan CSS sesuai keinginan:

  • figure (untuk gambar dan teks)
  • figure img (hanya untuk gambar)
  • figcaption (hanya untuk keterangan)

2. Membuat custom termasuk

Anda harus membuat image.htmlfile di _includesfolder Anda , dan memasukkannya menggunakan Liquid in Markdown .

2.1. Buat _includes / image.html

Buat image.htmldokumen di folder _includes Anda:

<!-- _includes/image.html -->
<figure>
    {% if include.url %}
    <a href="{{ include.url }}">
    {% endif %}
    <img
        {% if include.srcabs %}
            src="{{ include.srcabs }}"
        {% else %}
            src="{{ site.baseurl }}/assets/images/{{ include.src }}"
        {% endif %}
    alt="{{ include.alt }}">
    {% if include.url %}
    </a>
    {% endif %}
    {% if include.caption %}
        <figcaption>{{ include.caption }}</figcaption>
    {% endif %}
</figure>

2.2. Dalam penurunan harga, sertakan gambar menggunakan Liquid

Gambar /assets/imagesdengan keterangan:

This is [Jekyll](https://jekyllrb.com)'s logo :

{% include image.html
    src="jekyll-logo.png" <!-- image filename (placed in /assets/images) -->
    alt="Jekyll's logo" <!-- alt text -->
    caption="This is Jekyll's logo, featuring Dr. Jekyll's serum!" <!-- Caption -->
%}

Gambar (eksternal) menggunakan URL absolut: (ubah src=""ke srcabs="")

This is [Jekyll](https://jekyllrb.com)'s logo :

{% include image.html
    srcabs="https://jekyllrb.com/img/logo-2x.png" <!-- absolute URL to image file -->
    alt="Jekyll's logo" <!-- alt text -->
    caption="This is Jekyll's logo, featuring Dr. Jekyll's serum!" <!-- Caption -->
%}

Gambar yang dapat diklik: (tambahkan url=""argumen)

This is [Jekyll](https://jekyllrb.com)'s logo :

{% include image.html
    src="https://jekyllrb.com/img/logo-2x.png" <!-- absolute URL to image file -->
    url="https://jekyllrb.com" <!-- destination url -->
    alt="Jekyll's logo" <!-- alt text -->
    caption="This is Jekyll's logo, featuring Dr. Jekyll's serum!" <!-- Caption -->
%}

Gambar tanpa teks:

This is [Jekyll](https://jekyllrb.com)'s logo :

{% include image.html
    src="https://jekyllrb.com/img/logo-2x.png" <!-- absolute URL to image file -->
    alt="Jekyll's logo" <!-- alt text -->
%}

2.3. Gaya itu

Sekarang gambar dan teks Anda secara semantik benar, Anda dapat menerapkan CSS sesuai keinginan:

  • figure (untuk gambar dan teks)
  • figure img (hanya untuk gambar)
  • figcaption (hanya untuk keterangan)

1
Hanya untuk kelengkapan, jika Anda ingin menggunakan jekyll-figure Anda harus menambahkan jekyll-figur ke plugin di _config.yml Anda
Aleix Sanchis

3

Anda dapat mencoba menggunakan pandocsebagai konverter Anda. Berikut adalah plugin jekyll untuk mengimplementasikan ini. Pandoc akan dapat menambahkan keterangan gambar yang sama dengan altatribut Anda secara otomatis.

Tetapi Anda harus mendorong situs yang dikompilasi karena github tidak mengizinkan pengaya di halaman Github untuk keamanan.


Terima kasih. Jadi penurunan harga saja tidak mampu membuat teks?
orschiro

Saya percaya ini tergantung pada konverter yang Anda gunakan, namun, standar penurunan harga tidak mendukung penambahan teks.
Chongxu Ren

3

Jawaban Andrew andrew-wei sangat bagus. Anda juga dapat membuat beberapa rantai bersama, tergantung pada apa yang Anda coba lakukan. Ini, misalnya, memberi Anda gambar dengan alt, judul, dan teks dengan jeda baris dan huruf tebal dan huruf miring di berbagai bagian teks:

img + br + strong {margin-top: 5px; margin-bottom: 7px; font-style:italic; font-size: 12px; }
img + br + strong + em {margin-top: 5px; margin-bottom: 7px; font-size: 12px; font-style:italic;}

Dengan <img>penurunan harga berikut :

![description](https://img.jpg "description")
***Image:*** *description*

1
<p align="center">
  <img alt="img-name" src="/path/image-name.png" width="300">
  <br>
    <em>caption</em>
</p>

Itulah penggunaan teks dasar. Tidak perlu menggunakan plugin tambahan.


0

Inilah solusi paling sederhana (tapi tidak tercantik): buatlah tabel di sekitar semuanya. Jelas ada masalah penskalaan, dan inilah mengapa saya memberikan contoh saya dengan HTML sehingga Anda dapat memodifikasi ukuran gambar dengan mudah. Ini berhasil untuk saya.

| <img src="" alt="" style="width: 400px;"/> |
| My Caption |
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.