简而言之,下面的代码无法编译:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{figure}
\caption{
poly\nobreakdash-Si
}
\end{figure}
poly\nobreakdash-Si % move this to before figure caption and it works
\end{document}
但是,正如代码注释中指出的那样,如果该命令在图形标题中使用该命令之前已经在文档正文中使用过,那么它就会进行编译(并在更复杂的示例中产生所需的结果)。
为什么会发生这种情况?
错误消息是! Argument of \@tempb has an extra }.
我已在 TeX Live 2017 和 2020 中使用 pdflatex 和 lualatex 测试过这一点。
答案1
amsmath
latex 包含命令的更好版本\nobreakdash
。它与和一起\nobreakdashes
使用,重要的是,它很强大,因此可以在节标题中使用。--
---
\documentclass{article}
%\usepackage{amsmath}
\begin{document}
\begin{figure}
\caption{
poly\nobreakdashes-Si
}
\end{figure}
poly\nobreakdashes-Si % move this to before figure caption and it works
\end{document}