Alinear columnas a la derecha en Sublime Text 3

Alinear columnas a la derecha en Sublime Text 3

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

  1. 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}
    
  2. Sin embargo, mi método de instalación preferido es a través decabal:

    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?

  1. 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
      ````
      
  2. 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.

  3. Además, puede aplicar casi todo el formato a las tablas admitidas por Pandoc:

    • Utilice el atributo type="multiline"para crear un multiline_table.
    • Úselo type="pipe"para crear un pipe_table.
    • Úselo type="simple"para crear un simple_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, es header="yes").
    • Ahora la característica que deseas:Úselo aligns=LRCDRpara ordenar la alineación de las columnas (de izquierda a derecha) como Izquierda, Derecha, Centro, Predeterminada y Derecha nuevamente.

Ejemplo

  1. Considere este my.csvarchivo:

    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!)

  2. Considere este descuento my.md:

    # Titular
    
     ```` {.table source="./my.csv" aligns="LRCR" type="multiline" caption="Algunos ***caption***"}
     ````
    
  3. 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:

    Captura de pantalla de la salida de Markdown

  4. 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):

    Captura de pantalla de la salida PDF

  5. 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_captionssalida:

      pandoc my.md --filter=pandoc-csv2table -t markdown_phpextra+table_captions

      Vea el resultado ahora:

      Captura de pantalla con salida de <code>pipe_tables</code> que incluye alineación: "dos puntos"

  6. ¡Por supuesto, esto también funciona con todos los demás formatos de salida!

Respuesta2

Tengo otra solución. Pandoc pipe_tablesrequiere 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 alignmentpaquete 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.

información relacionada