.toc 文件没有写入右括号

.toc 文件没有写入右括号

我有一个宏用于编写 SI 单位,该单位以数字作为可选参数,但当这些宏用于 ToC 条目时,文件.toc不会为可选参数写入右括号,从而.toc在重新编译期间弄乱该文件。这是一个可以修复的问题吗?

分数维:

\documentclass[10pt,a4paper,twoside]{article}
\usepackage{siunitx,xstring}
\usepackage[hidelinks]{hyperref}

\ExplSyntaxOn % Used for many other macros, so keeping this would be very nice
\NewDocumentCommand \meter {o o} {
    \IfValueTF{#1} {
        \IfValueTF{#2} { \ensuremath{\SI{#2}{#1\meter}} }
        { \IfDecimal{#1} { \ensuremath{\SI{#1}{\meter}} } { \si{#1\meter} } }
    } { \si{\meter} }
}
\ExplSyntaxOff

\begin{document}
\tableofcontents
\section[\meter[0.7]]{\meter[0.8]}
\end{document}

.toc参赛作品:

\contentsline {section}{\numberline {1}\meter [0.7}{1}{section.1}% 

答案1

只是改变

\section[\meter[0.7]]{\meter[0.8]}

\section[{\meter[0.7]}]{\meter[0.8]}

\meter[0.7]即,将位于的可选参数中的表达式括\section在一对花括号中。这样,LaTeX 就可以获得所需的帮助,以正确解析的参数\section

相关内容