我正在尝试排版一个两列的表格,其中每列由段落组成,右侧列中的段落设置为不规则左对齐。以下是我认为可行的代码的最小示例:
\documentclass{article}
\usepackage{array}
\newcommand{\lorem}{Lorem ipsum dolor sit amet, consectetur adipisicing elit.}
\begin{document}
\begin{tabular}{p{50mm}>{\raggedleft}p{50mm}}
\lorem&\lorem\\
\lorem&\lorem
\end{tabular}
\end{document}
但是,这会产生错误消息
! Extra alignment tab has been changed to \cr.
<recently read> \endtemplate
l.7 \lorem&
\lorem
?
而且输出也完全不是我所期望的。
有没有更好的办法?
答案1
您必须在插入开关后恢复\\
使用,如上一列所示。请参阅tabular
\raggedleft
大批手册了解详情。
\documentclass{article}
\usepackage{array}
\newcommand{\lorem}{Lorem ipsum dolor sit amet, consectetur adipisicing elit.}
\begin{document}
\begin{tabular}{p{5cm}>{\raggedleft\arraybackslash}p{5cm}}
\lorem&\lorem\\
\lorem&\lorem
\end{tabular}
\end{document}
答案2
有没有更好的办法?
我会说是的。我建议改用\RaggedLeft
:不需要\arraybackslash
修复,并且理由更充分,因为 p 列中有连字符。
解释:
为了更好地说明,让我们减少 p 列的宽度。方法如下\raggedleft
:
\documentclass{article}
\usepackage{array}
\newcommand{\lorem}{Lorem ipsum dolor sit amet, consectetur adipisicing elit.}
\begin{document}
\begin{tabular}{p{30mm}>{\raggedleft\arraybackslash}p{30mm}}
\lorem&\lorem
\end{tabular}
\end{document}
现在我们改变:
\usepackage{ragged2e}
...
\begin{tabular}{p{30mm}>{\RaggedLeft}p{30mm}}
它不再那么参差不齐,因为现在支持连字符,就像左边的 p 单元格一样。
进一步说明:
p 单元格的内容完全对齐。这可能会导致单词之间出现不必要的间隙,并且与右侧参差不齐的方式不匹配。
\RaggedRight
左侧 p 单元格的 A 可能是一个好主意,而且一致。特别是在窄列中,额外插入
\hspace{0pt}
可确保正确连字。否则,TeX 不会对框中的第一个单词进行连字。
由于新的列类型使一切变得更容易,我的选择是
\newcolumntype{L}[1]{>{\RaggedRight\hspace{0pt}}p{#1}}
\newcolumntype{R}[1]{>{\RaggedLeft\hspace{0pt}}p{#1}}
在正文中我只需要写
\begin{tabular}{L{30mm}R{30mm}}
答案3
在表格的最后一列使用 \raggedleft\arraybackslash。例如,这是在最后一列创建一个勾选框的函数的一部分(在这种情况下是最右边的空框)
\raggedleft\arraybackslash\ifnum#2[3]=0{\emptyTick}\else{\crossedTick}\fi\\
以下是完整的代码示例回购