¿Cómo puedo hacer una tabla de contenido para un documento de descuento con Python / AWK / SED?

15

Tengo el siguiente documento de rebaja:

Heading-a
==========

---text---

Heading-b
------------

--- text ---

Heading-c
----------

--- text---

Heading-d
=======

--- text----

Heading-e
---

...

Me gustaría hacer una tabla de contenido en la que se pueda hacer clic, de forma similar a como lo hace LaTex , pero no puedo encontrar una herramienta que haga esto, lo que me sugiere que deberíamos construir una.

La herramienta debe recopilar encabezados 'H1' y encabezados 'H2' de manera que asigne el número 1 Heading-ay el número 1.1. a Heading-b, 1.2. a Heading-c, 2. a Heading-d, 2.1. ay Heading-easí sucesivamente, de modo que deberíamos obtener la siguiente tabla de contenido:

  1. Heading-a
  1.1. Heading-b
  1.2. Heading-c
  2. Heading-d
  2.1. Heading-e

¿Cómo puedo hacer esto con Python / AWK / SED?

Léo Léopold Hertz 준영
fuente
¿Por qué no usas LaTeX?
jtbandes
44
@jtbandes: la sintaxis de Markdown es más fácil de leer, más rápida de escribir y más fácil de compilar que la de LaTex.
Léo Léopold Hertz 준영

Respuestas:

9

La implementación de Markdown en Python tiene soporte para extensiones, una de las cuales incluye la generación de tabla de contenido. Además, Pandoc (que es un marcado de Haskell-> PDF tiene soporte para rebajas (además de un montón de otros formatos) y puede generar HTML, LaTeX, PDF, etc.

Tyler
fuente
Su respuesta planteó otro problema al instalar las extensiones en el subproceso superuser.com/questions/13075/…
Léo Léopold Hertz 준영
1

Si ya tiene encabezados, puede probar que github-markdown-toc puede procesar archivos stdin, locales y remotos, por ejemplo:

cat ~/projects/Dockerfile.vim/README.md | ./gh-md-toc -

o creando un local README.md:

./gh-md-toc ~/projects/Dockerfile.vim/README.md
resultados
fuente
0

Consulte este artículo para ver una comparación de los lenguajes de marcado ligeros con información sobre tablas de contenido que pueden guiarlo hacia una solución.

Pausado hasta nuevo aviso.
fuente
El enlace no funciona.
Léo Léopold Hertz 준영
1
El link funciona para mí.
Pausado hasta nuevo aviso.
Parece ser el caso de que el autor original acaba de eliminar la publicación del blog de modo que tenga el artículo en su caché.
Léo Léopold Hertz 준영
1
El artículo se puede encontrar en el caché de Google: sitio: alexandrenotebook.blogspot.com/2008/01/…
Léo Léopold Hertz 준영