Выравнивание столбцов по правому краю в 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

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

Есть ли какой-то трюк, чтобы это сделать? Я также открыт для решения, которое требует 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)

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

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

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

    pandoc my.md --filter=pandoc-csv2table -t разметка
    

    Посмотрите этот вывод:

    Скриншот вывода Markdown

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

    pandoc мой.md --filter=pandoc-csv2table -o мой.pdf
    

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

    Скриншот выходного PDF-файла

  5. Если вы хотите создать"трубчатые столы"при использовании синтаксиса с двоеточиями, указывающими на выравнивание, вам придется немного изменить 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

      Посмотрите на результат сейчас:

      Скриншот с выводом <code>pipe_tables</code>, включая выравнивание-"двоеточия"

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

решение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 (и далеко не так надежно :) ), но довольно просто.

Связанный контент