Colunas de alinhamento à direita no Texto Sublime 3

2

Eu gostaria de corrigir alinhar texto em colunas no Sublime Text 3 (no Win 8.1, FWIW).

Ou seja, quero converter isso

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

para isso

 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

Esta é uma tabela simples em pandoc . Eu tentei os pacotes alignment e AlignTab , mas eles parecem se especializar no alinhamento de alguns delimitadores em vez de alinhar colunas como eu preciso.

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

    
por Richard Herron 22.05.2015 / 22:51

2 respostas

1

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

Você precisa instalar um filtro de terceiros recém-lançado chamado "csv2table" ( < - repositório GitHub) para o Pandoc.

Ele também está disponível como um filtro independente .

  1. Instale o filtro autônomo 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, no entanto, é via cabal :

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

Leia a documentação do csv2table .

O que você pode fazer com esse filtro?

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

    • ... abusando da imagem incluindo a sintaxe desta forma:

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

    • ... ou abusando da sintaxe código de bloco bloqueado :

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

      '''' {.table <list-of-attributes>}
      one,two,three
      1,2,3
      100,2000,55555
      ''''
      
  2. Invocando o filtro na linha de comando do Pandoc como --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) tabela (s) suportada (s) pelo Pandoc:

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

Exemplo

  1. Considere este arquivo my.csv :

    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 Markup markup para alguns dos campos de dados das linhas CSV!)

  2. Considere este Markdown, my.md :

     # Headline
    
     '''' {.table source="./my.csv" aligns="LRCR" type="multiline" caption="Some ***caption***"}
     ''''
    
  3. Execute este comando para gerar a saída da tabela de múltiplas linhas do Markdown a partir de sua entrada CSV:

    pandoc my.md --filter=pandoc-csv2table -t markdown
    

    Veja esta saída:

  4. ExecuteestecomandoparagerarumasaídaemPDFcomumatabelademúltiplaslinhasapartirdasuaentradaemCSV:

    pandocmy.md--filter=pandoc-csv2table-omy.pdf

    Vejaestasaída(capturadetela):

  5. Se você quiser gerar "tabelas de tubulação" com a sintaxe de dois pontos de alinhamento, você terá que modificar o Markdown um pouco, assim como a linha de comando:

    • Modifique o Markdown para incluir type="pipe" nas opções de formatação da tabela:

       # Headline
      
       '''' {.table source="./my.csv" aligns="LRCR" type="pipe" caption="Some ***caption***"}
       ''''
      
    • Modifique a linha de comando para solicitar markdown_phpextra+table_captions output:

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

      Veja a saída agora:

      Capturadetelacom<code>pipe_tables</code>saídaincluindoalinhamento-"colons"

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

por 26.05.2015 / 22:45
1

Eu tenho outra solução. Pandoc pipe_tables requer o seguinte formato e pode manipular 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, posso

  • primeiro alinhe os canais com o pacote alignment em Sublime Text 3
  • adicione manualmente os dois pontos de volta: 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.

    
por 27.05.2015 / 13:49