我想正確的在 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
這是簡單的桌子在潘多克。我嘗試了alignment
和AlignTab
包,但這些似乎專門用於對齊一些分隔符,而不是像我需要的那樣對齊列。
有什麼技巧可以做到這一點嗎?我也願意接受需要 vi 或 Excel 的解決方案。
答案1
好的,這是一個涉及 Excel 或任何其他能夠匯出 CVS 的電子表格程式的解決方案。
你必須安裝一個新發布的第三方過濾器名為“csv2table”Pandoc 的(<- GitHub 儲存庫)。
它也可以作為獨立的過濾器。
像這樣安裝獨立過濾器:
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}
然而,我首選的安裝方法是透過
cabal
:cabal update export PATH=${HOME}/.cabal/bin:${PATH} cabal install cabal-install cabal install pandoc-csv2table
閱讀csv2table 文檔。
你可以用這個過濾器做什麼?
您可以透過以下方式將外部 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 ````
透過在 Pandoc 命令列中呼叫過濾器,
--filter=pandoc-csv2table
CSV 將被轉換為所有輸出格式的表格。另外,您可以將幾乎所有格式應用於 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
將列的對齊方式(從左到右)排序為「左」、「右」、「居中」、「預設」和「右」。
- 使用該屬性
例子
考慮這個
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 標記!)
考慮這個 Markdown
my.md
,:# 標題 ```` {.table source =“./my.csv”aligns =“LRCR”type =“multiline”caption =“一些***標題***”} ````
執行此命令以從 CSV 輸入產生 Markdown 多行表輸出:
pandoc my.md --filter=pandoc-csv2table -t markdown
看到這個輸出:
執行此命令可從 CSV 輸入產生具有多行表的 PDF 輸出:
pandoc my.md --filter=pandoc-csv2table -o my.pdf
請參閱此輸出(螢幕截圖):
如果你想生成“管表”使用指示對齊的冒號語法,您必須稍微修改 Markdown 以及命令列:
修改Markdown要包含
type="pipe"
在表格式選項中:# 標題 ```` {.table source =“./my.csv”aligns =“LRCR”type =“pipe”caption =“一些***標題***”} ````
修改命令列要求
markdown_phpextra+table_captions
輸出:pandoc my.md --filter=pandoc-csv2table -t markdown_phpextra+table_captions
現在查看輸出:
當然,這也適用於所有其他輸出格式!
答案2
我有另一個解決方案。 Pandocpipe_tables
需要以下格式,並且可以處理左對齊、居中對齊和右對齊。
| Right | Left | Default | Center |
|------:|:-----|---------|:------:|
| 12 | 12 | 12 | 12 |
| 123 | 123 | 123 | 123 |
| 1 | 1 | 1 | 1 |
: Demonstration of pipe table syntax.
如果我用管道分隔列|
,那麼當我完成後我可以
- 首先將管道與
alignment
Sublime Text 3 中的套件對齊 - 然後手動添加回冒號
:
以獲得所需的對齊方式。
這並不像 @Kurt 的過濾器那麼容易(並且沒有那麼強大:)),但它相當簡單。