我有一堆表格,其中一些表格有很多列。由于 latex 没有对第一个单词进行连字符连接,因此表格单元格中的文本有时会超出表格的边界。如下所示:
这就是我的表格在乳胶中的样子,带有小页面的长表。
\begin{longtable}[]{@{}llllll@{}}
\toprule
\begin{minipage}[b]{0.19\columnwidth}\raggedright
Col1\strut
\end{minipage} &
\begin{minipage}[b]{0.23\columnwidth}\raggedright
Col2\strut
\end{minipage} &
\begin{minipage}[b]{0.09\columnwidth}\raggedright
Col3\strut
\end{minipage} &
\begin{minipage}[b]{0.11\columnwidth}\raggedright
Col4\strut
\end{minipage} &
\begin{minipage}[b]{0.15\columnwidth}\raggedright
Col5\strut
\end{minipage} &
\begin{minipage}[b]{0.07\columnwidth}\raggedright
Col6\strut
\end{minipage}\tabularnewline
\midrule
\endhead
\begin{minipage}[t]{0.19\columnwidth}\raggedright
preoccupation\strut
\end{minipage} &
\begin{minipage}[t]{0.23\columnwidth}\raggedright
inappropriate\strut
\end{minipage} &
\begin{minipage}[t]{0.09\columnwidth}\raggedright
responsibility\strut
\end{minipage} &
\begin{minipage}[t]{0.11\columnwidth}\raggedright
consciousness\strut
\end{minipage} &
\begin{minipage}[t]{0.15\columnwidth}\raggedright
preoccupation\strut
\end{minipage} &
\begin{minipage}[t]{0.07\columnwidth}\raggedright
infrastructure\strut
\end{minipage}\tabularnewline
\bottomrule
\end{longtable}
我知道在第一个单词前加上 \hspace{0pt} 就能得到我想要的结果,所以我尝试重新定义 minipage 环境。像这样:
\let\oldminipage\minipage
\let\endoldminipage\endminipage
\renewenvironment{minipage}{
\oldminipage \hspace{0pt} }{
\endoldminipage}
使用这段代码,我收到此错误:
[3] [4]
! Missing number, treated as zero.
<to be read again>
\protect
l.597 \begin{minipage}
[b]{0.19\columnwidth}\raggedright
?
知道为什么这不起作用吗?这不可能吗?
答案1
由于 Latex 没有对 [段落、表格单元格的] 第一个单词进行连字符连接...
我能想到两种补救措施:
如果您可以自由使用 LuaLaTeX,那么段落/表格单元格的第一个单词不会被连字符的限制将不再存在。
如果必须使用 pdfLaTeX 或 XeLaTeX,请务必加载包(或自动加载的
array
包,例如),并将列类型从 扩充为、到 等。这样,单元格的第一个“单词”是不可见的项目“\hspace{0pt}”,并且任何后续单词不再是“第一个”单词。tabularx
array
p{2in}
>{\hspace{0pt}}p{2in}
X
>{\hspace{0pt}}X
看不到minipage
……
\documentclass{article}
\usepackage[english]{babel}
\usepackage{array,booktabs,ragged2e}
\newcolumntype{C}[1]{>{\Centering\hspace{0pt}}p{#1}} % note "\hspace{0pt}" item
\begin{document}
\begin{tabular}[t]{@{} *{4}{p{1cm}} @{}}
\toprule
Preoccupation & Inappropriate & Responsibility & Consciousness \\
\midrule
\end{tabular}
\qquad\qquad\qquad
\begin{tabular}[t]{@{} *{4}{C{1cm}} @{}}
\toprule
Preoccupation & Inappropriate & Responsibility & Consciousness \\
\midrule
\end{tabular}
\end{document}