Есть ли какой-нибудь форк уценки, который позволяет ссылаться на другие файлы, что-то вроде включаемого файла? В частности, я хочу создать отдельный файл разметки со ссылками, которые я называю часто, но не всегда (назовите это B.md), тогда, когда я делаю ссылку по ссылке в файле md, который я пишу (A.md), я бы Например, вытащить ссылку из другого файла (B.md), а не из конца текущего файла (A.md).
199
Ответы:
Краткий ответ: нет. Длинный ответ - да. :-)
Markdown был разработан, чтобы позволить людям писать простой, читаемый текст, который можно легко преобразовать в простую HTML-разметку. Это на самом деле не делает макет документа. Например, нет реального способа выровнять изображение вправо или влево. Что касается вашего вопроса, то нет команды уценки, которая бы включала одну ссылку из одного файла в другой в любой версии уценки (насколько я знаю).
Наиболее близким к этой функциональности может быть Pandoc . Pandoc позволяет объединять файлы как часть преобразования, что позволяет легко рендерить несколько файлов в один вывод. Например, если вы создавали книгу, у вас могли бы быть такие главы:
Вы можете объединить их, выполнив эту команду в том же каталоге:
Поскольку pandoc объединит все файлы перед выполнением перевода, вы можете включить свои ссылки в последний файл, например так:
Так что часть вашего
01_preface.md
может выглядеть так:И часть вашего
02_introduction.md
может выглядеть так:Пока ваш последний файл содержит строку:
... та же команда, что использовалась ранее, будет выполнять слияние и преобразование, включая эту ссылку. Просто убедитесь, что вы оставили пустую строку или две в начале этого файла. Документация Pandoc говорит, что она добавляет пустую строку между файлами, которые объединяются таким образом, но это не сработало для меня без пустой строки.
источник
pandoc *.md > markdown_book.html
в результатеpandoc: *.md: openfile: invalid argument (Invalid argument)
- он не поддерживает указанный вами синтаксис.Я бы просто упомянул, что вы можете использовать
cat
команду для объединения входных файлов перед их конвейерной передачей,markdown_py
что имеет тот же эффект, чтоpandoc
и при поступлении нескольких входных файлов.работает почти так же, как и пример pandoc выше для версии Markdown для Python на моем Mac.
источник
cat *.md
подразумевает негибкое соглашение об именовании файлов. Мало того, что это соглашение обязательно запретит рекурсивные включения, для больших проектов документации было бы болезненно добавлять новые файлы в смесь. Вы должны были бы сделать много подсчета и переименования. У проекта уценки был препроцессор для этой цели с 2010 года.Вы можете использовать препроцессор Markdown ( MarkdownPP ). Используя пример гипотетической книги из других ответов, вы создадите
.mdpp
файлы, представляющие ваши главы. Затем.mdpp
файлы могут использовать!INCLUDE "path/to/file.mdpp"
директиву, которая работает рекурсивно, заменяя директиву содержимым ссылочного файла в конечном выводе.Затем вам понадобится
index.mdpp
следующее:Для рендеринга вашей книги вы просто запускаете препроцессор
index.mdpp
:Не забудьте заглянуть
readme.mdpp
в репозиторий MarkdownPP, чтобы узнать о возможностях препроцессора, подходящих для больших проектов документации.источник
Мое решение состоит в том, чтобы использовать m4. Он поддерживается на большинстве платформ и входит в пакет binutils.
Сначала включите макрос
changequote()
в файл, чтобы изменить символы кавычек на те, которые вы предпочитаете (по умолчанию `'). Макрос удаляется при обработке файла.В командной строке:
источник
m4
едва известен, но действительно является невероятно мощным инструментом, когда дело доходит до таких общих потребностей включения. Достаточно, чтобы в документации упоминалось, что это может быть «довольно захватывающим».Совсем недавно я написал что-то вроде этого в Node под названием markdown-include, что позволяет вам включать файлы уценки с синтаксисом в стиле C, например:
Я считаю, что это хорошо согласуется с вопросом, который вы задаете. Я знаю это старое, но я хотел обновить его по крайней мере.
Вы можете включить это в любой файл уценки, который вы хотите. Этот файл также может иметь больше включений, а markdown-include создаст внутреннюю ссылку и сделает всю работу за вас.
Вы можете скачать его через
npm
источник
Multimarkdown имеет это изначально. Это называет это включением файла :
это все, что нужно. Странное имя, но все галочки отмечены галочкой.
источник
Я использую
includes.txt
файл со всеми своими файлами в правильном порядке, когда я выполняю pandoc следующим образом:pandoc -s $(cat includes.txt) --quiet -f markdown -t html5 --css pandoc.css -o index.html
Работает как шарм!
источник
glob
методов, если вы не пронумеровали файлы.На самом деле вы можете использовать
\input{filename}
и\include{filename}
латексные команды непосредственно внутриPandoc
, потому что он поддерживает почти всеhtml
иlatex
синтаксис.Но будьте осторожны, включенный файл будет рассматриваться как
latex
файл. Но вы можете скомпилироватьmarkdown
Tolatex
сPandox
легкостью.источник
Asciidoc ( http://www.methods.co.nz/asciidoc/ ) на самом деле является скидкой на стероиды. В целом, Asciidoc и Markdown будут выглядеть очень похоже, и их будет довольно легко переключать. Огромное преимущество над Asciidoc уценкой, что он поддерживает уже включает, для других файлов Asciidoc , но и как любой формат. Вы даже можете частично включать файлы на основе номеров строк или тегов внутри включенных файлов.
Включение других файлов действительно спасает жизнь, когда вы пишете документы.
Например, вы можете получить файл asciidoc с таким содержимым:
и сохранить ваш образец в
script.pl
И я уверен, что вам будет интересно, так что да, Github также поддерживает Asciidoc.
источник
Я думаю, что нам лучше принять новый синтаксис включения файлов (так что не стоит путаться с блоками кода, я думаю, что включение в стиле C совершенно неверно), и я написал небольшой инструмент на Perl, назвав его
cat.pl
, потому что он работает какcat
(cat a.txt b.txt c.txt
объединится три файла), но он объединяет файлы по глубине , а не по ширине . Как пользоваться?Синтаксис в деталях:
@include <-=path=
%include <-=path=
Он может правильно обрабатывать циклы включения файлов (если a.txt <- b.txt, b.txt <- a.txt, то чего вы ожидаете?).
Пример:
a.txt:
b.txt:
perl cat.pl a.txt > c.txt
, c.txt:Дополнительные примеры на https://github.com/district10/cat/blob/master/tutorial_cat.pl_.md .
Я также написал версию Java, имеющую идентичный эффект (не такой же, но близкий).
источник
<<[include_file.md]
(Отмечено 2 в macOS): gist.github.com/district10/d46a0e207d888d0526aef94fb8d8998c@
что используется для ссылок сpandoc-citeproc
(например, "@Darwin1859
").Я на самом деле удивлен тем, что никто на этой странице не предлагал никаких HTML-решений. Насколько я понял, файлы MarkDown могут включать в себя большую часть (если не все) тегов HTML. Так что следуйте этим шагам:
От сюда : положить ваши файлы уценка в
<span style="display:block"> ... </span>
тегах , чтобы убедиться , что они будут визуализируются как уценка. У вас есть множество других стилевых свойств, которые вы можете добавить. Тот, который мне нравится, этоtext-align:justify
.От сюда : Включить файлы в основной файл , используя
<iframe src="/path/to/file.md" seamless></iframe>
PS1. Это решение не работает на всех движках / рендерах MarkDown. Например, Typora правильно отображала файлы, а код Visual Studio - нет. Было бы здорово, если бы другие могли поделиться своим опытом с другими платформами. Особенно хотелось бы услышать о GitHub и GitLab ...
PS2. При дальнейшем исследовании, как представляется, возникают серьезные проблемы несовместимости, приводящие к тому, что это неправильно отображается на многих платформах, включая Typora, GitHub и код Visual Studio. Пожалуйста, не используйте это, пока я не разрешаю их. Я не буду удалять ответ только ради обсуждения и, если возможно, вы можете поделиться своим мнением.
PS3. Для дальнейшего изучения этой проблемы я задавал эти вопросы здесь, в StackOverflow и здесь, в Reddit .
PS4. После некоторого изучения я пришел к выводу, что на данный момент AsciiDoc является лучшим вариантом для документации. Он поставляется со встроенной функцией включения, он обрабатывается GitHub, а основные редакторы кода, такие как Atom и vscode, имеют расширения для предварительного просмотра в реальном времени. Можно использовать Pandoc или другие инструменты для автоматического преобразования существующего кода MarkDown в AsciiDoc с небольшими изменениями.
ПС5. Еще один легкий язык разметки со встроенной функцией включения
reStructuredText
. Он поставляется с.. include:: inclusion.txt
синтаксисом по стандарту. Также есть редактор ReText с предварительным просмотром.источник
Я знаю, что это старый вопрос, но я не видел ответов на этот вопрос: по сути, если вы используете markdown и pandoc для преобразования вашего файла в pdf, в свои данные yaml вверху страницы вы можете включить что-то вроде этого:
Поскольку pandoc использует латекс для конвертации всех ваших документов, этот
header-includes
раздел вызывает пакет pdfpages. Затем, когда вы включите\includepdf{/path/to/pdf/document.pdf}
его, он вставит все, что включено в этот документ. Кроме того, вы можете включить несколько файлов PDF таким образом.В качестве забавного бонуса, и это только потому, что я часто использую уценку, если вы хотите включить файлы, отличные от уценки, например, латексные файлы. Я несколько изменил этот ответ . Скажем, у вас есть файл уценки markdown1.md:
И два дополнительных латексных файла document1, которые выглядят так:
И еще один, document2.tex, который выглядит так:
Предполагая, что вы хотите включить document1.tex и document2.tex в markdown1.md, вы просто сделаете это для markdown1.md
Запустите pandoc, например
в терминале
pandoc markdown1.md -o markdown1.pdf
Ваш окончательный документ будет выглядеть примерно так:
Нечто Полное
Говорящая голова
Раздел
Основательность.
Раздел
Лезвие бритвы
Раздел
Glah
Раздел
Балх Балх
источник
Я использую Marked 2 в Mac OS X. Он поддерживает следующий синтаксис для включения других файлов.
К сожалению, вы не можете передать это Пандоку, так как он не понимает синтаксис. Тем не менее, написание скрипта для удаления синтаксиса для построения командной строки pandoc достаточно просто.
источник
Другое основанное на HTML клиентское решение, использующее markdown-it и jQuery . Ниже приведена небольшая HTML-оболочка в качестве основного документа, которая поддерживает неограниченное количество включенных файлов уценок, но не вложенных. Объяснение предоставляется в комментариях JS. Обработка ошибок опущена.
источник
Синтаксис @import поддерживается в vscode-markdown-preview-extended
https://github.com/shd101wyy/vscode-markdown-preview-enhanced
что, вероятно, означает, что его часть базового инструмента mume
https://github.com/shd101wyy/mume
и другие инструменты, построенные на mume
https://github.com/gabyx/TechnicalMarkdown
источник
ИМХО, Вы можете получить свой результат, объединив свои входные * .md файлы, такие как:
источник