我正在使用LuaLaTeX
带有类的编译器KOMA-scrbook
。
我需要定义一个带有上标文本的命令,但我不知道为什么 LaTeX 禁用带有上标文本的单词的连字符。
\documentclass{scrbook}
\usepackage[USenglish]{babel}
\begin{document}
\parbox{0.1cm}{
advanced, however}
\parbox{0.1cm}{
advanced,\textsuperscript{1} however\textsuperscript{2}, maybe\textsuperscript{†}}
\end{document}
为什么“advanced”和“however”这两个词与一起使用时没有连字符\textsuperscript
?
答案1
\textsuperscript
是使用 TeX 的数学模式实现的,因此however\textsuperscript{1}
其行为类似于however$abc$
。由于内联数学公式未与单词分开,并且部分由数学表达式组成的“单词”的连字符定义并不明确,因此 TeX 不会尝试对此类结构进行连字符处理。
您可以通过添加显式的 来告诉 LuaTeX 前一个单词已结束\wordboundary
:
\documentclass{scrbook}
\usepackage[USenglish]{babel}
\begin{document}
\parbox{0.1cm}{
advanced, however}
\parbox{0.1cm}{
advanced,\wordboundary\textsuperscript{1} however\wordboundary\textsuperscript{2}, maybe\wordboundary\textsuperscript{†}}
\end{document}
答案2
另一个解决方法是使用具有真实的上标,如 Libertinus、EBGaramond、Erewhon 等,与realscript
包一起。然后您的示例就可以开箱即用。
\documentclass{scrbook}
\usepackage[USenglish]{babel}
\usepackage{realscripts} % loads fontspec
\setmainfont{erewhon}
\begin{document}
\parbox{0.1cm}{%
advanced, however, maybe}
\parbox{0.1cm}{%
advanced,\textsuperscript{1} however\textsuperscript{2},
maybe\textsuperscript{†}}
\end{document}