การใช้คำบรรยายภาพใน Markdown Jekyll


149

ฉันกำลังโฮสต์บล็อก Jekyll บน Github และเขียนโพสต์ของฉันด้วย Markdown เมื่อฉันเพิ่มภาพฉันทำตามวิธีต่อไปนี้:

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

จากนั้นจะแสดงรูปภาพในข้อความ

อย่างไรก็ตามฉันจะบอก Markdown ให้เพิ่มคำอธิบายภาพที่แสดงด้านล่างหรือด้านบนของภาพได้อย่างไร

คำตอบ:


115

หากคุณไม่ต้องการใช้ปลั๊กอินใด ๆ (ซึ่งหมายความว่าคุณสามารถส่งไปที่ GitHub โดยตรงโดยไม่ต้องสร้างเว็บไซต์ก่อน) คุณสามารถสร้างไฟล์ใหม่ที่มีชื่อimage.htmlใน_includes:

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

จากนั้นแสดงภาพจาก markdown ของคุณด้วย:

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

1
นั่นเป็นความคิดที่ยอดเยี่ยม! อย่างไรก็ตามsite_rootไม่ยอมรับว่าเป็นตัวแปรที่ถูกต้อง src="{{ site.url_root }}...เมื่อแสดงผลจะสิ้นสุดขึ้นเป็น
orschiro

2
อาขวาที่เป็นตัวแปรที่เพิ่มเข้ามาในOctopress ฉันแก้ไขมันออกมาดังนั้นโค้ดตัวอย่างเพียงแค่ใช้ URL สัมพัทธ์กับภาพ
IQAndreas

3
ตอนนี้ Jekyll มีsite.urlตัวแปร
Roy Tinker

20
มาร์กอัปที่ดีกว่าคือ:<figure class="image"><img src="{{ include.url }}" alt="{{ include.description }}"><figcaption>{{ include.description }}</figcaption></figure>
edmundo

ฉันต้องการข้อมูลเพิ่มเติม ... เป็นไปได้หรือไม่ที่จะเพิ่มภาพมากกว่าหนึ่งภาพโดยไม่จำเป็นต้องทำซ้ำinclude image.html? ฉันพยายามทำสิ่งที่ชอบ{% for image in page.images %}แต่ไม่ประสบความสำเร็จ คุณสามารถช่วยฉันได้ไหม?
edmundo

287

ฉันรู้ว่านี่เป็นคำถามเก่า แต่ฉันคิดว่าฉันยังคงแบ่งปันวิธีการเพิ่มคำบรรยายภาพ คุณจะไม่สามารถใช้captionหรือfigcaptionแท็กได้ แต่จะเป็นทางเลือกง่ายๆโดยไม่ต้องใช้ปลั๊กอินใด ๆ

ใน markdown ของคุณคุณสามารถใส่คำบรรยายใต้ภาพด้วยแท็กการเน้นและวางไว้ใต้ภาพโดยตรงโดยไม่ต้องใส่บรรทัดใหม่ดังนี้:

![](path_to_image)
*image_caption*

สิ่งนี้จะสร้าง HTML ต่อไปนี้:

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

จากนั้นใน CSS ของคุณคุณสามารถจัดรูปแบบโดยใช้ตัวเลือกต่อไปนี้โดยไม่รบกวนemแท็กอื่น ๆในหน้า:

img + em { }

โปรดทราบว่าคุณต้องไม่มีบรรทัดว่างระหว่างรูปภาพและคำอธิบายภาพเนื่องจากจะสร้างแทน:

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

นอกจากนี้คุณยังสามารถใช้สิ่งที่คุณต้องการแท็กอื่น ๆ emกว่า เพียงตรวจสอบให้แน่ใจว่ามีแท็กไม่เช่นนั้นคุณจะไม่สามารถจัดสไตล์ได้


3
! น่ากลัว ไม่จำเป็นต้องจดจำบาง Jekyll ไวยากรณ์โง่ :)
Corstian Boerman

2
ฉันเป็นแฟนตัวยงของเรื่องนี้
อเล็กซ์วิลเลียมส์

ขอบคุณ! เป็นเพียงการค้นหานั้น
Michal Gruca

1
สวัสดี! ฉันไม่แน่ใจว่าจะนำส่วน CSS ไปที่ไหนและอย่างไรจะดีมากถ้ามีใครช่วย
ChriiSchee

