我的方法有点像Docutilssed
生成的 TeX 文件。这个想法是用适合您需要的东西替换声明。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
(当你在 a 时这很糟糕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/