Комментарии в уценке
Каков синтаксис для хранения комментария в файле уценки, например, комментарий CVS $Id$ вверху файла? Я ничего не нашел в проекте уценки.
24 ответа
Я считаю, что все ранее предложенные решения (кроме тех, которые требуют определенных реализаций) приводят к тому, что комментарии включаются в выходной HTML, даже если они не отображаются.
Если вам нужен комментарий, предназначенный исключительно для вас (читатели преобразованного документа не должны видеть его, даже с "просмотром источника"), вы можете (ab) использовать ярлыки ссылок (для использования со ссылками в стиле ссылок), которые доступно в базовой спецификации Markdown:
http://daringfireball.net/projects/markdown/syntax
То есть:
[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)
Для максимальной переносимости важно вставить пустую строку до и после комментариев этого типа, потому что некоторые анализаторы Markdown не работают правильно, когда определения соответствуют обычному тексту. Последнее исследование с Babelmark показывает, что пустые строки до и после важны. Некоторые парсеры выводят комментарий, если до этого не было пустой строки, а некоторые парсеры исключают следующую строку, если после нее нет пустой строки.
В целом, этот подход должен работать с большинством анализаторов Markdown, так как он является частью базовой спецификации. (даже если поведение, когда определено несколько ссылок или когда ссылка определена, но никогда не используется, строго не указано).
Я использую стандартные теги HTML, как
<!---
your comment goes here
and here
-->
Обратите внимание на тройной тире. Преимущество заключается в том, что он работает с pandoc при генерации вывода TeX или HTML. Больше информации доступно в группе обсуждения pandoc.
Это небольшое исследование доказывает и уточняет ответ Магнуса
Наиболее независимый от платформы синтаксис
(empty line)
[comment]: # (This actually is the most platform independent comment)
Оба условия важны:
- С помощью
#
(и не<>
) - С пустой строкой перед комментарием. Пустая строка после комментария не влияет на результат.
Строгая спецификация Markdown CommonMark работает только так, как задумано, с этим синтаксисом (а не с <>
и / или пустая строка)
Чтобы доказать это, мы будем использовать Babelmark2, написанный Джоном Макфарлейном. Этот инструмент проверяет рендеринг конкретного исходного кода в 28 реализациях Markdown.
(+
- прошел тест, -
- не прошло, ?
- оставляет некоторый мусор, который не отображается в визуализированном HTML).
- Нет пустых строк, используя
<>
13+, 15- - Пустая строка перед комментарием, используя
<>
20+, 8- - Пустые строки вокруг комментария, используя
<>
20+, 8- - Нет пустых строк, используя
#
13+ 1? 14- - Пустая строка перед комментарием, используя
#
23+ 1? 4- - Пустые строки вокруг комментария, используя
#
23+ 1? 4- - HTML комментарий с 3 дефисами 1+ 2? 25- из ответа ЧЛ (обратите внимание, что это другой синтаксис)
Это доказывает утверждения выше.
Эти реализации не проходят все 7 тестов. Там нет шансов использовать исключенные на визуализации комментарии с ними.
- cebe / уценка 1.1.0
- cebe / markdown MarkdownExtra 1.1.0
- cebe / уценка GFM 1.1.0
- s9e \ TextFormatter (Fatdown / PHP)
Если вы используете Jekyll или octopress, то также будут работать следующие.
{% comment %}
These commments will not include inside the source.
{% endcomment %}
Жидкие бирки {% comment %}
анализируются первыми и удаляются до того, как процессор MarkDown даже доберется до него. Посетители не увидят, когда они попытаются просмотреть источник из своего браузера.
Следующее работает очень хорошо
<empty line>
[whatever comment text]::
этот метод использует преимущества синтаксиса для создания ссылок через ссылку
поскольку ссылка создана с помощью [1]: http://example.org
не будет предоставлено, также не будет выполнено любое из следующего
<empty line>
[whatever]::
[whatever]:whatever
[whatever]: :
[whatever]: whatever
Это работает на GitHub:
[](Comment text goes here)
Полученный HTML выглядит так:
<a href="Comment%20text%20goes%20here"></a>
Который в основном пустая ссылка. Очевидно, что вы можете прочитать это в источнике отрисованного текста, но вы можете сделать это в любом случае на GitHub.
Альтернативой является размещение комментариев в стилизованных тегах HTML. Таким образом, вы можете переключать их видимость по мере необходимости. Например, определите класс комментариев в вашей таблице стилей CSS.
.comment { display: none; }
Затем следующее усиление MARKDOWN
We do <span class="comment">NOT</span> support comments
выглядит следующим образом в Браузере
We do support comments
Пользователи Vim Instant-Markdown должны использовать
<!---
First comment line...
//
_NO_BLANK_LINES_ARE_ALLOWED_
//
_and_try_to_avoid_double_minuses_like_this_: --
//
last comment line.
-->
<!--- ... -->
Не работает в Pandoc Markdown (Pandoc 1.12.2.1). Комментарии все еще появились в html. Следующее сработало:
Blank line
[^Comment]: Text that will not appear in html source
Blank line
Затем используйте расширение сноски +. По сути, это сноска, на которую никогда не ссылаются.
Также см. Критическая разметка, поддерживаемая растущим числом инструментов разметки.
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.
Как насчет того, чтобы поместить комментарии в не-eval, non-echo R блок? т.е.
```{r echo=FALSE, eval=FALSE}
All the comments!
```
Кажется, хорошо работает для меня.
Раскрытие: я написал плагин.
Поскольку в вопросе не указана конкретная реализация разметки, я бы хотел упомянуть плагин Comments для python-markdown, который реализует тот же стиль комментирования pandoc, упомянутый выше.
При использовании mkdocs добавьте в свой
mkdocs.yml
:
- pymdownx.striphtml:
strip_comments: true
strip_js_on_attributes: false
Затем обычные комментарии html в любом файле уценки, как
<!-- this is a comment -->
будет удален из вывода html.
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.
Ниже приведен комментарий Markdown, который не будет отображаться на сайте GitHub Pages с помощью Jekyll.
[whatever]: text
Для pandoc хорошим способом блокирования комментариев является использование метаблока yaml, как было предложено автором pandoc. Я заметил, что это дает более правильную подсветку синтаксиса комментариев по сравнению со многими другими предлагаемыми решениями, по крайней мере, в моей среде (vim
, vim-pandoc
, а также vim-pandoc-syntax
).
Я использую комментарии блока yaml в сочетании с html-встроенными комментариями, так как html-комментарии не могут быть вложенными. К сожалению, в метаблоке yaml нет способа комментирования блоков, поэтому каждую строку нужно комментировать отдельно. К счастью, в мягком абзаце должна быть только одна строка.
В моем ~/.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
). То же самое работает для комментариев.
Ты можешь попробовать
[](
Your comments go here however you cannot leave
// a blank line so fill blank lines with
//
Something
)
Вы можете сделать это (блок YAML):
---
# This is a
# multiline
# comment
...
Я пытался только с выходом латекса, пожалуйста, подтвердите для других.
Для Pandoc Markdown я использую обратные кавычки с
comment
как язык, такой как встроенный "кодовый" синтаксис
`here's a comment`{=comment}
Это автоматически отфильтровывается на всех выходах. Он просто перегружает синтаксис их кода, а также работает с блоками кода для многострочных комментариев. Я не пробовал, но предполагаю, что это не работает для не-Pandoc Markdown.
Я написал небольшую программу awk для фильтрации маркеров #omitbegin и #omitend, которые я добавляю в свой текст. Я использую awk для передачи его вывода во временный файл, который затем может обработать pandoc. Вот так:
awk -f omitfilter.awk aim2_article.md >aim2_article_tmp.md
pandoc --pdf-engine=xelatex --lua-filter=pagebreak.lua --filter pandoc-crossref --citeproc aim2_article_tmp.md -o aim2_article.pdf
Вот
omit filter.awk
:
/#omitbegin/ {
insideOmit = 1;
}
! insideOmit {
print $0
}
/#omitend/ {
insideOmit = 0;
}
У Пандока есть вариант--strip-comments
это удалит все<!-- normal html comments -->
из вывода HTML.
Github README.md ИЛИ Stackru отвечает
Для ответов Github README или Stackru я использую # для встроенного комментария.
Пример:
# clone the remote repository to your local machine
npm clone https://github.com/chebaby/echebaby.git
# change directory
cd echebaby
# install dependencies
yarn install
Если это в VS Code, то есть еще один хороший вариант:
<span hidden> Some texts </span>
Преимущество этого по сравнению с «тегом комментария HTML» состоит в сохранении подсветки синтаксиса в области редактирования, а также в возможности добавлять атрибуты для семантической разметки , например
Предупреждение. Исходя из здравого смысла, не включайте личную информацию в исходный код.
вы можете использовать синтаксис изображения:![comment text here]()
. это приводит к: