选项 2:microtype

选项 2:microtype

我必须在文档中列出几个长数字。这些数字不应被视为常规数字,而应被视为数据。所以我不想用 来格式化它们,而是用\num{<...>}\texttt{<...>}让它们以打字机字体显示,就像代码一样。它们无法近似。这些数字中每个数字的最后一位数字与第一位数字一样重要。

不幸的是,当这些数字出现在行尾时,它们的长度有时会超出周围行的长度相当大。

例子:

\documentclass{article}

\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut sit amet ornare eros. Vivamus ac bibendum sapien. Morbi efficitur iaculis elit et pellentesque. Maecenas fermentum augue non tortor rutrum, vel malesuada nunc venenatis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Integer fringilla. Suspendisse ac scelerisque tortor \texttt{1937294810383219482}. Pellentesque at iaculis risus. Curabitur porta ante non nunc eleifend, sit amet porta enim congue. Nullam semper fringilla suscipit. Nam ac elementum eros. Vivamus sed quam fringilla, tristique odio a, pretium lacus.
\end{document}

我可以告诉 LaTeX 提前结束该行并继续下一行吗?

由于它不是 URL,我可能不应该将数字放入其中\url{<...>}。这是在谷歌搜索问题时经常出现的解决方案。我不能使用这个答案因为这些数字不能用连字符连接。其中大约一半实际上是负数,我不希望读者对我提到的数字以及哪些数字块属于同一个数字感到困惑。

答案1

与一般装满的箱子一样,您有很多选择:

  1. 手动重写段落,直到输出结果正确为止,
  2. 添加\usepackage{microtype}(通常很有效),
  3. 允许更多连字符(您曾说过您不想要这个),
  4. 允许在更多的地方休息(你说过你不想在这里休息),
  5. 稍微增加\tolerance和(例如用或),\emergencystretch\sloppysloppypar
  6. 增加\emergencystretch很多,
  7. 只允许那一行不整齐(你在这里要求的),
  8. 完全放弃两端对齐的排版,而使用右对齐的排版。

以下是其中一些选项的示例:

选项 2:microtype

虽然不能解决所有问题,但是确实很容易解决,而且副作用很小。

\documentclass{article}
\usepackage{microtype}
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut sit amet ornare eros. Vivamus ac bibendum sapien. Morbi efficitur iaculis elit et pellentesque. Maecenas fermentum augue non tortor rutrum, vel malesuada nunc venenatis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Integer fringilla. Suspendisse ac scelerisque tortor \texttt{1937294810383219482}. Pellentesque at iaculis risus. Curabitur porta ante non nunc eleifend, sit amet porta enim congue. Nullam semper fringilla suscipit. Nam ac elementum eros. Vivamus sed quam fringilla, tristique odio a, pretium lacus.
\end{document}

微型

选项 5:使用\sloppysloppypar

什么:使用\sloppy或环境sloppypar,增加\tolerance\hfuzz\emergencystretch一点点;见这里为了什么\sloppy

优点:不是最糟糕的排版。大多数情况下可以避免行数过满。

缺点:排版比平时更差。不是保证不是为了防止线路过满。

\documentclass{article}
\begin{document}
\begin{sloppypar}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut sit amet ornare eros. Vivamus ac bibendum sapien. Morbi efficitur iaculis elit et pellentesque. Maecenas fermentum augue non tortor rutrum, vel malesuada nunc venenatis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Integer fringilla. Suspendisse ac scelerisque tortor \texttt{1937294810383219482}. Pellentesque at iaculis risus. Curabitur porta ante non nunc eleifend, sit amet porta enim congue. Nullam semper fringilla suscipit. Nam ac elementum eros. Vivamus sed quam fringilla, tristique odio a, pretium lacus.
\end{sloppypar}
\end{document}

马虎

选项 6:\emergencystretch大幅增加

什么:增加到\emergencystretch一个大得可笑的值。

优点:如果有可能将内容放在一行上(例如,没有不可破坏的文本长度超过一行的宽度),那么就可以这样做。

缺点:该线会看起来很丑陋,因为有很多拉长。

\documentclass{article}

\begin{document}

{\emergencystretch=\maxdimen
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut sit amet ornare eros. Vivamus ac bibendum sapien. Morbi efficitur iaculis elit et pellentesque. Maecenas fermentum augue non tortor rutrum, vel malesuada nunc venenatis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Integer fringilla. Suspendisse ac scelerisque tortor \texttt{1937294810383219482}. Pellentesque at iaculis risus. Curabitur porta ante non nunc eleifend, sit amet porta enim congue. Nullam semper fringilla suscipit. Nam ac elementum eros. Vivamus sed quam fringilla, tristique odio a, pretium lacus.

}
\end{document}

输出

选项 7:允许在texttt

(您在此处要求的是:我认为输出是有问题的,但请您自行决定。)

这可以通过正确的盒子、粘合和惩罚顺序来实现:首先,粘合拉伸 X,然后是惩罚(允许中断),然后是拉伸 -X 的粘合。这样,如果没有中断,粘合就会取消,而如果中断了,你就为线增加了 X 的可拉伸性。

\documentclass{article}

% Like \texttt, but allows the previous line to end early if it won't fit.
\newcommand{\ttbreakbefore}[1]{%
  \hskip 0pt plus 1fil\relax
  \penalty0
  \hskip 0pt plus -1fil\relax
  \texttt{#1}%
}

\begin{document}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut sit amet ornare eros. Vivamus ac bibendum sapien. Morbi efficitur iaculis elit et pellentesque. Maecenas fermentum augue non tortor rutrum, vel malesuada nunc venenatis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Integer fringilla. Suspendisse ac scelerisque tortor \ttbreakbefore{1937294810383219482}. Pellentesque at iaculis risus. Curabitur porta ante non nunc eleifend, sit amet porta enim congue. Nullam semper fringilla suscipit. Nam ac elementum eros. Vivamus sed quam fringilla, tristique odio a, pretium lacus.

\end{document}

输出带有锯齿状线条

在实践中,您可能可以使添加的拉伸更小(这意味着在较早的线上拉伸不那么尴尬):例如用13pt而不是 (无限)1fil,可以得到:

13 点

并且可以根据需要增加该值,在拉伸空间和在末尾留下空白之间进行权衡。

相关内容