amsmath“\substack”-章节标题中的命令

amsmath“\substack”-章节标题中的命令

我确实\substack在文本中使用了 -command 来创建一个小的 (2,1)-Vector。不幸的是,它在章节标题中不起作用。

这是一个最小的例子,但它不起作用:

\documentclass{scrreprt}
\usepackage{amsmath}
\begin{document}
\section{$\substack{ a\\b }$}
\end{document}

令我惊讶的是,如果我使用\section*而不是 ,它就会起作用\section。我对 TeX 的了解还远远不够,无法说出为什么会发生这种情况,但有人可以给我建议如何修复它吗?

PS:我也尝试用 来替换\substacksmallmatrix前两次编译文件时确实有效。第三次编译后,我遇到了同样的问题。

编辑:使用 -command 解决了问题\protect。但现在我想使用 -class 对 beamer 演示文稿使用相同的 sectiontitle beamer。使用 -command 时也\protect收到错误。我该如何解决这个问题?

答案1

\substack在 LaTex 中,这是一个脆弱的命令,在章节标题和说明被写入外部文件以生成目录等情况下需要保护。请参阅脆弱命令和坚固命令之间有什么区别?有关脆弱命令的更多信息。

示例输出

\documentclass{scrreprt}

\usepackage{amsmath}

\begin{document}
\tableofcontents

\section{$\protect\substack{ a\\b }$}

\end{document}

如果你已经hyperref加载了该包,那么你还需要通过以下方式提供纯文本版本

\section{\texorpdfstring{$\protect\substack{ a\\b }$}{a/b}}

最后,如果使用该类,beamer则会出现 beamer 重新定义的额外问题\\。在这种情况下,一种解决方法是定义要在标题中使用的自定义命令:

\documentclass{beamer}

\usetheme{Warsaw}

\usepackage{amsmath}
\DeclareRobustCommand{\myfr}{\texorpdfstring{$\substack{a\\b}$}{a/b}}

\begin{document}

\section{\myfr}

\begin{frame}
  Test.
\end{frame}
\end{document}

请注意,您可以从一开始就使命令变得强大。

Beamer 示例

相关内容