tutorial online examples markdown

markdown - online - readme.md format



Markdown e incluyendo múltiples archivos (11)

Asciidoc ( http://www.methods.co.nz/asciidoc/ ) es en realidad un descuento en esteroides. En general, Asciidoc y Markdown se verán muy similares y es bastante fácil cambiar. Una gran ventaja de Asciidoc sobre el descuento es que admite ya incluye, para otros archivos Asciidoc, pero también para cualquier formato que desee. Incluso puede incluir parcialmente archivos basados ​​en números de línea o etiquetas dentro de los archivos incluidos.

Incluir otros archivos es realmente un salvavidas cuando escribes documentos.

Por ejemplo, puede tener un archivo asciidoc con dicho contenido:

// [source,perl] // ---- // include::script.pl[] // ----

y mantén tu muestra en script.pl

Y estoy seguro de que te preguntarás, sí, Github también apoya a Asciidoc.

¿Hay algún tenedor de descuento que le permita hacer referencia a otros archivos, algo así como un archivo incluido? Específicamente, quiero crear un archivo de rebajas separado con enlaces que llamo a menudo, pero no siempre (llame a este B.md), luego cuando enlace por referencia en el archivo md que estoy escribiendo (A.md), me gustaría me gusta extraer el enlace del otro archivo (B.md) en lugar de hacerlo desde el final del archivo actual (A.md).


Creo que es mejor que adoptemos una nueva sintaxis de inclusión de archivos (para no meternos con bloques de código, creo que la inclusión del estilo C es totalmente incorrecta), y escribí una pequeña herramienta en Perl, nombrando cat.pl , porque funciona como cat ( cat a.txt b.txt c.txt combinará tres archivos), pero combina los archivos en profundidad , no en ancho . ¿Cómo utilizar?

$ perl cat.pl <your file>

La sintaxis en detalle es:

  • Recursive include files: @include <-=path=
  • solo incluya uno: %include <-=path=

Puede manejar adecuadamente los bucles de inclusión de archivos (si a.txt <- b.txt, b.txt <- a.txt, ¿entonces qué espera?).

Ejemplo:

a.txt:

a.txt a <- b @include <-=b.txt= a.end

b.txt:

b.txt b <- a @include <-=a.txt= b.end

perl cat.pl a.txt > c.txt , c.txt:

a.txt a <- b b.txt b <- a a.txt a <- b @include <-=b.txt= (note:won''t include, because it will lead to infinite loop.) a.end b.end a.end

Más ejemplos en https://github.com/district10/cat/blob/master/tutorial_cat.pl_.md .

También escribí una versión de Java con un efecto idéntico (no igual, pero cerrado).


De hecho, puede usar /input{filename} y /include{filename} que son comandos de latex, directamente en Pandoc , ya que admite casi todas las sintaxis html y latex .

Pero cuidado, el archivo incluido se tratará como un archivo de latex . Pero puedes compilar fácilmente tu Pandox latex con Pandox .


En realidad, puede usar el preprocesador de reducción ( MarkdownPP ). Al ejecutar el ejemplo de libro hipotético a partir de las otras respuestas, crearía archivos .mdpp que representan sus capítulos. Los archivos .mdpp pueden usar la directiva !INCLUDE "path/to/file.mdpp" , que opera recursivamente reemplazando la directiva con los contenidos del archivo referenciado en el resultado final.

chapters/preface.mdpp chapters/introduction.mdpp chapters/why_markdown_is_useful.mdpp chapters/limitations_of_markdown.mdpp chapters/conclusions.mdpp

Entonces necesitaría un index.mdpp que contuviera lo siguiente:

!INCLUDE "chapters/preface.mdpp" !INCLUDE "chapters/introduction.mdpp" !INCLUDE "chapters/why_markdown_is_useful.mdpp" !INCLUDE "chapters/limitations_of_markdown.mdpp" !INCLUDE "chapters/conclusions.mdpp"

Para procesar su libro, simplemente ejecute el preprocesador en index.mdpp :

$ markdown-pp.py index.mdpp mybook.md

No se olvide de mirar el readme.mdpp en el repositorio MarkdownPP para una exposición de las características del preprocesador adecuadas para proyectos de documentación más grandes.


Hace poco escribí algo así en Node llamado markdown-include que le permite incluir archivos de marcación con sintaxis de estilo C, así:

#include "my-file.md"

Creo que esto se alinea muy bien con la pregunta que estás haciendo. Sé que este es viejo, pero quería actualizarlo al menos.

Puede incluir esto en cualquier archivo de rebajas que desee. Ese archivo también puede tener más includes y markdown-include creará un enlace interno y hará todo el trabajo por usted.

Puedes descargarlo a través de npm

npm install -g markdown-include


La respuesta corta es no. La respuesta larga es sí. :-)

