2011-01-28 47 views
874

Cú pháp lưu trữ nhận xét trong tệp đánh dấu là gì, ví dụ: một CVS $ Id $ bình luận ở trên cùng của tập tin? Tôi không tìm thấy gì trên số markdown project.Nhận xét trong Markdown

+6

Đọc giữa các dòng, có vẻ như bạn muốn đính kèm siêu dữ liệu vào Markdown của mình. Vì lý do đó, tôi khuyên bạn nên sử dụng một bộ tiền xử lý cho phép bạn thêm một tiêu đề.Ví dụ, xem [Mặt trước của Jekyll] (http://jekyllrb.com/docs/frontmatter/). Ví dụ khác, xem cách [Basho sử dụng Middleman cho tài liệu của họ] (https://github.com/basho/basho_docs). (Lưu ý: Đây không phải là câu trả lời trực tiếp cho câu hỏi, đó là lý do tôi chia sẻ câu hỏi đó làm nhận xét.) –

+1

Xem thêm cách [MultiMarkdown hỗ trợ siêu dữ liệu] (https://github.com/fletcher/MultiMarkdown/wiki/ MultiMarkdown-Cú pháp-Hướng dẫn). –

Trả lời

894

Tôi tin rằng tất cả các giải pháp được đề xuất trước đây (ngoài những giải pháp yêu cầu triển khai cụ thể) dẫn đến các nhận xét được đưa vào HTML đầu ra, ngay cả khi chúng không được hiển thị.

Nếu bạn muốn nhận xét cho chính mình (người đọc tài liệu đã chuyển đổi không thể xem được, ngay cả với "nguồn xem") bạn có thể (ab) sử dụng nhãn liên kết (để sử dụng với kiểu tham chiếu) liên kết) mà có sẵn trong đặc tả cốt lõi Markdown:

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

đó là:

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

Hoặc bạn có thể đi xa hơn:

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

Để cải thiện khả năng tương thích nền tảng (và để tiết kiệm một phím tắt) nó cũng có thể sử dụng # (mà là một mục tiêu liên kết hợp pháp) thay vì <>:

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

Nó cũng có thể thận trọng để chèn một dòng trống trước và sau loại nhận xét này, vì một số trình phân tích cú pháp Markdown có thể không thích các định nghĩa liên kết đánh với văn bản thông thường.

Điều này sẽ hoạt động với hầu hết các trình phân tích cú pháp Markdown, vì nó là một phần của đặc tả cốt lõi. (ngay cả khi hành vi khi nhiều liên kết được xác định hoặc khi liên kết được xác định nhưng không bao giờ được sử dụng, không được chỉ định nghiêm ngặt).

+61

'[//]: #" Comment "' và '[//]: # (Comment)' dường như hoạt động trên nhiều triển khai hơn, vì '#' là URI tương đối hợp lệ. GitHub, ví dụ, từ chối '<>', và toàn bộ dòng sẽ hiển thị. Nó cũng đáng chú ý là các nhãn liên kết thường cần phải được tách ra khỏi các nội dung khác bằng một dòng trống. Biến thể – Zenexer

+1

'#' không thành công với s9e \ TextFormatter (Fatdown/PHP) và cebe/markdown theo [Babelmark] (http://johnmacfarlane.net/babelmark2/?normalize=1&text=%5B%2F%2F%5D%3A+ % 23 + (+ này có thể + là + + nền tảng + độc lập + nhận xét)). '<>' không thành công ngay cả trong CommonMark. – Crissov

+3

Để có nền tảng độc lập nhất, nó cũng cần dòng trống trước nhận xét. Xem các bài kiểm tra: http://stackoverflow.com/a/32190021/2790048 –

734

tôi sử dụng các thẻ HTML tiêu chuẩn, như

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

Lưu ý các dấu gạch ngang ba. Ưu điểm là nó hoạt động với pandoc khi tạo ra đầu ra TeX hoặc HTML. Thông tin thêm có sẵn trên nhóm pandoc-discuss.

+59

Nếu tôi hiểu chính xác, dấu gạch ngang ba làm _pandoc_ bỏ qua nhận xét khi nó phân tích cú pháp tệp đánh dấu. Nhưng nếu bạn sử dụng một công cụ đánh dấu khác, nhận xét S W hiển thị trong HTML được tạo (và do đó được hiển thị với "nguồn xem"). Vì vậy, bạn phải cẩn thận những gì bạn đưa vào bình luận đó;) – cberzan

+3

Bạn có thể giải thích cách Pandoc đối xử với ba dấu gạch ngang khác với dấu gạch ngang kép? Khi tôi thử nghiệm với họ, họ dường như bị xử lý theo cùng một cách. Ngoài ra, [hướng dẫn người dùng Pandoc] (http://johnmacfarlane.net/pandoc/README.html#raw-html) chỉ nói "HTML thô được chuyển qua không thay đổi trong HTML, S5, Slidy, Slideous, DZSlides, EPUB, Đánh dấu, và sản lượng Dệt may, và bị đàn áp trong các định dạng khác. " Các dấu gạch ngang ba dường như không có bất kỳ đặc quyền cao hơn so với những đôi. – dkim

+1

@dkim Bình luận với dấu gạch ngang ba được bỏ qua và bị loại bỏ khỏi đầu ra HTML. Đây không phải là trường hợp với các bình luận hai dấu gạch ngang được chèn vào trong tệp HTML. Đây vẫn là trường hợp với phiên bản mới nhất của Pandoc (1.10). – chl

35

Cách khác là đặt nhận xét trong các thẻ HTML cách điệu. Bằng cách này, bạn có thể chuyển đổi chế độ hiển thị của mình nếu cần. Ví dụ, xác định một lớp bình luận trong CSS stylesheet của bạn.

.comment { display: none; }

Sau đó, sau đây tăng cường Markdown

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

xuất hiện như sau trong trình duyệt

We do support comments

+3

Sao chép/dán có thể sẽ kết thúc sao chép văn bản "đã nhận xét" cũng như văn bản thông thường, vì vậy hãy cẩn thận khi sử dụng. Nó có thể dễ dàng tạo ra kết quả bất ngờ cho một người nào đó sao chép một khối văn bản. – Eilon

+0

@Eilon cũng khả năng truy cập cho điều này sẽ là khủng khiếp – Booligoosh

9

Tiết lộ: Tôi đã viết các plugin.

Vì câu hỏi không chỉ định triển khai đánh dấu cụ thể, tôi muốn đề cập đến Comments Plugin cho python-markdown, thực hiện cùng một kiểu bình luận tổng quát được đề cập ở trên.

14

Đồng thời xem Đánh dấu phê bình, được hỗ trợ bởi số lượng công cụ Markdown ngày càng tăng.

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

Tôi nghĩ một trong những vấn đề với tiêu chuẩn "giả" là chúng không thể di chuyển được. Trên một số trang web, các trang web này sẽ hoạt động hoàn hảo, trên những trang web khác, chúng sẽ không hoạt động. –

41

Nếu bạn đang sử dụng Jekyll hoặc octopress sau đây cũng sẽ làm việc.

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

Thẻ chất lỏng {% comment %} được phân tích cú pháp đầu tiên và loại bỏ trước khi bộ xử lý MarkDown thậm chí được xử lý. Khách truy cập sẽ không nhìn thấy khi họ cố gắng xem nguồn từ trình duyệt của họ.

+2

Jinja2 = '{#' multiline bình luận ở đây '#}' –

22

này hoạt động trên GitHub:

[](Comment text goes here) 

HTML kết quả trông giống như:

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

cơ bản Đó là một liên kết rỗng. Rõ ràng bạn có thể đọc điều đó trong nguồn của văn bản được hiển thị, nhưng bạn vẫn có thể làm điều đó trên GitHub.

+5

Nó chắc chắn là, nhưng nó thực sự là câu trả lời duy nhất cho đến nay luôn luôn hoạt động trên GitHub, ví dụ trong danh sách. Câu trả lời – jomo

+0

@ chl hoạt động trên GitHub bên ngoài danh sách. –

+0

Tôi đã đến cùng một giải pháp. Đó là người duy nhất tôi có thể làm việc cho các nhận xét trực tuyến, ví dụ: 'một số văn bản [] (văn bản ẩn) blah blah'. – c24w

98

nghiên cứu nhỏ này chứng minh và cải tiến the answer by Magnus

Cú pháp nền tảng độc lập nhất là

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

Cả hai điều kiện rất quan trọng:

  1. Sử dụng # (và không <>)
  2. Với dòng trống trước nhận xét. Dòng trống sau khi nhận xét không ảnh hưởng đến kết quả.

Các Markdown đặc điểm kỹ thuật nghiêm ngặt CommonMark chỉ hoạt động như dự định với cú pháp này (và không phải với <> và/hoặc một dòng trống)

Để chứng minh điều này chúng ta sẽ sử dụng Babelmark2, được viết bởi John MacFarlane. Công cụ này kiểm tra kết xuất của mã nguồn cụ thể trong 28 triển khai Markdown.

(+ - vượt qua bài kiểm tra, - - không vượt qua, ? - để lại một số rác không được hiển thị trong HTML được hiển thị).

Điều này chứng minh các báo cáo ở trên.

Các triển khai này không thực hiện được tất cả 6 thử nghiệm. Không có cơ hội sử dụng nhận xét bị loại trừ khi hiển thị với họ.

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

Công cụ kiểm tra toàn diện, tuyệt vời! Có vẻ như bạn đúng rằng '#' [hoạt động cho tất cả trừ GFM] (http://johnmacfarlane.net/babelmark2/?text=above%0A%0A%5Bcomment%5D%3A+%23+ (NÀY + NÊN NÊN + BE + REMOVED)% 0Bài viết) và '<>' [hoạt động cho GFM] (http://johnmacfarlane.net/babelmark2/?text=above%0A%0A%5Bcomment%5D%3A+%3C%3E+ (NÀY + NÊN + ĐƯỢC + XÓA)% 0Bài viết) nhưng không phải một vài người khác. GFM quá tệ là cả một trường hợp góc và cũng là một hương vị rất phổ biến ** **. – hobs

+1

Có vẻ như s9e \ TextFormatter hoạt động với '#' kể từ ngày 21 tháng 1 năm 2016. Cebe vẫn không xử lý nó. –

+0

Kỳ lạ thay, nếu chú thích chứa '(...)', chính nó sẽ phá vỡ nó. Ít nhất là trên Visual Studio Code 1.19. – Royi

10

thế nào về việc đưa các nhận xét vào một khối không phải là eval, không phải là tiếng R? tức là,

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

Dường như làm việc tốt cho tôi.

+2

Ngoài ra, bạn có thể tự do làm những việc như 'cat (" # Some Header ") trong các khối mã" comment-out "và sử dụng' results = "asis" ', và bạn có thể thêm toàn bộ phần bình luận vào mã của bạn có thể được bật/tắt bằng cách chuyển đổi 'eval = FALSE', vì đánh giá R được thực hiện trước khi biên dịch pandoc. Cảm ơn ý tưởng! – MichaelChirico

3

Bạn có thể thử

[](
Your comments go here however you cannot leave 
// a blank line so fill blank lines with 
// 
Something 
) 
+0

Điều này dường như không hoạt động trên Stack Overflow. –

7
<!--- ... --> 

Không làm việc trong Pandoc Markdown (Pandoc 1.12.2.1). Nhận xét vẫn xuất hiện trong html. Công việc sau đã hoạt động:

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

Sau đó, sử dụng phần mở rộng + chú thích cuối trang. Về cơ bản nó là một chú thích không bao giờ được tham chiếu.

+3

bạn cần chỉnh sửa câu trả lời: "các tùy chọn đánh dấu ở trên" là mục tiêu di chuyển trên trang web này. – erreka

4

Đối với pandoc, cách tốt để chặn nhận xét là sử dụng metamlock yaml, as suggested by the pandoc author. Tôi đã nhận thấy rằng điều này cung cấp cú pháp tô sáng phù hợp hơn cho các nhận xét so với nhiều giải pháp được đề xuất khác, ít nhất là trong môi trường của tôi (vim, vim-pandocvim-pandoc-syntax).

Tôi sử dụng nhận xét khối yaml kết hợp với nhận xét html-inline, kể từ html-comments cannot be nested. Thật không may, có no way of block commenting within the yaml metablock, vì vậy mỗi dòng phải được nhận xét riêng lẻ. May mắn thay, chỉ nên có một dòng trong một đoạn được viết mềm.

Trong ~/.vimrc của tôi, tôi đã thiết lập các phím tắt tùy chỉnh để lấy ý kiến ​​khối:

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

tôi sử dụng , như <Leader> -key tôi, vì vậy ,b,v bình luận và bỏ ghi chú một đoạn, tương ứng. Nếu tôi cần phải bình luận nhiều đoạn, tôi lập bản đồ j,b để macro (thường Q) và chạy <number-of-paragraphs><name-of-macro> (ví dụ (3Q). Các công trình tương tự cho uncommenting.

6

Vim Instant-Markdown người dùng cần phải sử dụng

<!--- 
First comment line... 
// 
_NO_BLANK_LINES_ARE_ALLOWED_ 
// 
_and_try_to_avoid_double_minuses_like_this_: -- 
// 
last comment line. 
--> 
5

kramdown cơ markdown -the Ruby-dựa trên là mặc định cho Jekyll và do đó GitHub Pages- has built-in comment support through its extension syntax:

{::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{:/} 

này có lợi ích của việc cho phép bình luận trực tuyến, nhưng nhược điểm của việc không được di chuyển đến các động cơ Markdown khác.