我有一个与此相关的问题:如何换行 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
如果您愿意的话,您还可以省略外部组并更改。