无法在 pdfpages 的 addtotoc 中添加一些数学运算

无法在 pdfpages 的 addtotoc 中添加一些数学运算

以下 MCE 表明pdfpages'addtotoc选项即使对于基本数学运算也能正常工作,但是,如果取消注释注释行,则表明它不适用于不太基本的数学运算(此处\mathbf,尽管此命令在通常的 ToC 中工作良好),编译失败并出现错误:

! Undefined control sequence.
\GenericError  ...                                
                                                    #4  \errhelp \@err@     ...
l.11   }]{example-image.pdf}

\protect之前添加\mathbf{R}^{n}没有帮助。

您是否了解发生了什么情况以及如何解决它?

\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\tableofcontents
\includepdf[
  pages=-,
  addtotoc={
    1,section,1,{No math},ex-1
    , 1,section,1,{Basic math: $R^{n}$},ex-2
    % , 1,section,1,{Not so basic math: $\mathbf{R}^{n}$},ex-3
  }]{example-image.pdf}
\section{$\mathbf{R}^{n}$}
\end{document}

答案1

pdfpages 使用起来\edef有点频繁......

\documentclass{article}
\usepackage{pdfpages}
\makeatletter
\define@key{pdfpages}{addtotoc}{\protected@edef\AM@toclist{#1,}}%replace \edef
\makeatother

\begin{document}
\tableofcontents  
\includepdf[
  pages=-,
  addtotoc={
    %1,section,1,{No math},ex-1
    %, 1,section,1,{Basic math: $R^{n}$},ex-2
     1,section,1,{Not so basic math: $\mathbf{R}^{n}$},ex-3
  }]{example-image.pdf}
\section{$\mathbf{R}^{n}$}
\end{document}

答案2

这是一种可能性。

unicode-math可以使用\symbf{<characters>}适用于希腊字母和拉丁字母的。

使用 xelatex 或 lualatex 进行编译。

粗体数学符号

\documentclass{article}

\usepackage{unicode-math}% added <<<<<<<<
\setmathfont{XITSMath-Regular.otf}% added <<<<<<<<

\usepackage{pdfpages}
\begin{document}
    \tableofcontents
    \includepdf[
    pages=-,
    addtotoc={
        1,section,1,{No math},ex-1
        , 1,section,1,{Basic math: $R^{n}$},ex-2
         , 1,section,1,{Not so basic math: $\symbf{R}^{n}$},ex-3 %changed <<<<<
    }]{example-image.pdf}
    \section{$\mathbf{R}^{n}$}
\end{document}

A

或者

\documentclass{article}

\usepackage{fontspec} % added <<<<
\usepackage{unicode-math}% added <<<<

\usepackage{pdfpages}
\begin{document}
    \tableofcontents
    \includepdf[
    pages=-,
    addtotoc={
        1,section,1,{No math},ex-1
        , 1,section,1,{Basic math: $R^{n}$},ex-2
         , 1,section,1,{Not so basic math:  $\mathbf{R}^{n}$},ex-3
    }]{example-image.pdf}
    \section{$\mathbf{R}^{n}$}
\end{document}

答案3

最后,我找到了一个解决方案。如下面的 MCE 所示,\textit使用 来阻止罪魁祸首命令的扩展就足够了(对于带有参数的命令,也许是必要的:参见 )\noexpand

\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\tableofcontents
\includepdf[
  pages=-,
  addtotoc={
    1,section,1,{No math},ex-1
    , 1,section,1,{Basic math: $R^{n}$},ex-2
    , 1,section,1,{Not so basic math: {$\noexpand\mathbf{R}^{n}$}},ex-3
    , 1,section,1,{Not so basic command: \noexpand\textit{Foo}},ex-4
  }]{example-image.pdf}
\section{$\mathbf{R}^{n}$}
\end{document}

相关内容