Markdown Jekyll'de resim yazısı kullanma


149

Github'da bir Jekyll Blogu barındırıyorum ve yayınlarımı Markdown ile yazıyorum. Resim eklerken bunu şu şekilde yaparım:

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

Bu daha sonra metindeki görüntüyü gösterir.

Ancak, Markdown'a resmin altında veya üstünde sunulan bir resim yazısı eklemesini nasıl söyleyebilirim?

Yanıtlar:


115

Eğer (doğrudan ilk siteyi oluşturmadan GitHub'dan onu zorlayabilir araçları) Herhangi eklentileri kullanmak istemiyorsanız, adlı yeni bir dosya oluşturabilir image.htmliçinde _includes:

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

Ardından, işaretlemenizdeki resmi şununla görüntüleyin:

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

1
Bu harika bir fikir! Ancak, site_rootgeçerli bir değişken olarak kabul edilmez. Oluşturulduğunda olarak sona erer src="{{ site.url_root }}....
orschiro

2
Ah, doğru, bu Octopress'e eklenen bir değişkendir . Bunu düzenledim, bu yüzden örnek kod sadece resme göreli bir URL kullanıyor.
IQAndreas

3
Jekyll artık bir site.urldeğişken içeriyor .
Roy Tinker

20
Daha iyi bir işaretleme:<figure class="image"><img src="{{ include.url }}" alt="{{ include.description }}"><figcaption>{{ include.description }}</figcaption></figure>
edmundo

Daha fazla bilgiye ihtiyacım var ... include image.html? Böyle bir şeyle deniyorum {% for image in page.images %}ama başarı yok. Bana yardım eder misiniz?
edmundo

287

Bunun eski bir soru olduğunu biliyorum, ancak resim yazıları ekleme yöntemimi hala paylaşacağımı düşündüm. captionVeya figcaptionetiketlerini kullanamazsınız , ancak bu herhangi bir eklenti kullanmadan basit bir alternatif olacaktır.

İşaretlemenizde, altyazınızı vurgu etiketiyle sarabilir ve şunun gibi yeni bir satır eklemeden doğrudan resmin altına yerleştirebilirsiniz:

![](path_to_image)
*image_caption*

Bu, aşağıdaki HTML'yi oluşturur:

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

Daha sonra CSS'nizde em, sayfadaki diğer etiketlere müdahale etmeden aşağıdaki seçiciyi kullanarak stil oluşturabilirsiniz :

img + em { }

Bunun yerine, görüntü ve resim yazısı arasında boş bir satır olmamalıdır.

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

İstediğiniz başka bir etiketi de kullanabilirsiniz em. Bir etiket olduğundan emin olun, aksi takdirde stil uygulayamazsınız.


3
Müthiş! Bazı aptal jekyll sözdizimini ezberlemeye gerek yok :)
Corstian Boerman

2
Ben büyük bir hayranıyım
Alex Williams

Teşekkür ederim! Sadece onu arıyordum
Michal Gruca

1
Merhaba! Nerede ve nasıl CSS parçası koymak için emin değilim ... kimse yardımcı olabilir eğer gerçekten harika olurdu.
ChriiSchee

2
@ChriiSchee Ya ana CSS dosyasına yerleştirirsiniz ya da kendinizinkini oluşturabilir ve varsayılan düzeninize bağlayabilirsiniz. Örneğin, varsayılan düzenim main.css dosyasına bağlanıyor, <link href="{{ site.baseurl }}/assets/css/main.css" rel="stylesheet">bu yüzden sadece bu dosyanın alt kısmına özel CSS tanımımı // My custom css img + em { display: block; text-align: center; } //image captions
ekliyorum

95

Bunun için tablo kullanabilirsiniz. İyi çalışıyor.

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

Sonuç:

resim açıklamasını buraya girin


8
Bu cevap en iyisidir .. Saf bir markdown kullanmak ve ihtiyacınız olanı almak. Teşekkürler!
Kadam Parikh

Bir çeşit oftopik, ama bu Jupyter Notebook'larda da çalışıyor.
paulochf

Benim için genişliği% 100'den düşürdü. Nasıl genişletebilirim?
Abhay Hegde

51

Altyazılı görüntüler için kullanılacak doğru HTML, <figure>ile<figcaption> .

Bunun için Markdown eşdeğeri yoktur, bu nedenle yalnızca ara sıra altyazı ekliyorsanız, bu html'yi Markdown belgenize eklemenizi öneririz:

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...

Markdown spesifikasyonu, HTML'yi bu gibi durumlarda gömmeye teşvik eder, bu yüzden iyi görünür . Ayrıca eklentilerle uğraşmaktan çok daha basit.

Altyazı oluşturmak için diğer Markdown-y özelliklerini (tablolar, yıldız işaretleri vb.) Kullanmaya çalışıyorsanız, Markdown'un nasıl kullanıldığını bilmezsiniz.


