如果 latex 无法自动执行此操作,则在 siunitx 中引入数字和单位之间的换行符

如果 latex 无法自动执行此操作,则在 siunitx 中引入数字和单位之间的换行符

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

相关内容