Me gustaríabienalinear el texto en columnas en Sublime Text 3 (en Win 8.1, FWIW).
Es decir, quiero convertir esto
Time Cash Flow
0 -500
1 100
2 200
3 300
dentro de esto
Time Cash Flow
0 -500
1 100
2 200
3 300
con el objetivo final de este
Time Cash Flow
----- ----------
0 -500
1 100
2 200
3 300
Esto unmesa sencillaenpandoc. Probé los paquetes alignment
and AlignTab
, pero parecen especializarse en alinear algunos delimitadores en lugar de alinear columnas como necesito.
¿Hay algún truco para hacer esto? También estoy abierto a una solución que requiera vi o Excel.
Respuesta1
Bien, aquí hay una solución que involucra Excel o cualquier otro programa de hoja de cálculo que pueda exportar CVS.
Tienes que instalar unfiltro de terceros recientemente lanzado llamado "csv2table"(<- repositorio de GitHub) para Pandoc.
También está disponible comoun filtro independiente.
Instale el filtro independiente de esta manera:
mkdir ${HOME}/bin wget https://gist.githubusercontent.com/baig/b69e3146251bd90d12e7/raw/d8c8171fbe0ad5543f8aaf0a134250b29c689e57/csv2table.hs \ -O ${HOME}/bin/pandoc-csv2table.hs chmod a+x ${HOME}/bin/pandoc-csv2table.hs export PATH=${HOME}/bin:${PATH}
Sin embargo, mi método de instalación preferido es a través de
cabal
:cabal update export PATH=${HOME}/.cabal/bin:${PATH} cabal install cabal-install cabal install pandoc-csv2table
Leer eldocumentación csv2table.
¿Qué puedes hacer con este filtro?
Puede incluir un archivo CSV externo en su Markdown al...
... ya sea abusando delimagen incluyendo sintaxiscomo esto:
![](/path/to/file.csv)
...o abusando delbloque de código cercadosintaxis como esta:
```` {.table source="/path/to/file.csv" <list-of-attributes>} ````
...o insertando directamente sus líneas CSV en la "sección de tabla vallada" de esta manera:
```` {.table <list-of-attributes>} one,two,three 1,2,3 100,2000,55555 ````
Al invocar el filtro dentro de la línea de comando de Pandoc,
--filter=pandoc-csv2table
el CSV se convertirá en una tabla en todos sus formatos de salida.Además, puede aplicar casi todo el formato a las tablas admitidas por Pandoc:
- Utilice el atributo
type="multiline"
para crear unmultiline_table
. - Úselo
type="pipe"
para crear unpipe_table
. - Úselo
type="simple"
para crear unsimple_table
. - Úselo
caption="My ***important*** caption for this table"
para agregar un título de tabla. (Esto puede incluir formato de rebajas). - Úselo
header="no"
si desea una tabla sin encabezados de columna (el valor predeterminado utilizado, si no se proporciona, esheader="yes"
). - Ahora la característica que deseas:Úselo
aligns=LRCDR
para ordenar la alineación de las columnas (de izquierda a derecha) como Izquierda, Derecha, Centro, Predeterminada y Derecha nuevamente.
- Utilice el atributo
Ejemplo
Considere este
my.csv
archivo:Time,"*Cash* Flow","Third column" 0,-500,loooooooooooong data field with many words 1,*100*, ***2***,`2000`,shorte **3**,30000,(second line is empty)
(Como puede ver, ¡incluso uso el marcado Markdown para algunos de los campos de datos de las líneas CSV!)
Considere este descuento
my.md
:# Titular ```` {.table source="./my.csv" aligns="LRCR" type="multiline" caption="Algunos ***caption***"} ````
Ejecute este comando para generar la salida de la tabla multilínea Markdown a partir de su entrada CSV:
pandoc my.md --filter=pandoc-csv2table -t reducción
Vea este resultado:
Ejecute este comando para generar una salida PDF con una tabla multilínea desde su entrada CSV:
pandoc mi.md --filter=pandoc-csv2table -o mi.pdf
Vea este resultado (captura de pantalla):
Si quieres generar"mesa de tubos"con la sintaxis de dos puntos que indican alineación, hay que modificar un poco el Markdown, así como la línea de comando:
Modificar rebajaspara incluir
type="pipe"
en las opciones de formato de la tabla:# Titular ```` {.table source="./my.csv" aligns="LRCR" type="pipe" caption="Algunos ***caption***"} ````
Modificar línea de comandopara pedir
markdown_phpextra+table_captions
salida:pandoc my.md --filter=pandoc-csv2table -t markdown_phpextra+table_captions
Vea el resultado ahora:
¡Por supuesto, esto también funciona con todos los demás formatos de salida!
Respuesta2
Tengo otra solución. Pandoc pipe_tables
requiere el siguiente formato y puede manejar alineaciones izquierda, central y derecha.
| Right | Left | Default | Center |
|------:|:-----|---------|:------:|
| 12 | 12 | 12 | 12 |
| 123 | 123 | 123 | 123 |
| 1 | 1 | 1 | 1 |
: Demonstration of pipe table syntax.
Si separo las columnas con tuberías |
, cuando termine podré
- Primero alinee las tuberías con el
alignment
paquete en Sublime Text 3. - luego agregue manualmente los dos puntos
:
para obtener la alineación deseada.
Esto no es tan fácil como el filtro de @Kurt (y ni de lejos tan robusto :)), pero es bastante sencillo.