2
@ChriiSchee ไม่ว่าคุณจะวางไว้ในไฟล์ CSS หลักหรือคุณสามารถสร้างของคุณเองและเชื่อมโยงไปยังเค้าโครงเริ่มต้นของคุณ ตัวอย่างเช่นเค้าโครงเริ่มต้นของฉันเชื่อมโยงไปยังไฟล์ main.css <link href="{{ site.baseurl }}/assets/css/main.css" rel="stylesheet">ดังนั้นฉันเพิ่งเพิ่มนิยาม CSS ที่กำหนดเองที่ด้านล่างของไฟล์นี้: // My custom css img + em { display: block; text-align: center; } //image captions
Jan Zavrel

95

คุณสามารถใช้ตารางสำหรับสิ่งนี้ มันใช้งานได้ดี

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

ผลลัพธ์:

ป้อนคำอธิบายรูปภาพที่นี่


8
คำตอบนี้เป็นคำตอบที่ดีที่สุด .. การใช้ markdown ล้วน ๆ และได้รับสิ่งที่คุณต้องการ ขอบคุณ!
Kadam Parikh

เรียงจาก offtopic แต่ยังใช้งานได้ในโน๊ตบุ๊ค Jupyter
paulochf

มันลดความกว้างลงจาก 100% สำหรับฉัน ฉันจะขยายมันได้อย่างไร
Abhay Hegde

51

HTML ที่ถูกต้องเพื่อใช้สำหรับภาพที่มีคำบรรยายเป็นด้วย<figure><figcaption>

ไม่มี Markdown ที่เทียบเท่ากับสิ่งนี้ดังนั้นหากคุณเพียงเพิ่มคำบรรยายภาพเป็นครั้งคราวฉันขอแนะนำให้คุณเพิ่ม html นั้นลงในเอกสาร Markdown ของคุณ:

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 สนับสนุนให้คุณฝัง HTML ในกรณีเช่นนี้ดังนั้นมันจะแสดงผลได้ดี นอกจากนี้ยังง่ายกว่าการล้อเล่นกับปลั๊กอิน

หากคุณกำลังพยายามที่จะใช้คุณสมบัติ Markdown-y อื่น ๆ (เช่นตาราง, เครื่องหมายดอกจัน, ฯลฯ ) เพื่อสร้างคำบรรยายภาพคุณก็แค่แฮ็คว่าจะให้ Markdown ถูกใช้งานอย่างไร


5
มันแย่มากที่คำตอบนี้ไม่ได้รับความสนใจ - ฉันคิดว่ามันง่ายและถูกต้องที่สุด ฉันเป็นทุกข์โดยเฉพาะคำตอบทั้งหมดที่แนะนำการจัดรูปแบบโดยใช้ตารางซึ่งเพิ่งสร้างความโกลาหลในปี 1990 ;-)
sudo ทำการติดตั้ง

ฉันเห็นด้วย. อย่างไรก็ตามดูเหมือนว่าจะไม่ได้รับการสนับสนุนจาก Bitbucket พิลึก
Boriel

ฉันชอบคำตอบที่ชาญฉลาดและเรียบง่ายที่มีให้โดย @Andrew แต่ฉันต้องไปกับคำตอบที่ระบุไว้อย่างชัดเจนใช้แท็ก HTML ที่เหมาะสมและไม่ต้องพิมพ์มากเกินไป
Seanba

1
ขอบคุณมากฉันยังใหม่กับ jekyll และไม่รู้ว่า markdown สามารถใช้กับ html ได้
นิโกรคิม

6

คำตอบที่ได้รับการโหวตเล็กน้อยบนชั้นล่างเล็กน้อยที่ฉันคิดว่าชัดเจนกว่านั้นคือการใช้ไวยากรณ์ jekyll เพื่อเพิ่มคลาสให้กับบางสิ่งบางอย่าง

ดังนั้นในโพสต์คุณจะได้:

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

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

จากนั้นในไฟล์ CSS ของคุณคุณสามารถทำสิ่งนี้:

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

ออกมาดูดี!


4

มีคำตอบที่ถูกต้องสองวิธีสำหรับคำถามนี้:

  1. ใช้งานปลั๊กอิน
  2. การสร้างแบบกำหนดเองรวมถึง

1. การใช้ปลั๊กอิน

ฉันได้พยายามคู่ของปลั๊กอินทำเช่นนี้และที่ชื่นชอบคือjekyll-figure

1.1 ติดตั้งjekyll-figure

วิธีหนึ่งในการติดตั้งjekyll-figureคือการเพิ่มgem "jekyll-figure"Gemfile ลงในกลุ่มปลั๊กอิน

จากนั้นเรียกใช้bundle installจากหน้าต่างเทอร์มินัลของคุณ

