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