2

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

1

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


Вы должны установить недавно выпущенный сторонний фильтр с именем "csv2table" (<- GitHub repository) для 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" чтобы добавить заголовок таблицы. (Это может включать форматирование уценки.)
    • Используйте header="no" если вы хотите таблицу без заголовков столбцов (по умолчанию используется значение header="yes").
    • Теперь нужная вам функция: используйте aligns=LRCDR чтобы снова упорядочить выравнивание столбцов (слева направо) как Left, Right, Center, Default и Right.

пример

  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. Рассмотрим эту уценку , my.md:

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

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

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

    Снимок экрана вывода Markdown

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

    pandoc my.md --filter = pandoc-csv2table -o my.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. Конечно, это работает и со всеми другими форматами вывода!

1

У меня есть другое решение. 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 (и далеко не такой надежный :)), но это довольно просто.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .