Я хотел быверновыравнивание текста по столбцам в 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»(<- репозиторий GitHub) для Pandoc.
Он также доступен какавтономный фильтр.
Установите автономный фильтр следующим образом:
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)
(Как видите, я даже использую разметку Markdown для некоторых полей данных в строках CSV!)
Рассмотрим этот Markdown
my.md
:# Заголовок ```` {.table source="./my.csv" aligns="LRCR" type="multiline" caption="Некоторые ***подписи***"} ````
Выполните эту команду, чтобы сгенерировать многострочную таблицу Markdown из входных данных CSV:
pandoc my.md --filter=pandoc-csv2table -t разметка
Посмотрите этот вывод:
Выполните эту команду, чтобы создать PDF-файл с многострочной таблицей из входных данных CSV:
pandoc мой.md --filter=pandoc-csv2table -o мой.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
У меня есть другое решение. Pandoc pipe_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 (и далеко не так надежно :) ), но довольно просто.