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

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.

Richard Herron
источник
1
Вы видели мой ответ? Его очень легко адаптировать так, чтобы конкретный вариант использования, который вы ввели в свой вопрос, был решен. Мой пример немного расширил ваш вариант использования, чтобы продемонстрировать все возможности этого подхода. Вы можете легко "потерять зрение на весь лес из-за множества деревьев" следовательно...
Kurt Pfeifle

Ответы:

1

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


Вы должны установить недавно выпущенный сторонний фильтр с именем "csv2table" (& lt; - 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" добавить заголовок таблицы. (Это может включать форматирование уценки.)
    • использование 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:

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

    pandoc my.md --filter=pandoc-csv2table -t markdown
    

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

    Screenshot of Markdown output

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

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

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

    Screenshot of PDF output

  5. Если вы хотите создать "трубные столы" с помощью синтаксиса двоеточия, указывающего на выравнивание, вы должны немного изменить Markdown, а также командную строку:

    • Изменить уценку включать type="pipe" в таблице параметров форматирования:

       # Headline
      
       ```` {.table source="./my.csv" aligns="LRCR" type="pipe" caption="Some ***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. Конечно, это работает и со всеми другими форматами вывода!

Kurt Pfeifle
источник
1

У меня есть другое решение. 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 пакет в возвышенном тексте 3
  • затем вручную добавьте обратно двоеточия : чтобы получить желаемое выравнивание.

Это не так просто, как фильтр @ Kurt (и далеко не такой надежный :)), но это довольно просто.

Richard Herron
источник
О, тогда я неправильно поняла ваш вопрос. Я думал, что вы хотели легкий способ редактировать ваши текстовые столбцы в текстовом редакторе, чтобы они выровнены. Я думал ты уже знать о разных форматах таблиц Pandoc / Markdown ... Мой ответ показал, что вы не необходимость чтобы вручную отформатировать в редакторе, и что вы можете сказать Pandoc генерировать таблицы Markdown из CSV. - Во всяком случае, есть больше трюков, чтобы узнать, если вы читаете man pandoc_markdown,
Kurt Pfeifle
Смотрите также мой обновленный ответ. Я включил пример о том, как создать pipe_table с выравниванием колонов.
Kurt Pfeifle
1
Кстати, ваш "Фильтр @ Курта" это достойное упоминание, но не совсем правильное :) - я не автор этого фильтра, Васиф Хасан Бэйг является.
Kurt Pfeifle
@KurtPfeifle ваш ответ идеально! Это на самом деле ответ на вопрос, который я должен спросил! Мне все равно, как это выглядит в уценке только как это выглядит в PDF. :) И твой ответ меня все равно что -o markdown, :) Спасибо за урок!
Richard Herron
Кстати, я не рекомендовал -o markdown, но -o somename.pdf :)
Kurt Pfeifle