¿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?


¿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:



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

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.


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 준영
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.