![如果 latex 无法自动执行此操作,则在 siunitx 中引入数字和单位之间的换行符](https://linux22.com/image/398848/%E5%A6%82%E6%9E%9C%20latex%20%E6%97%A0%E6%B3%95%E8%87%AA%E5%8A%A8%E6%89%A7%E8%A1%8C%E6%AD%A4%E6%93%8D%E4%BD%9C%EF%BC%8C%E5%88%99%E5%9C%A8%20siunitx%20%E4%B8%AD%E5%BC%95%E5%85%A5%E6%95%B0%E5%AD%97%E5%92%8C%E5%8D%95%E4%BD%8D%E4%B9%8B%E9%97%B4%E7%9A%84%E6%8D%A2%E8%A1%8C%E7%AC%A6.png)
我有一个与此相关的问题:如何换行 siunitx 单元。在我的例子中,有些段落allow-number-unit-breaks=true
在某些情况下甚至没有中断(见下面的例子)。我明白为什么 Latex 会出现问题,因为一个段落中有太多长单元,但这让我很不开心。
在长达 100 页的论文中,这种情况发生过几次,所以我正在寻找任何比在打印之前手动换行更好的解决方案,因为我认为这真的很可怕。
谢谢您抽出时间,任何帮助我都深表感谢。
\documentclass{article}
\usepackage[version=3]{mhchem}
\usepackage{amsmath}
\usepackage[
allow-number-unit-breaks=true
]{siunitx}
\DeclareSIUnit[]{\tco}{\text{$\textup{t}_{\textup{\ce{CO2}eq.}}$}}
\DeclareSIUnit[]{\teth}{\text{$\textup{t}_{\textup{Eth.}}$}}
\begin{document}
For the initial scenario assumptions, the conventional system yields emissions of \SI{5.00}{\tco\per\teth}, \SI{5.00}{\tco\per\teth} \SI{5.00000}{\tco\per\teth} \SI{5.00}{\tco\per\teth} \SI{5.00}{\tco\per\teth}the second system of \SI{5.00}{\tco\per\teth} and the third of \SI{10.7}{\tco\per\teth}, making the conventional system favourable in terms of emissions.
\end{document}
答案1
这里的问题实际上是您的单元太长了。TeX 不想在您的 MWE 中执行有问题的换行符,因为那会很糟糕(您会得到一个Underfull \hbox
)。为了解决这个问题,您可以尝试缩短您的单元。
- 首先,你的单位定义有点过于复杂。你可以直接使用
具有相同的输出。\DeclareSIUnit{\tco}{{t_{\ce{CO2}eq.}}} \DeclareSIUnit{\teth}{{t_{Eth.}}}
- 如果您不介意不同的风格,您可以使用选项
per-mode=symbol
,这会使单元稍微短一些。在您的 MWE 中,这已经足够了。但它可能不在您的实际文档中。 - 一个甚至更短的替代方法是
per-mode=fraction
,尽管由于单位中的嵌套下标,这可能被认为太小或太丑。 - 您可以通过省略单位中的外部组来允许单位的指数位于其下标之上(就像常规符号一样):
\DeclareSIUnit{\tco}{t_{\ce{CO2}eq.}} \DeclareSIUnit{\teth}{t_{Eth.}}
- 你可以让单位符号本身更短,例如
当然,\DeclareSIUnit{\tco}{{t_c}} \DeclareSIUnit{\teth}{{t_e}}
per-mode
如果您愿意的话,您还可以省略外部组并更改。