\mintinline{latex} 和 ToC 的问题

\mintinline{latex} 和 ToC 的问题

我想在章节标题中使用 LaTeX 代码高亮功能。在标题本身中它可以工作,但在目录中则不行。下面是一个简单示例:

\documentclass{scrartcl}
\usepackage{minted}

\begin{document}

\tableofcontents

\section{\mintinline{python}{print ``this''}}
\mintinline{python}{print ``this''}

\section{\mintinline{latex}{\documentclass[]{}}}
\mintinline{latex}{\documentclass[]{}}

\end{document}

以及相应的输出:

enter image description here

文件中的完整错误.toc如下:

\GenericError { }{LaTeX Error: Can be used only in preamble}{See the LaTeX manual or LaTeX Companion for explanation.}{Your command was ignored.\MessageBreak Type I <command> <return> to replace it with another command,\MessageBreak or <return> to continue without it.

对于如何允许\mintedinline目录条目,有什么想法吗?

答案1

您要么增强\minline命令,要么在部分命令中使用\protect。但是,这并不能防止将\GenericError问题分解为各个部分。您应该使用可选参数,并对诸如这样的命令\section使用显式参数,否则将直接打印到,从而导致文件中出现两个语句。\protect\documentclass\mintinline\documentclassToCdocumentclass

但是,我怀疑将此文本放在章节标题和目录中的实用性!

\documentclass [A4]{scrartcl}
\usepackage{minted}
\usepackage{etoolbox}

\robustify\mintinline

\begin{document}

\tableofcontents

\section{\protect\mintinline{python}{print ``this''}}
\mintinline{python}{print ``this''}

\section[\mintinline{latex}{\protect\documentclass[]{}}]{\mintinline{latex}{\documentclass[]{}}}
\mintinline{latex}{\documentclass[]{}}



\end{document}

enter image description here

相关内容