5
Bu cevabın dikkat çekmemesi çok kötü - bence bu en basit ve anlamsal olarak doğru. Özellikle 1990'lı yılların kargaşasını oluşturan tabloları kullanarak biçimlendirmeyi öneren tüm cevaplardan rahatsızım. ;-)
sudo make install

Katılıyorum. Ancak henüz Bitbucket tarafından desteklenmiyor gibi görünüyor. Yazık.
Boriel

@Andrew tarafından sağlanan akıllı ve basit bir cevap gibi ama açık, uygun HTML etiketlerini kullanır ve çok fazla yazmayı gerektirmeyen verilen bu bir gitmek zorunda.
Seanba

1
Çok teşekkürler, jekyll için yeniyim ve markdown html ile kullanılabileceğini bilmiyordum.
Sambo Kim

6

En çok oy alan cevapta hafif bir riffBiraz daha açık bulduğum bir şeye bir sınıf eklemek için jekyll sözdizimini kullanmak ve daha sonra bu şekilde stil uygulamaktır.

Böylece yazıya sahip olacaksınız:

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

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

Ve sonra CSS dosyanızda böyle bir şey yapabilirsiniz:

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

İyi görünüyor!


4

Bu sorunun anlamsal olarak doğru iki çözümü vardır:

  1. Eklenti kullanma
  2. Özel bir içerik oluşturma

1. Bir eklenti kullanma

Bunu yapan birkaç eklenti denedim ve en sevdiğimjekyll-figure .

1.1. Yüklemekjekyll-figure

Yüklemek için bir yolu jekyll-figureeklemektir gem "jekyll-figure"eklentilerinizde grubundaki Gemfile için.

Sonra bundle installterminal pencerenizden çalıştırın .

1.2. kullanımjekyll-figure

İşaretlemenizi {% figure %}ve {% endfigure %}etiketlerinizi sarmanız yeterlidir .

Altyazı açılış {% figure %}etiketine gider ve hatta işaretleme ile stil yapabilirsiniz!

Misal:

{% 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. Stil verin

Artık resimleriniz ve resim yazılarınız anlamsal olarak doğru olduğundan, CSS'yi istediğiniz gibi uygulayabilirsiniz:

  • figure (resim ve resim yazısı için)
  • figure img (yalnızca resim için)
  • figcaption (yalnızca altyazı için)

2. Özel bir içerik oluşturma

Sen gerekir bir oluşturmak image.htmliçin dosyayı _includesklasöre ve Markdown Sıvı kullanarak dahil .

2.1. _İncludes / image.html oluşturun

Oluşturmak image.htmliçin _includes klasöründe belgeyi:

<!-- _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. Markdown'a Sıvı kullanarak bir resim ekleyin

Bir görüntünün /assets/imagesbir başlık ile:

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 -->
%}

Mutlak URL kullanarak bir (dış) görüntü: (değişiklik src=""için 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 -->
%}

Tıklanabilir bir resim: ( url=""bağımsız değişken ekle )

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 -->
%}

Altyazısı olmayan bir resim:

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. Stil verin

Artık resimleriniz ve resim yazılarınız anlamsal olarak doğru olduğundan, CSS'yi istediğiniz gibi uygulayabilirsiniz:

  • figure (resim ve resim yazısı için)
  • figure img (yalnızca resim için)
  • figcaption (yalnızca altyazı için)

1
Tamlık için jekyll-figure kullanmak istiyorsanız _config.yml dosyasındaki eklentilere jekyll-figure eklemeniz gerekecek
Sanchis

3

pandocDönüştürücünüz olarak kullanmayı deneyebilirsiniz . İşte bunu uygulamak için bir jekyll eklentisi . Pandoc, altözelliğinizle aynı şekilde bir resim yazısı ekleyebilecektir .

Ancak derlenmiş siteyi zorlamanız gerekir, çünkü github güvenlik için Github sayfalarında eklentilere izin vermez.


Teşekkürler. Peki, markdown tek başına altyazı oluşturamıyor mu?
orschiro

Bunun kullandığınız dönüştürücüye bağlı olduğuna inanıyorum, ancak etiketleme standardı altyazı eklemeyi desteklemiyor.
Chongxu Ren

3

Andrew'un @ andrew-wei cevabı harika çalışıyor. Ne yapmaya çalıştığınıza bağlı olarak birkaçını birlikte zincirleyebilirsiniz. Bu, örneğin, alt satır, başlık ve resim yazısı içeren bir resim, satır sonu ve kalın ve italik yazıların farklı bölümlerinde görüntülenmesini sağlar:

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;}

Aşağıdaki işaretleme ile <img>:

![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>

Temel altyazı kullanımı budur. Ek bir eklenti kullanmak gerekli değildir.


0

İşte en basit (ama en güzel değil) çözüm: her şeyin etrafında bir tablo yapın. Açıkça ölçekleme sorunları var ve bu yüzden HTML ile örneğimi verdim, böylece görüntü boyutunu kolayca değiştirebilirsiniz. Bu benim için çalıştı.

| <img src="" alt="" style="width: 400px;"/> |
| My Caption |
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.