ความคิดเห็นใน Markdown


1401

ไวยากรณ์สำหรับการจัดเก็บความคิดเห็นในไฟล์มาร์กอัปเช่นความคิดเห็น CVS $ Id $ ที่ด้านบนของไฟล์คืออะไร ผมพบว่าไม่มีอะไรในโครงการ markdown


10
อ่านระหว่างบรรทัดดูเหมือนว่าคุณต้องการแนบข้อมูลเมตากับ Markdown ของคุณ ด้วยเหตุนี้ฉันขอแนะนำให้ใช้ preprocessor ที่ให้คุณเพิ่มส่วนหัว ตัวอย่างหนึ่งที่เห็นหน้าเรื่อง Jekyll ของ สำหรับตัวอย่างอื่นดูว่าBasho ใช้คนกลางสำหรับเอกสารประกอบของพวกเขาอย่างไร (หมายเหตุ: นี่ไม่ใช่คำตอบที่ตรงกับคำถามซึ่งเป็นสาเหตุที่ฉันแชร์เป็นความคิดเห็น)
David J.

2
ดูเพิ่มเติมวิธีMultiMarkdown สนับสนุนเมตาดาต้า
David J.

นี่คือมาตรฐานของความคิดเห็นที่แตกต่างกันพิมพ์ด้วย parsers แตกต่างกันในBabelmark
Ulysse BN

คำตอบ:


1454

ฉันเชื่อว่าโซลูชันที่นำเสนอก่อนหน้านี้ทั้งหมด (นอกเหนือจากที่ต้องการการใช้งานเฉพาะ) ส่งผลให้ความคิดเห็นที่รวมอยู่ใน HTML ออกแม้ว่าพวกเขาจะไม่แสดง

หากคุณต้องการความคิดเห็นที่เคร่งครัดสำหรับตัวคุณเอง (ผู้อ่านเอกสารที่แปลงแล้วจะไม่สามารถดูได้แม้จะมี "มุมมองแหล่งที่มา") คุณสามารถ (ab) ใช้ป้ายกำกับลิงก์ (สำหรับใช้กับลิงก์สไตล์อ้างอิง) ที่ มีอยู่ในข้อกำหนด Markdown หลัก:

http://daringfireball.net/projects/markdown/syntax#link

นั่นคือ:

[comment]: <> (This is a comment, it will not be included)
[comment]: <> (in  the output file unless you use it in)
[comment]: <> (a reference style link.)

หรือคุณสามารถไปต่อ:

