考虑以下 MWE(破折号是必需的)。这将产生Underfull \hbox (badness 10000)
:
\documentclass{article}
\begin{document}
\begin{tabular}{p{2cm}}
aa--bb--cc--dd--ee--ff--gg--hh--jj
\end{tabular}
\end{document}
但是,如果我添加空格,这个错误就会消失。
我的问题是:
- 我怎么能够关闭自动填充(扩大空间以填充整行)用于列或单元格?
- 如何将双破折号/三破折号标记为整个文档的默认换行建议(如空格)?
- (如果这不可能的话)我该如何指定休息建议在文本中不带空格 (
aa--bb--cc
)。例如,我尝试过aa--\break bb
,aa--\allowbreak{}bb
但没有成功(仍然不够满)。
错误消失(但添加了不需要的空间):
\documentclass{article}
\begin{document}
\begin{tabular}{p{2cm}}
aa -- bb -- cc -- dd -- ee -- ff -- gg -- hh -- jj
\end{tabular}
\end{document}
答案1
空间必须去往某处:
\raggedright
将其放在行末。也可以使用\RaggedRight
包。ragged2e
下面的例子也使用了一种灵活的破折号,可以让它变长或变短,以便 TeX 更容易得到对齐的段落。(实验性的,因为我不知道破折号在这种情况下的作用。)
该包
microtype
为字母宽度(HZ 算法)增加了一些灵活性,这为 TeX 的换行算法提供了更多空间,可以更好地换行。此外,光学凸起功能可能会有所帮助。
例子:
\documentclass{article}
\usepackage{microtype}
\usepackage{array}
\newcommand*{\flexdash}[1][--]{%
\leavevmode
\begingroup
\sbox0{#1}% Width of dash as natural width
\sbox2{$\vcenter{}$}% math axis to approximate
% the vertical position of the dash
\nobreak
\leaders\hrule height\dimexpr\ht2 + .1pt\relax
depth\dimexpr-\ht2 + .1pt\relax
\hskip\wd0 plus .4\wd0 minus .2\wd0 %
\penalty\exhyphenpenalty
\endgroup
}
\begin{document}
\begin{tabular}{>{\raggedright}p{2cm}}
aa--bb--cc--dd--ee--ff-gg--hh--jj
\end{tabular}
\medskip
\begin{tabular}{p{2cm}}
aa\flexdash bb\flexdash
cc\flexdash dd\flexdash
ee\flexdash ff\flexdash
gg\flexdash hh\flexdash jj
\end{tabular}
\end{document}