我想在下面的代码中换行。我试了两个版本:版本 1 有整个词条的数学模式,版本 2 只在必要的部分有数学模式。我原本以为版本 2 会换行,因为它就像一个普通的长单词,但它们都不能自动换行。除了手动添加换行符,如何实现换行?谢谢。
\documentclass[review]{elsarticle}
\usepackage{geometry}
\geometry{margin=3cm}
\begin{document}
Version 1:
The sublattice model of $\beta$-MnCr$_2$O$_4$ spinel phase for the current work is assumed to be $(\textrm{Mn}^{2+})_1(\textrm{Cr}^{3+},\textrm{Fe}^{3+},\textrm{Mn}^{3+},\textrm{Va})_2(\textrm{Va})_2(\textrm{O}^{2-})_4$.
Version2:
The sublattice model of $\beta$-MnCr$_2$O$_4$ spinel phase for the current work is assumed to be (Mn$^{2+}$)$_1$(Cr$^{3+}$,Fe$^{3+}$,Mn$^{3+}$,Va)$_2$(Va)$_2$(O$^{2-}$)$_4$.
\end{document}
答案1
TeX 只会在二进制或关系符号处破坏内联公式,而这些不会出现在化学材料中,所以整个部分
(Mn$^{2+}$)$_1$(Cr$^{3+}$,Fe$^{3+}$,Mn$^{3+}$,Va)$_2$(Va)$_2$(O$^{2-}$)$_4$
是一个单一且牢不可破的单位。
在这里混合数学和文本没有帮助,因为这也不会创建断点。
- 没有空格
- 单词连字符仅对长度为 5(3+2)的单词进行(默认情况下),而且无论如何可能不需要
- 如果单词后面或前面直接跟着一些字符,比如 math(没有空格),那么也不会进行连字符连接。
换行也受限制,\tolerance
它告诉 TeX 一行可以达到多“糟糕”的程度。默认情况下,它受到很大限制,因为您需要手动查找和修复糟糕的换行。默认值为 200,如果间距超过该值,TeX 将不会将其视为可能的解决方案。
所以你的选择是
- 当出现错误行时,手动修复(通过添加
\allowbreak
在合适的位置) - 放大
\tolerance
以给予 TeX 更多选项而无需人工干预(取决于您允许的错误解决方案的级别,但始终保持在 10000 以下!) - 或两者结合
- 或使用
\sloppy
应该基本上总是使 LaTeX 换行,但是它可能非常草率,因此得名。
在您的特定示例中,您需要的是\tolerance=1000
(实际上是 722)并且您会得到以下内容:
这不是很好,但是......(\sloppy
在这种情况下你会得到相同的结果,因为 TeX 不会仅仅因为被允许而选择更糟糕的解决方案,但在其他情况下它可能会,所以请你选择)......如果你关心好的排版,那么 1000 已经很糟糕了 --- 我只会在紧急情况下接受它,但你可能会有不同的想法。
在旁边
我不会说化学,所以我不知道,例如公式中逗号后的中断通常是可以接受的,但如果它们是可以接受的或者通常是可以接受的,那么一个简单的解决方案就是做这样的事情(根据需要选择自己的命令名称)
\newcommand\bcomma{,\penalty100\relax}
并将允许中断的逗号替换为该逗号。您可以根据自己希望避免中断的程度选择更高或更低的数字作为惩罚。这样您就可以:
无需人工干预(在简单或不那么简单的查询替换相关逗号之后)。
(
只有在使用类似策略之前才应该发生突破。
您甚至可以更进一步,使 或 (在数学中活跃并扩展到这样的定义,但我可能不会建议这样做,因为如果做得不正确,它可能会相当脆弱。