1.2 ใช้jekyll-figure

เพียงห่อ markdown ของคุณ{% figure %}และ{% endfigure %}แท็ก

คำบรรยายใต้ภาพของคุณจะอยู่ใน{% figure %}แท็กเปิดและคุณยังสามารถจัดแต่งมันด้วยมาร์คดาวน์!

ตัวอย่าง:

{% 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 สไตล์มัน

เมื่อภาพและคำอธิบายภาพของคุณถูกต้องแล้วคุณสามารถใช้ CSS ได้ตามที่คุณต้องการ:

  • figure (สำหรับทั้งภาพและคำบรรยาย)
  • figure img (สำหรับภาพเท่านั้น)
  • figcaption (สำหรับคำบรรยายภาพเท่านั้น)

2. การสร้างการรวมแบบกำหนดเอง

คุณจะต้องสร้างimage.htmlไฟล์ของคุณใน_includesโฟลเดอร์และรวมไว้โดยใช้ของเหลวใน Markdown

2.1 สร้าง _includes / image.html

สร้างimage.htmlเอกสารในโฟลเดอร์ _includes ของคุณ:

<!-- _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 ให้ใส่รูปภาพโดยใช้ Liquid

รูปภาพที่/assets/imagesมีคำอธิบายภาพ:

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

รูปภาพ (ภายนอก) โดยใช้ URL แบบสัมบูรณ์: (เปลี่ยนsrc=""เป็น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 -->
%}

ภาพที่คลิกได้: (เพิ่มurl=""อาร์กิวเมนต์)

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

รูปภาพที่ไม่มีคำบรรยาย:

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 สไตล์มัน

เมื่อภาพและคำอธิบายภาพของคุณถูกต้องแล้วคุณสามารถใช้ CSS ได้ตามที่คุณต้องการ:

  • figure (สำหรับทั้งภาพและคำบรรยาย)
  • figure img (สำหรับภาพเท่านั้น)
  • figcaption (สำหรับคำบรรยายภาพเท่านั้น)

1
เพื่อความสมบูรณ์ถ้าคุณต้องการใช้รูป jekyll คุณจะต้องเพิ่ม jekyll-figure เข้ากับปลั๊กอินใน _config.yml ของคุณ
Aleix Sanchis

3

คุณสามารถลองใช้pandocเป็นตัวแปลงของคุณ นี่คือปลั๊กอิน jekyllเพื่อดำเนินการนี้ Pandoc จะสามารถเพิ่มคำบรรยายภาพให้เหมือนกับaltแอตทริบิวต์ของคุณโดยอัตโนมัติ

แต่คุณต้องกดไซต์ที่คอมไพล์เพราะ github ไม่อนุญาตให้ใช้ปลั๊กอินในหน้า Github เพื่อความปลอดภัย


ขอบคุณ ดังนั้นการลดระดับเครื่องหมายอย่างเดียวไม่สามารถสร้างคำบรรยายภาพได้ใช่ไหม
orschiro

ฉันเชื่อว่ามันขึ้นอยู่กับตัวแปลงที่คุณใช้อย่างไรก็ตามมาตรฐาน markdown ไม่รองรับการเพิ่มคำบรรยาย
Chongxu Ren

3

คำตอบ @ andrew-wei ของ Andrew ใช้งานได้ดี นอกจากนี้คุณยังสามารถเชื่อมโยงเข้าด้วยกันโดยขึ้นอยู่กับว่าคุณกำลังพยายามทำอะไร ตัวอย่างเช่นคุณได้รับรูปภาพที่มี alt ชื่อและคำอธิบายภาพพร้อมตัวแบ่งบรรทัดและตัวหนาและตัวเอียงในส่วนต่างๆของคำบรรยายภาพ:

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

ด้วย<img>markdown ต่อไปนี้:

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

นั่นคือการใช้คำอธิบายภาพพื้นฐาน ไม่จำเป็นต้องใช้ปลั๊กอินเสริม


0

นี่คือวิธีที่ง่ายที่สุด (แต่ไม่ใช่ที่น่ารักที่สุด) วิธีแก้ปัญหา: สร้างตารางรอบ ๆ สิ่งทั้งหมด เห็นได้ชัดว่ามีปัญหาเกี่ยวกับการปรับขนาดและนี่คือเหตุผลที่ฉันให้ตัวอย่างกับ HTML เพื่อให้คุณสามารถปรับขนาดภาพได้อย่างง่ายดาย สิ่งนี้ใช้ได้สำหรับฉัน

| <img src="" alt="" style="width: 400px;"/> |
| My Caption |
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.