Выровнять столбцы по правому краю в Sublime Text 3

1257
Richard Herron

Я хотел бы выровнять текст справа в столбцах в 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 

Это простая таблица в pandoc . Я попробовал alignmentи AlignTabпакеты, но они, кажется, специализируются на совместив некоторые ограничители, а не выравнивание столбцов, как мне нужно.

Есть ли какая-то хитрость, чтобы сделать это? Я также открыт для решения, которое требует vi или Excel.

2
Вы видели мой ответ? Должно быть очень легко адаптировать его так, чтобы конкретный вариант использования, который вы ввели в свой вопрос, был решен. Мой пример немного расширил ваш вариант использования, чтобы продемонстрировать все возможности этого подхода. Вы можете легко «потерять зрение на весь лес из-за множества деревьев», поэтому ... Kurt Pfeifle 8 лет назад 1

2 ответа на вопрос

1
Kurt Pfeifle

Хорошо, вот решение, которое включает Excel или любую другую программу для работы с электронными таблицами, которая может экспортировать CVS.


Вы должны установить недавно выпущенный сторонний фильтр с именем "csv2table" (<- GitHub repository) для Pandoc.

Он также доступен в качестве отдельного фильтра .

  1. Установите автономный фильтр следующим образом:

    mkdir $/bin  wget https://gist.githubusercontent.com/baig/b69e3146251bd90d12e7/raw/d8c8171fbe0ad5543f8aaf0a134250b29c689e57/csv2table.hs \ -O $/bin/pandoc-csv2table.hs  chmod a+x $/bin/pandoc-csv2table.hs  export PATH=$/bin:$ 
  2. Мой предпочтительный метод установки, однако, с помощью cabal:

    cabal update export PATH=$/.cabal/bin:$ 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"для добавления заголовка таблицы. (Это может включать форматирование уценки.)
    • Используйте, 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)

    (Как видите, я даже использую разметку Markdown для некоторых полей данных линий CSV!)

  2. Рассмотрим Markdown, my.md:

     # Заголовок  `` `` {.table source = "./ my.csv" aligns = "LRCR" type = "multiline" caption = "Some *** caption ***"} `` `` ` 
  3. Запустите эту команду, чтобы сгенерировать вывод многострочной таблицы Markdown из вашего CSV-входа:

    pandoc my.md --filter = pandoc-csv2table -t уценка 

    Смотрите этот вывод:

    Screenshot of Markdown output

  4. Запустите эту команду, чтобы сгенерировать вывод PDF с многострочной таблицей из вашего CSV-ввода:

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

    Смотрите этот вывод (скриншот):

    Screenshot of PDF output

  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

      Смотрите вывод сейчас:

      Screenshot with <code>pipe_tables</code> output including alignment-"colons"

  6. Конечно, это работает и со всеми другими форматами вывода!

1
Richard Herron

I have another solution. Pandoc pipe_tables require the following format and can handle left, center, and right alignments.

| Right | Left | Default | Center | |------:|:-----|---------|:------:| | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | : Demonstration of pipe table syntax. 

If I separate the columns with pipes |, then when I'm done I can

  • first align the pipes with the alignment package in Sublime Text 3
  • then manually add back the colons : to get the desired alignment.

This isn't quite as easy as @Kurt's filter (and not anywhere near as robust :) ), but it is fairly straight forward.

О, тогда я неправильно поняла ваш вопрос. Я думал, что вам нужен простой способ *** редактировать *** ваши текстовые столбцы в текстовом редакторе, чтобы они были выровнены. Я думал, вы уже *** знаете *** о различных форматах таблиц Pandoc / Markdown ... Мой ответ показал, что вам *** не нужно *** для ручного форматирования в редакторе, и что вы можете сказать Pandoc: генерировать уценочные таблицы из CSV. - Во всяком случае, если вы читаете ** `man pandoc_markdown` **, вам нужно узнать больше трюков. Kurt Pfeifle 8 лет назад 0
Смотрите также мой обновленный ответ. Я включил пример того, как генерировать `pipe_table` с двоеточиями выравнивания. Kurt Pfeifle 8 лет назад 0
Кстати, ваш * "@ Kurt's filter" * является достойным упоминанием, но не совсем корректным :) - я не автор этого фильтра, [Васиф Хасан Бэйг] (https://github.com/baig) , Kurt Pfeifle 8 лет назад 1
@KurtPfeifle ваш ответ идеален! Это на самом деле ответ на вопрос, который я _should_ задал! Мне все равно, как это выглядит в уценке только как это выглядит в PDF. :) И твой ответ меня все равно поймет с `-o уценкой`. :) Спасибо за урок! Richard Herron 8 лет назад 0
Кстати, я не рекомендовал `-o уценку`, но` -o somename.pdf` :) Kurt Pfeifle 8 лет назад 0

Похожие вопросы