Alinhar colunas à direita no Sublime Text 3

Alinhar colunas à direita no Sublime Text 3

Eu gostaria decertoalinhe o texto em colunas no Sublime Text 3 (no Win 8.1, FWIW).

Ou seja, eu quero converter isso

Time    Cash Flow
0   -500
1   100
2   200
3   300

nisso

 Time   Cash Flow
    0        -500
    1         100
    2         200
    3         300

com o objetivo final deste

 Time   Cash Flow
-----  ----------
    0        -500
    1         100
    2         200
    3         300

Este é ummesa simplesempandoc. Eu tentei os pacotes alignmentand AlignTab, mas eles parecem se especializar em alinhar alguns delimitadores, em vez de alinhar colunas como eu preciso.

Existe algum truque para fazer isso? Também estou aberto a uma solução que exija vi ou Excel.

Responder1

Ok, aqui está uma solução que envolve Excel ou qualquer outro programa de planilha capaz de exportar CVS.


Você tem que instalar umfiltro de terceiros recém-lançado chamado "csv2table"(<- repositório GitHub) para Pandoc.

Também está disponível comoum filtro independente.

  1. Instale o filtro independente assim:

    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. Meu método de instalação preferido, entretanto, é viacabal:

    cabal update
    export PATH=${HOME}/.cabal/bin:${PATH}
    cabal install cabal-install
    cabal install pandoc-csv2table
    

Leia odocumentação csv2table.

O que você pode fazer com esse filtro?

  1. Você pode incluir um arquivo CSV externo em seu Markdown...

    • ...ou abusando doimagem incluindo sintaxeassim:

      ![](/path/to/file.csv)

    • ...ou abusando dobloco de código cercadosintaxe assim:

      ```` {.table source="/path/to/file.csv" <list-of-attributes>}
      ````
      
    • ...ou inserindo diretamente suas linhas CSV na "seção da tabela protegida" assim:

      ```` {.table <list-of-attributes>}
      one,two,three
      1,2,3
      100,2000,55555
      ````
      
  2. Ao invocar o filtro na linha de comando do Pandoc,
    --filter=pandoc-csv2table
    o CSV será convertido em uma tabela em todos os seus formatos de saída.

  3. Além disso, você pode aplicar quase toda a formatação às tabelas suportadas pelo Pandoc:

    • Use o atributo type="multiline"para criar um arquivo multiline_table.
    • Use type="pipe"para criar um arquivo pipe_table.
    • Use type="simple"para criar um arquivo simple_table.
    • Use caption="My ***important*** caption for this table"para adicionar uma legenda à tabela. (Isso pode incluir formatação de redução.)
    • Use header="no"se desejar uma tabela sem cabeçalhos de coluna (o valor padrão usado, se não for fornecido, é header="yes").
    • Agora o recurso que você deseja:Use aligns=LRCDRpara ordenar o alinhamento das colunas (da esquerda para a direita) como Esquerda, Direita, Centro, Padrão e Direita novamente.

Exemplo

  1. Considere este my.csvarquivo:

    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 você pode ver, eu até uso a marcação Markdown para alguns campos de dados das linhas CSV!)

  2. Considere este Markdown my.md,:

    # Título
    
     ```` {.table source="./my.csv" aligns="LRCR" type="multiline" caption="Some ***caption***"}
     ````
    
  3. Execute este comando para gerar a saída da tabela multilinha Markdown a partir de sua entrada CSV:

    pandoc meu.md --filter=pandoc-csv2table -t marcação
    

    Veja esta saída:

    Captura de tela da saída do Markdown

  4. Execute este comando para gerar saída PDF com uma tabela multilinha a partir de sua entrada CSV:

    pandoc meu.md --filter=pandoc-csv2table -o meu.pdf
    

    Veja esta saída (captura de tela):

    Captura de tela da saída do PDF

  5. Se você deseja gerar"tabelas de tubos"com a sintaxe de dois pontos indicando alinhamento, você deve modificar um pouco o Markdown, bem como a linha de comando:

    • Modificar reduçãopara incluir type="pipe"nas opções de formatação da tabela:

      # Título
      
       ```` {.table source="./my.csv" aligns="LRCR" type="pipe" caption="Some ***caption***"}
       ````
      
    • Modificar linha de comandopara pedir markdown_phpextra+table_captionssaída:

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

      Veja a saída agora:

      Captura de tela com saída de <code>pipe_tables</code> incluindo alinhamento-"dois pontos"

  6. Claro, isso também funciona com todos os outros formatos de saída!

Responder2

Eu tenho outra solução. O Pandoc pipe_tablesrequer o seguinte formato e pode lidar com alinhamentos à esquerda, ao centro e à direita.

| Right | Left | Default | Center |
|------:|:-----|---------|:------:|
|   12  |  12  |    12   |    12  |
|  123  |  123 |   123   |   123  |
|    1  |    1 |     1   |     1  |

  : Demonstration of pipe table syntax.

Se eu separar as colunas com pipes |, quando terminar, poderei

  • primeiro alinhe os tubos com o alignmentpacote no Sublime Text 3
  • em seguida, adicione manualmente os dois pontos :para obter o alinhamento desejado.

Isso não é tão fácil quanto o filtro do @Kurt (e nem de longe tão robusto :)), mas é bastante simples.

informação relacionada