[//]: <> (This is also a comment.)

เพื่อปรับปรุงความเข้ากันได้ของแพลตฟอร์ม (และเพื่อบันทึกการกดแป้นหนึ่งครั้ง) คุณยังสามารถใช้#(ซึ่งเป็นเป้าหมายการเชื่อมโยงหลายมิติที่ถูกต้องตามกฎหมาย) แทน<>:

[//]: # (This may be the most platform independent comment)

เพื่อความสะดวกในการพกพาสูงสุดสิ่งสำคัญคือต้องแทรกบรรทัดว่างไว้ก่อนและหลังความคิดเห็นประเภทนี้เนื่องจากตัวแยกวิเคราะห์มาร์คดาวน์บางตัวทำงานไม่ถูกต้องเมื่อคำจำกัดความแปรงกับข้อความทั่วไป การวิจัยล่าสุดกับ Babelmark แสดงให้เห็นว่าบรรทัดว่างก่อนและหลังมีความสำคัญทั้งคู่ ตัวแยกวิเคราะห์บางตัวจะแสดงความคิดเห็นหากไม่มีบรรทัดว่างก่อนหน้านี้และตัวแยกวิเคราะห์บางตัวจะแยกบรรทัดต่อไปนี้ออกหากไม่มีบรรทัดว่างหลังจากนั้น

โดยทั่วไปวิธีการนี้ควรทำงานกับตัวแยกวิเคราะห์ Markdown ส่วนใหญ่เนื่องจากเป็นส่วนหนึ่งของข้อกำหนดหลัก (แม้ว่าพฤติกรรมเมื่อมีการกำหนดลิงค์หลายรายการหรือเมื่อมีการกำหนดลิงค์ แต่ไม่เคยใช้จะไม่ได้ระบุอย่างเคร่งครัด)


145
[//]: # "Comment"และ[//]: # (Comment)ดูเหมือนว่าจะใช้งานได้กับการใช้งานที่หลากหลายมากขึ้นเพราะ#เป็น URI ที่เกี่ยวข้อง ตัวอย่างเช่น GitHub ปฏิเสธ<>และมองเห็นทั้งบรรทัด นอกจากนี้ยังเป็นที่น่าสังเกตว่าป้ายกำกับลิงก์มักจะต้องแยกออกจากเนื้อหาอื่นด้วยบรรทัดว่าง
Zenexer

6
เพื่อให้เป็นอิสระจากแพลตฟอร์มส่วนใหญ่จะต้องมีบรรทัดว่างก่อนแสดงความคิดเห็น ดูการทดสอบ: stackoverflow.com/a/32190021/2790048
Nick Volynkin

6
สามารถใช้เพื่อแสดงความคิดเห็นแบบหลายบรรทัดได้หรือไม่
crypdick

4
@RovingRichard ใช่อย่างน้อยที่สุดใน Pandoc นี่จะใช้สำหรับการแสดงความคิดเห็นหลายบรรทัดหากไม่มีบรรทัดว่างในบล็อกที่คอมเม้นต์ ฉันใช้วิธีของ Magnus สำหรับบล็อกความคิดเห็นและวิธี HTML ของ chl สำหรับความคิดเห็นแบบอินไลน์ (แม้ว่าโดยปกติจะมีเพียง 2 ขีด) วิธีนี้ฉันสามารถปิดกั้นความคิดเห็นในย่อหน้าที่มีความคิดเห็น HTML แบบอินไลน์อยู่แล้ว
joelostblom

4
เพียงแค่ FYI แต่หากคุณกำลังสร้าง TOC โดยใช้ Pandoc สิ่งนี้จะสร้างคำเตือนเกี่ยวกับการอ้างอิงลิงก์ซ้ำ (สิ่งเหล่านี้เป็นเพียงคำเตือน TOC จะยังคงถูกสร้างขึ้น)
Karl Giesing

995

ฉันใช้แท็ก HTML มาตรฐานเช่น

<!---
your comment goes here
and here
-->

สังเกตเส้นประสามเส้น ข้อดีคือมันทำงานกับแพนดอคเมื่อสร้าง TeX หรือ HTML เอาท์พุท ข้อมูลเพิ่มเติมสามารถดูได้บนpandoc-หารือเกี่ยวกับกลุ่ม


73
หากฉันเข้าใจอย่างถูกต้องเครื่องหมายขีดสามจะทำให้pandocเพิกเฉยต่อความคิดเห็นเมื่อแยกวิเคราะห์ไฟล์ markdown แต่ถ้าคุณใช้เอ็นจิ้นมาร์คอัปอื่นความคิดเห็นจะปรากฏใน HTML ที่สร้างขึ้น (และสามารถมองเห็นได้ด้วย "ดูแหล่งที่มา") ดังนั้นคุณต้องระวังสิ่งที่คุณใส่ลงไปใน
คอมเม้นท์

5
คุณสามารถอธิบายได้ว่า Pandoc รักษาเครื่องหมายขีดคั่นสามเท่าแตกต่างจากสองเท่าได้อย่างไร? เมื่อฉันทดลองกับพวกเขาพวกเขาดูเหมือนจะได้รับการจัดการในลักษณะเดียวกัน นอกจากนี้คู่มือผู้ใช้ Pandocเพิ่งพูดว่า "HTML แบบดิบผ่านไม่เปลี่ยนแปลงใน HTML, S5, Slidy, Slideous, DZSlides, EPUB, Markdown และเอาต์พุตสิ่งทอและระงับในรูปแบบอื่น ๆ " เส้นประสามเท่าดูเหมือนว่าจะไม่มีสิทธิ์ใด ๆ ที่สูงกว่าแบบสองเท่า
dkim

1
@dkim ความคิดเห็นที่มีเส้นประสามด้านจะถูกละเว้นและถูกละทิ้งจากเอาต์พุต HTML นี่ไม่ใช่กรณีที่มีความคิดเห็นแบบเส้นประสองด้านซึ่งถูกแทรกในไฟล์ HTML ยังคงเป็นกรณีของ Pandoc รุ่นล่าสุด (1.10)
chl

32
หากเส้นประสามเส้นมีความสำคัญแสดงว่าสิ่งเหล่านี้ไม่ใช่ความคิดเห็น "HTML มาตรฐาน"
tripleee

17
หมายเหตุสำหรับชาว Google: สิ่งนี้น่าเสียดายที่ใช้ไม่ได้กับ GitHub Markdown และฉันก็ลงเอยด้วยการใช้โซลูชันของแมกนัส
Daniel Buckmaster

198

การวิจัยขนาดเล็กนี้พิสูจน์และปรับแต่ง คำตอบโดยแมกนัส

ไวยากรณ์ที่ไม่ขึ้นกับแพลตฟอร์มที่สุดคือ

(empty line)
[comment]: # (This actually is the most platform independent comment)

เงื่อนไขทั้งสองมีความสำคัญ:

  1. การใช้#(และไม่<>)
  2. ด้วยบรรทัดว่างก่อนแสดงความคิดเห็น บรรทัดว่างหลังจากความคิดเห็นไม่มีผลกับผลลัพธ์

ข้อมูลจำเพาะ Markdown ที่เข้มงวดCommonMarkทำงานได้ตามที่ตั้งใจไว้กับไวยากรณ์นี้เท่านั้น (และไม่ใช่กับ<>และ / หรือบรรทัดว่าง)

เพื่อพิสูจน์สิ่งนี้เราจะใช้ Babelmark2 ซึ่งเขียนโดย John MacFarlane เครื่องมือนี้ตรวจสอบการเรนเดอร์ของซอร์สโค้ดเฉพาะในการใช้งาน Markdown 28 ครั้ง

( +- ผ่านการทดสอบ, -- ไม่ผ่าน, ?- ทิ้งขยะบางส่วนที่ไม่แสดงใน HTML ที่แสดงผล)

นี่เป็นการพิสูจน์ข้อความข้างต้น

การใช้งานเหล่านี้ล้มเหลวทั้งหมด 7 การทดสอบ ไม่มีโอกาสที่จะใช้ความคิดเห็นที่ไม่รวมในการแสดงผลกับพวกเขา

  • Cebe / markdown 1.1.0
  • Cebe / markdown MarkdownExtra 1.1.0
  • cebe / markdown GFM 1.1.0
  • s9e \ TextFormatter (Fatdown / PHP)

3
เครื่องมือทดสอบที่ยอดเยี่ยมและละเอียด! ดูเหมือนว่าคุณจะถูกต้องที่# เหมาะกับทุกคนยกเว้น GFMและ<> ทำงานให้กับ GFMแต่ไม่ใช่สำหรับคนอื่น ๆ GFM ที่แย่เกินไปนั้นเป็นทั้งมุมและรสชาติที่เป็นที่นิยมมาก
เตาแก๊ส

1
ดูเหมือนว่า s9e \ TextFormatter ใช้งานได้# ตั้งแต่วันที่ 21 มกราคม 2016 Cebe ยังไม่สามารถจัดการได้
ทรอยแดเนียลส์

1
น่าแปลกถ้าความคิดเห็นนั้นบรรจุ(...)ด้วยตัวมันเอง อย่างน้อยใน Visual Studio Code 1.19
Royi

1
และสำหรับผู้ใช้กลุ่มที่ต้องการแสดงความคิดเห็นไฟล์ทั้งหมดในครั้งเดียว:%s/^\(.*\)$/[comment]: # (\1)/g
Simon C.

มันหมายถึงอะไรเกี่ยวกับ markdown ที่ Bablemark2 มีอยู่?
TC Proctor

54

หากคุณกำลังใช้ Jekyll หรือ octopress ต่อไปนี้จะใช้งานได้

{% comment %} 
    These commments will not include inside the source.
{% endcomment %}

แท็ก Liquid {% comment %}จะถูกแยกวิเคราะห์ก่อนและนำออกก่อนโปรเซสเซอร์ MarkDown ผู้เข้าชมจะไม่เห็นเมื่อพวกเขาพยายามที่จะดูแหล่งที่มาจากเบราว์เซอร์ของพวกเขา


2
Jinja2 = {#ความคิดเห็นหลายบรรทัดที่นี่#}
John Mee

29

อีกทางเลือกหนึ่งคือการใส่ความคิดเห็นในแท็ก HTML ที่มีสไตล์ ด้วยวิธีนี้คุณสามารถสลับการแสดงผลได้ตามต้องการ ตัวอย่างเช่นกำหนดคลาสความคิดเห็นในสไตล์ชีท CSS ของคุณ

.comment { display: none; }

จากนั้นเพิ่ม MARKDOWN ต่อไปนี้

We do <span class="comment">NOT</span> support comments

ปรากฏดังต่อไปนี้ใน BROWSER

We do support comments


5
การคัดลอก / วางมีแนวโน้มที่จะจบลงด้วยการคัดลอกข้อความ "ที่มีความคิดเห็น" และข้อความปกติดังนั้นโปรดระมัดระวังเมื่อใช้สิ่งนี้ มันสามารถสร้างผลลัพธ์ที่ไม่คาดคิดได้อย่างง่ายดายสำหรับบางคนที่คัดลอกบล็อกข้อความ
Eilon

4
@Eilon การเข้าถึงสิ่งนี้น่ากลัวมาก
Ethan

เอ็นจินการสนับสนุนการเข้าถึงได้อย่างถูกต้องจะข้ามการแสดง: ไม่มีข้อความ
aredridel

28

สิ่งนี้ใช้ได้กับ GitHub:

[](Comment text goes here)

HTML ที่ได้จะเป็นดังนี้:

<a href="Comment%20text%20goes%20here"></a>

ลิงค์ไหนว่างเปล่า เห็นได้ชัดว่าคุณสามารถอ่านได้ในแหล่งที่มาของข้อความที่แสดงผล แต่คุณสามารถทำได้บน GitHub ต่อไป


6
แน่นอน แต่จริงๆแล้วมันเป็นคำตอบเดียวเท่านั้นที่ใช้กับ GitHub เช่นในรายการ
jomo

ฉันมาถึงทางออกเดียวกัน some text [](hidden text) blah blahมันเป็นเพียงคนเดียวที่ฉันจะทำงานให้ความเห็นในบรรทัดเช่น
c24w

3
สิ่งนี้ไม่สามารถใช้งานได้กับ GitHub ตั้งแต่วันที่ 2019-03-08 มันแสดงผลเหมือนเดิม[](Comment text goes here)
dogmatic69


18

โปรดดูเพิ่มเติมที่ Critic Markup สนับสนุนโดยเครื่องมือเพิ่มจำนวนมาร์กดาวน์

http://criticmarkup.com/

Comment {>> <<}

Lorem ipsum dolor sit amet.{>>This is a comment<<}

Highlight+Comment {== ==}{>> <<}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. {==Vestibulum at orci magna. Phasellus augue justo, sodales eu pulvinar ac, vulputate eget nulla.==}{>>confusing<<} Mauris massa sem, tempor sed cursus et, semper tincidunt lacus.

5
ฉันคิดว่าหนึ่งในปัญหาของ "หลอก" - มาตรฐานคือพวกเขาไม่พกพาได้ ในบางเว็บไซต์สิ่งเหล่านี้จะทำงานได้อย่างสมบูรณ์แบบโดยที่บางเว็บไซต์ไม่สามารถทำได้
Willem Van Onsem

14

วิธีการเกี่ยวกับการใส่ความคิดเห็นในบล็อก R ไม่ใช่ non-eval หรือไม่? กล่าวคือ

```{r echo=FALSE, eval=FALSE}
All the comments!
```

ดูเหมือนว่าจะทำงานได้ดีสำหรับฉัน


2
นอกจากนี้อย่าลังเลที่จะทำสิ่งต่าง ๆ เช่นcat("# Some Header")ภายในบล็อคโค้ด "commented-out" และการใช้งานresults = "asis"และคุณสามารถเพิ่มส่วนที่ถูกคอมเม้นต์ทั้งหมดในโค้ดของคุณที่สามารถเปิด / ปิดได้โดยการสลับeval = FALSEเนื่องจากการประเมิน R เสร็จสิ้นก่อน การรวบรวม pandoc ขอบคุณสำหรับความคิด!
MichaelChirico

11

การเปิดเผย: ฉันเขียนปลั๊กอิน

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


11
<!--- ... --> 

ไม่ทำงานใน Pandoc Markdown (Pandoc 1.12.2.1) ความคิดเห็นยังคงปรากฏใน html ต่อไปนี้ทำงานได้:

Blank line
[^Comment]:  Text that will not appear in html source
Blank line

จากนั้นใช้ส่วนขยาย + เชิงอรรถ มันเป็นเชิงอรรถที่ไม่เคยได้รับการอ้างอิง


ฉันชอบสิ่งนี้ที่สุดเพราะมันไม่ได้สร้างผลลัพธ์ใด ๆ เลย สำหรับ Bitbucket คำนำหน้านี้ก็เพียงพอแล้ว: [#]: .
เซเว่น

7

ต่อไปนี้ใช้งานได้ดีมาก

<empty line>
[whatever comment text]::

เมธอดนั้นใช้ประโยชน์จากไวยากรณ์เพื่อสร้างลิงก์ผ่านการอ้างอิง
เนื่องจากการอ้างอิงลิงก์ที่สร้างด้วย[1]: http://example.orgจะไม่ถูกเรนเดอร์เช่นเดียวกันกับสิ่งต่อไปนี้จะไม่ถูกเรนเดอร์

<empty line>
[whatever]::
[whatever]:whatever
[whatever]: :
[whatever]: whatever

นี้ (ทดสอบตัวแปรแรก) ทำงานให้pandocเช่นเดียวกับกรณีของออนไลน์ในปัจจุบันGitlabและGitHub
doak

5

สำหรับ pandoc วิธีที่ดีในการบล็อกความคิดเห็นคือใช้ yaml metablock ตามที่ผู้เขียน pandocแนะนำ ฉันได้พบว่านี้จะช่วยให้เน้นไวยากรณ์ที่ถูกต้องมากขึ้นของการแสดงความคิดเห็นเมื่อเทียบกับหลายโซลูชั่นที่นำเสนออื่น ๆ อย่างน้อยในสภาพแวดล้อมของฉัน ( vim, vim-pandocและvim-pandoc-syntax)

ฉันใช้ความคิดเห็น yaml block ร่วมกับความคิดเห็น html-inline เนื่องจากhtml-comments ไม่สามารถซ้อนกันได้ แต่น่าเสียดายที่ไม่มีวิธีการบล็อกความคิดเห็นใน yaml metablockดังนั้นทุกบรรทัดจะต้องมีการแสดงความคิดเห็นเป็นรายบุคคล โชคดีที่ควรมีเพียงหนึ่งบรรทัดในย่อหน้าที่นิ่มนวล

ในฉัน~/.vimrcฉันได้ตั้งค่าทางลัดที่กำหนดเองสำหรับความคิดเห็นบล็อก:

nmap <Leader>b }o<Esc>O...<Esc>{ji#<Esc>O---<Esc>2<down>
nmap <Leader>v {jddx}kdd

ฉันใช้,เป็น<Leader>คีย์ของฉันดังนั้น,bและ,vแสดงความคิดเห็นและยกเลิกการใส่เครื่องหมายย่อหน้าตามลำดับ หากฉันต้องการแสดงความคิดเห็นหลายย่อหน้าฉันj,bจะจับคู่กับมาโคร (ปกติQ) และเรียกใช้<number-of-paragraphs><name-of-macro>(เช่น ( 3Q)) การทำงานเช่นเดียวกันสำหรับการไม่แสดงความคิดเห็น


5

kramdown— เอ็นจิ้นมาร์กอัปที่ใช้ Ruby ซึ่งเป็นค่าเริ่มต้นสำหรับ Jekyll และ GitHub Pages— มีการสนับสนุนข้อคิดเห็นในตัวผ่านทางไวยากรณ์ส่วนขยาย :

{::comment}
This text is completely ignored by kramdown - a comment in the text.
{:/comment}

Do you see {::comment}this text{:/comment}?
{::comment}some other comment{:/}

สิ่งนี้มีประโยชน์ในการอนุญาตให้แสดงความคิดเห็นในบรรทัด แต่ข้อเสียของการไม่สามารถพกพาไปยังเอ็นจิ้น Markdown



4

คุณสามารถทำได้ (บล็อก YAML):

~~~
# This is a
# multiline
# comment
...

ฉันลองด้วยน้ำยางเอาท์พุทเท่านั้นโปรดยืนยันสำหรับคนอื่น ๆ


มันทำงานได้กับเอาต์พุต HTML เช่นกัน
petzi

ฉันไม่แน่ใจว่า Daniel ยืนยันการส่งออก html ถูกต้องหรือไม่ ฉันทำอย่างนั้นกับไฟล์เอาต์พุต html และรัน "pandoc --bibliography paper.bib -o paper.html paper.md" และ HTML แสดงบรรทัดความคิดเห็น
markgalassi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.