Как правильно выровнять содержимое столбцов в простых таблицах reStructuredText?
я редактирую документацию для своего проекта, используя Сфинкс, который в свою очередь использует reStructuredText как язык разметки.
У меня есть простая таблица (вместо решетки стола), в котором самые правые отчеты столбцов содержат номера, которые я хотел бы выровнять, но я не мог найти, как этого достичь.
============ =====================
Event Score variation
============ =====================
Event 1 +100
Event 2 -25
Event 3 -400
============ =====================
Я был бы рад переключиться на решетки стола если это будет позвольте мне решить эту проблему.
3 ответов
к сожалению, я не думаю, что первый предлагает эту способность... параметры стиля таблицы довольно ограничены. Тем не менее, если вы рендеринг в HTML, вы можете добавить пользовательскую таблицу стилей с правилом css, таким как:
table.right-align-right-col td:last-child {
text-align: right
}
а затем добавьте директиву:
.. rst-class:: right-align-right-col
прямо над вашей таблицей в первом файле. Он неуклюжий, но должен работать.
обновление 2013-2-6: С тех пор мне нужно было сделать это самостоятельно, и придумал более постоянный решение. The cloud_sptheme.доб.table_styling расширение Sphinx добавляет директивы для выравнивания столбцов, классов css для каждого столбца и количество других трюков стиля таблицы. Несмотря на то, что он упакован как часть" облачной " темы Сфинкса, он должен работать с любой темой Сфинкса.
хотя кажется, что ReST фактически не поддерживает выравнивание содержимого ячейки, вы можете использовать линия-блоки в вашей ячейке, чтобы обеспечить сохранение пробелов для эффективного заполнения содержимого вашей ячейки.
вам придется использовать некоторые unicode-пробелы символы (например,U+2001 - EM QUAD
) и им предшествует обычный символ пробела (U+0020
), т. е. U+0020U+2001Your String
чтобы остановить остальной парсер, жалующийся на деформированные таблицы и unterminated замена ссылок и т. д.
+--------+---------+
| String | Num |
+========+=========+
| foo || 12.00| # second cell's content is actually |<U+0020><U+2001>12.00
+--------+---------+
| bar || 3.01|
+--------+---------+
| baz || 4.99|
+--------+---------+
| moo || 15.99|
+--------+---------+
| quux || 33.49|
+--------+---------+
| foo || 20.00|
+--------+---------+
| bar || 100.00|
+--------+---------+
таблицы, подобные приведенным выше, начинают выглядеть немного неудобно и неудобно поддерживать, но подход выполняет свою работу. Это также само собой разумеется, вам нужно будет как редактировать, так и генерировать вывод UTF-8. В то время как rst2html.py
относится к этому хорошо, я не уверен, как sphinx
занимается этим, и если это возможно, остается ли выравнивание при создании документов, отличных от HTML.
мой подход немного sed
в файле TeX, сгенерированном Docutils.
Идея состоит в том, чтобы заменить table
декларация с чем-то, что соответствует вашим потребностям.
Docutils производят что-то вроде этого :
\begin{longtable*}[c]{p{0.086\DUtablewidth}p{0.290\DUtablewidth}}
представьте, что вы хотите выровнять второй столбец вправо.Вы можете заменить это на:
\begin{longtable*}[c]{lr}
но вы теряете возможность контролировать ширину ячеек. Мы должны объявить 2 \newcolumntype
, одно для правого выравнивания (x) и один для левого-выровнять (y):
\newcolumntype{x}[1]{%
>{\raggedleft\hspace{0pt}}p{#1}}%
\newcolumntype{y}[1]{%
>{\raggedright\hspace{0pt}}p{#1}}%
и используйте их в объявлении таблицы:
\begin{longtable*}[c]{y{7.5cm}x{2cm}}
на \
новая строка также должна быть заменена на \tabularnewline
.
я сложила все в файл сценария, потому что я на OSX и вариант sed поставляется не поддерживает подстановку новой строки с \n
(это отстой, когда вы находитесь в Makefile
).
итог
на OSX/BSD:
sed -E -f fix_table.sed < source.tex > destination.tex
С fix_table.sed
:
s/\begin{longtable\*}.*/\newcolumntype{x}[1]{% \
>{\raggedleft\hspace{0pt}}p{#1}}% \
\newcolumntype{y}[1]{% \
>{\raggedright\hspace{0pt}}p{#1}}% \
\begin{longtable*}[c]{y{7.5cm}x{2cm}}/
s/\\/\tabularnewline/
это немного жестко, но нет обходного пути, который действительно работает на уровне RestructuredText.
http://en.wikibooks.org/wiki/LaTeX/Tables
http://texblog.org/2008/05/07/fwd-equal-cell-width-right-and-centre-aligned-content/