表格:指定中断建议以避免消息不完整

表格:指定中断建议以避免消息不完整

考虑以下 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 bbaa--\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}

结果

相关内容