Y a-t-il une fourchette de démarque qui vous permet de référencer d'autres fichiers, quelque chose comme un fichier inclus? Plus précisément, je veux créer un fichier de démarque séparé avec des liens que j'appelle souvent mais pas toujours (appelez ce B.md), puis lorsque je lie par référence dans le fichier md que j'écris (A.md), je comme pour tirer le lien de l'autre fichier (B.md) plutôt que de la fin du fichier actuel (A.md).
197
Réponses:
La réponse courte est non. La réponse longue est oui. :-)
Markdown a été conçu pour permettre aux gens d'écrire du texte simple et lisible qui pourrait être facilement converti en un simple balisage HTML. Il ne fait pas vraiment la mise en page du document. Par exemple, il n'existe aucun moyen réel d'aligner une image à droite ou à gauche. Quant à votre question, il n'y a pas de commande markdown pour inclure un seul lien d'un fichier à un autre dans n'importe quelle version de markdown (pour autant que je sache).
Pandoc est le plus proche de cette fonctionnalité . Pandoc vous permet de fusionner des fichiers dans le cadre de la transformation, ce qui vous permet de rendre facilement plusieurs fichiers en une seule sortie. Par exemple, si vous créez un livre, vous pouvez avoir des chapitres comme celui-ci:
Vous pouvez les fusionner en exécutant cette commande dans le même répertoire:
Étant donné que pandoc fusionnera tous les fichiers avant de faire la traduction, vous pouvez inclure vos liens dans le dernier fichier comme ceci:
Donc, une partie de votre
01_preface.md
pourrait ressembler à ceci:Et une partie de votre
02_introduction.md
pourrait ressembler à ceci:Tant que votre dernier fichier comprend la ligne:
... la même commande utilisée auparavant effectuera la fusion et la conversion tout en incluant ce lien tout au long. Assurez-vous simplement de laisser une ou deux lignes vides au début de ce fichier. La documentation pandoc indique qu'elle ajoute une ligne vide entre les fichiers qui sont fusionnés de cette façon, mais cela n'a pas fonctionné pour moi sans la ligne vide.
la source
pandoc *.md > markdown_book.html
résulte enpandoc: *.md: openfile: invalid argument (Invalid argument)
- il ne semble pas prendre en charge la syntaxe que vous avez spécifiée.Je voudrais simplement mentionner que vous pouvez utiliser la
cat
commande pour concaténer les fichiers d'entrée avant de les canaliser, cemarkdown_py
qui a le même effet que ce qui sepandoc
passe avec plusieurs fichiers d'entrée.fonctionne à peu près comme l' exemple pandoc ci-dessus pour la version Python de Markdown sur mon Mac.
la source
cat *.md
implique une convention de nommage de fichier inflexible. Non seulement cette convention interdirait nécessairement les inclusions récursives, mais pour les projets de documentation plus volumineux, il serait difficile d'ajouter de nouveaux fichiers dans le mix. Il faudrait faire beaucoup de comptage et renommer. Le projet de démarque dispose d'un préprocesseur à cet effet depuis l'année 2010.Vous pouvez réellement utiliser le préprocesseur Markdown ( MarkdownPP ). En utilisant l'exemple de livre hypothétique des autres réponses, vous créez des
.mdpp
fichiers représentant vos chapitres. Les.mdpp
fichiers peuvent ensuite utiliser la!INCLUDE "path/to/file.mdpp"
directive, qui fonctionne de manière récursive en remplaçant la directive par le contenu du fichier référencé dans la sortie finale.Vous auriez alors besoin d'un
index.mdpp
qui contenait les éléments suivants:Pour rendre votre livre, vous exécutez simplement le préprocesseur sur
index.mdpp
:N'oubliez pas de consulter le
readme.mdpp
dans le référentiel MarkdownPP pour une présentation des fonctionnalités du préprocesseur adaptées aux projets de documentation plus volumineux.la source
Ma solution est d'utiliser m4. Il est pris en charge sur la plupart des plates-formes et est inclus dans le package binutils.
Commencez par inclure une macro
changequote()
dans le fichier pour changer les guillemets en ce que vous préférez (la valeur par défaut est ``). La macro est supprimée lors du traitement du fichier.Sur la ligne de commande:
la source
m4
est à peine connu, mais est en effet un outil incroyablement puissant en ce qui concerne ces besoins d'inclusion génériques. Assez pour que la documentation mentionne qu'elle peut être "assez addictive".Récemment, j'ai écrit quelque chose comme ça dans Node appelé markdown-include qui vous permet d'inclure des fichiers de démarque avec une syntaxe de style C, comme ceci:
Je pense que cela correspond bien à la question que vous posez. Je sais que c'est un ancien, mais je voulais au moins le mettre à jour.
Vous pouvez l'inclure dans n'importe quel fichier de démarque que vous souhaitez. Ce fichier peut également avoir plus d'includes et markdown-include fera un lien interne et fera tout le travail pour vous.
Vous pouvez le télécharger via
npm
la source
Multimarkdown a cela nativement. Il appelle cela la transclusion de fichiers :
c'est tout ce qu'il faut. Nom étrange, mais coche toutes les cases.
la source
J'utilise un
includes.txt
fichier avec tous mes fichiers dans le bon ordre, j'exécute pandoc comme ceci:pandoc -s $(cat includes.txt) --quiet -f markdown -t html5 --css pandoc.css -o index.html
Fonctionne comme un charme!
la source
glob
méthodes que si vous numérotez les fichiers.En fait, vous pouvez utiliser
\input{filename}
et\include{filename}
qui sont des commandes latex, directement dansPandoc
, car il prend en charge presque touthtml
et lalatex
syntaxe.Mais attention, le fichier inclus sera traité comme un
latex
fichier. Mais vous pouvez compiler votremarkdown
àlatex
avecPandox
facilement.la source
Asciidoc ( http://www.methods.co.nz/asciidoc/ ) est en fait une démarque sur les stéroïdes. Dans l'ensemble, Asciidoc et Markdown seront très similaires et il est assez facile de changer. Un énorme avantage d'Asciidoc sur le démarquage est qu'il prend déjà en charge les inclusions, pour d'autres fichiers Asciidoc mais aussi pour tout format que vous aimez. Vous pouvez même inclure en partie des fichiers basés sur des numéros de ligne ou des balises dans vos fichiers inclus.
L'inclusion d'autres fichiers est vraiment un épargnant de vie lorsque vous écrivez des documents.
Vous pouvez par exemple avoir un fichier asciidoc avec un tel contenu:
et conservez votre échantillon dans
script.pl
Et je suis sûr que vous vous demanderez si oui, Github prend également en charge l'asciidoc.
la source
Je pense que nous devrions mieux adopter une nouvelle syntaxe d'inclusion de fichiers (donc ne gâcherons pas les blocs de code, je pense que l'inclusion de style C est totalement fausse), et j'ai écrit un petit outil en Perl, le nommage
cat.pl
, car il fonctionne commecat
(cat a.txt b.txt c.txt
fusionnera trois fichiers), mais il fusionne les fichiers en profondeur , pas en largeur . Comment utiliser?La syntaxe en détail est:
@include <-=path=
%include <-=path=
Il peut gérer correctement les boucles d' inclusion de fichiers (si a.txt <- b.txt, b.txt <- a.txt, alors ce que vous attendez?).
Exemple:
a.txt:
b.txt:
perl cat.pl a.txt > c.txt
, c.txt:Plus d'exemples sur https://github.com/district10/cat/blob/master/tutorial_cat.pl_.md .
J'ai également écrit une version Java ayant un effet identique (pas le même, mais proche).
la source
<<[include_file.md]
(Marqué 2 sur macOS): gist.github.com/district10/d46a0e207d888d0526aef94fb8d8998c@
est utilisé pour les citations avecpandoc-citeproc
(par exemple "@Darwin1859
").Je suis en fait surpris que personne sur cette page n'ait proposé de solutions HTML. Pour autant que j'ai compris, les fichiers MarkDown peuvent inclure une grande partie (sinon la totalité) des balises HTML. Suivez donc ces étapes:
À partir d' ici : mettez vos fichiers MarkDown dans des
<span style="display:block"> ... </span>
balises pour vous assurer qu'ils seront rendus sous forme de démarque. Vous avez beaucoup d'autres propriétés de style que vous pouvez ajouter. Celui que j'aime est letext-align:justify
.À partir d' ici : incluez les fichiers dans votre fichier principal à l'aide du
<iframe src="/path/to/file.md" seamless></iframe>
PS1. cette solution ne fonctionne pas sur tous les moteurs / rendus MarkDown. Par exemple, Typora a rendu correctement les fichiers, mais pas Visual Studio Code. Ce serait formidable si d'autres pouvaient partager leur expérience avec d'autres plateformes. Je voudrais en particulier entendre parler de GitHub et GitLab ...
PS2. Après une enquête plus approfondie, il semble y avoir des problèmes d'incompatibilité majeurs conduisant à ce que cela ne soit pas correctement rendu sur de nombreuses plates-formes, y compris le code Typora, GitHub et Visual Studio. Veuillez ne pas l'utiliser jusqu'à ce que je les résolve. Je ne supprimerai pas la réponse juste pour le plaisir de la discussion et si vous pouvez peut-être partager vos opinions.
PS3. Pour approfondir ce problème, j'ai posé ces questions ici sur StackOverflow et ici sur Reddit .
PS4. Après quelques études approfondies, je suis parvenu à la conclusion que pour le moment, AsciiDoc est une meilleure option pour la documentation. Il est livré avec une fonctionnalité incluse intégrée, il est rendu par GitHub, et les principaux éditeurs de code comme Atom et vscode ont des extensions pour l'aperçu en direct. On peut utiliser Pandoc ou d'autres outils pour convertir automatiquement le code MarkDown existant en AsciiDoc avec des modifications mineures.
PS5. Un autre langage de balisage léger avec fonctionnalité intégrée intégrée est
reStructuredText
. Il est livré avec la.. include:: inclusion.txt
syntaxe par défaut. Il existe également un éditeur ReText avec aperçu en direct.la source
Je sais que c'est une vieille question, mais je n'ai vu aucune réponse à cet effet: Essentiellement, si vous utilisez markdown et pandoc pour convertir votre fichier en pdf, dans vos données yaml en haut de la page, vous pouvez inclure quelque chose comme ça:
Depuis que pandoc utilise du latex pour convertir tous vos documents, la
header-includes
section appelle le package pdfpages. Ensuite, lorsque vous l'incluez,\includepdf{/path/to/pdf/document.pdf}
il insère tout ce qui est inclus dans ce document. De plus, vous pouvez inclure plusieurs fichiers pdf de cette façon.Comme bonus amusant, et c'est uniquement parce que j'utilise souvent le démarque, si vous souhaitez inclure des fichiers autres que le démarque, par exemple des fichiers en latex. J'ai quelque peu modifié cette réponse . Supposons que vous ayez un fichier de démarques markdown1.md:
Et deux fichiers latex supplémentaires document1, qui ressemble à ceci:
Et un autre, document2.tex, qui ressemble à ceci:
En supposant que vous souhaitiez inclure document1.tex et document2.tex dans markdown1.md, vous le feriez simplement pour markdown1.md
Exécutez pandoc dessus, par exemple
dans le terminal
pandoc markdown1.md -o markdown1.pdf
Votre document final ressemblera un peu à ceci:
Quelque chose qui signifie plein
Tête parlante
Section
Profondeur.
Section
Le fil du rasoir.
Section
Glah
Section
Balh Balh
la source
J'utilise Marked 2 sur Mac OS X. Il prend en charge la syntaxe suivante pour inclure d'autres fichiers.
Malheureusement, vous ne pouvez pas envoyer cela à pandoc car il ne comprend pas la syntaxe. Cependant, l'écriture d'un script pour supprimer la syntaxe pour construire une ligne de commande pandoc est assez facile.
la source
Une autre solution côté client basée sur HTML utilisant markdown-it et jQuery . Vous trouverez ci-dessous un petit wrapper HTML en tant que document maître, qui prend en charge des inclusions illimitées de fichiers de démarques, mais pas des inclusions imbriquées. Une explication est fournie dans les commentaires JS. La gestion des erreurs est omise.
la source
À mon humble avis, vous pouvez obtenir votre résultat en concaténant vos fichiers d'entrée * .md comme:
la source