Sublime Text 3 中的右对齐列

Sublime Text 3 中的右对齐列

我想正确的在 Sublime Text 3 中按列对齐文本(在 Win 8.1 上,FWIW)。

也就是说,我想将其转换为

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

进入这个

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

最终目标是

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

这是简单表格潘多克。我尝试了alignmentAlignTab包,但它们似乎专门用于对齐一些分隔符,而不是像我需要的那样对齐列。

有什么技巧可以做到这一点吗?我也愿意接受需要 vi 或 Excel 的解决方案。

答案1

好的,这里有一个解决方案,涉及 Excel 或任何其他能够导出 CVS 的电子表格程序。


你必须安装一个新发布的第三方过滤器“csv2table”(<- GitHub 存储库) 用于 Pandoc。

也可以作为独立过滤器

  1. 像这样安装独立过滤器:

    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. 我首选的安装方法是通过cabal

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

阅读csv2table 文档

您可以使用这个过滤器做什么?

  1. 您可以通过以下方式将外部 CSV 文件包含到您的 Markdown 中...

    • ...要么滥用包含语法的图像像这样:

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

    • ...或者滥用隔离代码块语法如下:

      ```` {.table source="/path/to/file.csv" <list-of-attributes>}
      ````
      
    • ...或者直接将 CSV 行插入到“隔离表部分”,如下所示:

      ```` {.table <list-of-attributes>}
      one,two,three
      1,2,3
      100,2000,55555
      ````
      
  2. 通过调用 Pandoc 命令行中的过滤器,
    --filter=pandoc-csv2table
    CSV 将转换为所有输出格式的表。

  3. 另外,您可以将几乎所有的格式应用到 Pandoc 支持的表格:

    • 使用属性type="multiline"创建一个multiline_table
    • 使用type="pipe"来创建一个pipe_table
    • 使用type="simple"来创建一个simple_table
    • 用于caption="My ***important*** caption for this table"添加表格标题。(这可以包括 markdown 格式。)
    • 如果您想要一个没有列标题的表格,请使用header="no"(如果未给出,则使用默认值header="yes")。
    • 现在您想要的功能:用于aligns=LRCDR对列的对齐方式(从左到右)进行排序,分别为左、右、居中、默认和右。

例子

  1. 考虑这个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)

    (正如您所见,我甚至对 CSV 行的一些数据字段使用了 Markdown 标记!)

  2. 考虑一下这个 Markdown my.md,:

    # 标题
    
     ```` {.table source=".​​/my.csv" aligns="LRCR" type="multiline" caption="一些***caption***"}
     ````
    
  3. 运行此命令从 CSV 输入生成 Markdown 多行表输出:

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

    查看此输出:

    Markdown 输出的屏幕截图

  4. 运行此命令从 CSV 输入生成带有多行表的 PDF 输出:

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

    查看此输出(屏幕截图):

    PDF 输出的屏幕截图

  5. 如果你想生成“管道表”使用对齐指示冒号语法,您必须稍微修改 Markdown 以及命令行:

    • 修改 Markdown包括type="pipe"在表格格式选项中:

      # 标题
      
       ```` {.table source=".​​/my.csv" aligns="LRCR" type="pipe" caption="一些***caption***"}
       ````
      
    • 修改命令行要求markdown_phpextra+table_captions输出:

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

      现在查看输出:

      带有 <code>pipe_tables</code> 输出的屏幕截图,包括对齐方式“冒号”

  6. 当然,这也适用于所有其他输出格式!

答案2

我有另一个解决方案。 Pandocpipe_tables需要以下格式,并且可以处理左对齐、居中对齐和右对齐。

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

  : Demonstration of pipe table syntax.

如果我用管道将列分开|,那么当我完成后,我可以

  • 首先将管道与alignmentSublime Text 3 中的包对齐
  • 然后手动添加冒号:以获得所需的对齐。

这不像@Kurt 的过滤器那么简单(并且也不那么强大:)),但它相当简单。

相关内容