奇怪的 PDF 输出部分中的数学

奇怪的 PDF 输出部分中的数学

我最近升级了我的计算机,在我的旧电脑上,此代码

\RequirePackage{fix-cm}
\documentclass{scrbook}
\usepackage[no-math]{fontspec}
\usepackage{xunicode,xltxtra} 
\usepackage{mathspec}
% Mathfont
\setmathfont{STIXGeneral}
\usepackage[german]{babel} % Neue Rechtschreibung
\usepackage{hyperref}
\usepackage[all]{hypcap}            % Link to start of figures, not captions

\newcommand{\interpolationOp}[1]{\ensuremath{L_{#1}}}
\begin{document}
    \tableofcontents
    \section{Der Interpolationsfehler
    \texorpdfstring{\( \|f-\interpolationOp{\mathbf{M}}f\| \)}{||f- IMf||} 
    }
\end{document}

将使用 XeLaTeX 生成正确的 PDF-Meta-TOC 和正确的 TOC。

但是现在目录是这样的

TOC 故障

删除 mathspec 或 babel packes 会删除有问题的目录,但我需要这两个包。此外,文件.aux指出

\@writefile{toc}{\contentsline {section}{\numberline {0.1}Der Interpolationsfehler \( \delimiter "026B30D f-\ensuremath  {L_{\mathbf  {M}}}f\delimiter "026B30D  \)}{1}{section.0.1}}

看起来像是TeX正在扩展(但不知何故,因为我换了电脑)\|,尽管来自的提示这里,声明一个强命令是行不通的。

有什么想法,为什么在我的新设置中会出现这种情况(虽然我说不出有什么区别,旧电脑现在不可用,可能是 MacTex 2013 和 2012 之间的区别)?

答案1

问题是\|扩展为

\delimiter "026B30D

.toc文件和引号mathspec加载时会干扰 XeLaTeX。

解决方案:添加

\protected\def\|{\Vert}

到你的序言。但是,如果你在章节标题中使用,问题会是一样的\Vert(不要这样做!)

不要加载xunicodexltxtra。说明需要它们的文档已经过时了。

我不会使用mathspec

\documentclass{scrbook}

\usepackage{unicode-math}
\setmainfont{TeX Gyre Termes} % or any other Times-like font
\setmathfont{XITS Math}

\usepackage[german]{babel} % Neue Rechtschreibung
\usepackage{hyperref}
\usepackage[all]{hypcap}            % Link to start of figures, not captions

\newcommand{\interpolationOp}[1]{\ensuremath{L_{#1}}}
\begin{document}
    \tableofcontents
    \section{Der Interpolationsfehler
    \texorpdfstring{\( \|f-\interpolationOp{\mathbf{M}}f\| \)}{||f- IMf||}
    }
\end{document}

我不会使用任何一个\ensuremath的定义\interpolationOp

答案2

因此,一种肮脏且相当本地化的方式(因为它只影响这一点\section)就是

\texorpdfstring{\( {\protect\|}f-\interpolationOp{\mat{M}}f{\protect\|}\)}{||f- LMf||}

以免它们被扩大。编辑:但当然,这应该在命令中使用,或者 - 甚至更好 - 使用 @egreg 在他的回答中的注释。

相关内容