Markdown se diseñó para permitir que las personas escriban texto simple y legible que se pueda convertir fácilmente a un simple marcado HTML. Realmente no hace el diseño del documento. Por ejemplo, no hay una forma real de alinear una imagen a la derecha o a la izquierda. En cuanto a su pregunta, no hay un comando de rebajas para incluir un solo enlace de un archivo a otro en cualquier versión de rebajas (hasta donde yo sé).

Lo más cerca que puede llegar a esta funcionalidad es Pandoc . Pandoc le permite fusionar archivos como parte de la transformación, lo que le permite procesar fácilmente varios archivos en una única salida. Por ejemplo, si estuviera creando un libro, podría tener capítulos como este:

01_preface.md 02_introduction.md 03_why_markdown_is_useful.md 04_limitations_of_markdown.md 05_conclusions.md

Puede unirlos haciendo ejecutar este comando dentro del mismo directorio:

pandoc *.md > markdown_book.html

Como Pandoc fusionará todos los archivos antes de realizar la traducción, puede incluir sus enlaces en el último archivo como este:

01_preface.md 02_introduction.md 03_why_markdown_is_useful.md 04_limitations_of_markdown.md 05_conclusions.md 06_links.md

Entonces, parte de tu 01_preface.md podría verse así:

I always wanted to write a book with [markdown][mkdnlink].

Y parte de su 02_introduction.md podría verse así:

Let''s start digging into [the best text-based syntax][mkdnlink] available.

Siempre que su último archivo incluya la línea:

[mkdnlink]: http://daringfireball.net/projects/markdown

... el mismo comando utilizado anteriormente realizará la fusión y la conversión al mismo tiempo que incluye ese enlace. Solo asegúrate de dejar una o dos líneas en blanco al comienzo de ese archivo. La documentación de Pandoc dice que agrega una línea en blanco entre los archivos que se fusionan de esta manera, pero esto no funcionó para mí sin la línea en blanco.


Mi solución es usar m4. Es compatible con la mayoría de las plataformas y está incluido en el paquete binutils.

Primero incluya un macro changequote() en el archivo para cambiar los caracteres de cotización a los que prefiera (el valor predeterminado es `''). La macro se elimina cuando se procesa el archivo.

changequote(`{{'', `}}'') include({{other_file}})

En la línea de comando:

m4 -I./dir_containing_other_file/ input.md > _tmp.md pandoc -o output.html _tmp.md


Solo mencionaría que puede usar el comando cat para concatenar los archivos de entrada antes de ponerlos a través de la reducción, que tiene el mismo efecto que lo que hace Pandoc con la entrada de múltiples archivos de entrada.

cat * .md | markdown_py> youroutputname.html

funciona de manera muy parecida al ejemplo anterior de pandoc para la versión Python de Markdown en mi Mac.


Uso Marked 2 en Mac OS X. Es compatible con la siguiente sintaxis para incluir otros archivos.

<<[chapters/chapter1.md] <<[chapters/chapter2.md] <<[chapters/chapter3.md] <<[chapters/chapter4.md]

Lamentablemente, no se puede alimentar a pandoc, ya que no entiende la sintaxis. Sin embargo, escribir un script para quitar la sintaxis para construir una línea de comando de pandoc es bastante fácil.


Utilizo un archivo includes.txt con todos mis archivos en el orden correcto para ejecutar Pandoc de esta manera:

pandoc -s $(cat includes.txt) --quiet -f markdown -t html5 --css pandoc.css -o index.html

¡Funciona de maravilla!