Мой подход - немного sed
для файла TeX, сгенерированного Docutils .
Идея состоит в том, чтобы заменить объявление table
на то, что соответствует вашим потребностям.
Документы производят что-то вроде этого:
\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/