如何转义章节标题中的纯文本?

如何转义章节标题中的纯文本?

如何才能轻松地避开标题为“zażółć gęślą jaźń”或“\newline 是 LaTeX 中的新行”的部分?可以肯定的是,那里没有任何内容应被视为 LaTeX 格式。

对于普通文本有一个很好的解决方案,描述如下我怎样才能逃脱纯文本?

不幸的是它失败了\section{}

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{fvextra}
\DefineVerbatimEnvironment{escape}
  {Verbatim}
  {fontfamily=\rmdefault,breaklines,breaksymbolleft={}}

\begin{document}

\tableofcontents
\newpage
\section{\begin{escape}\newline\end{escape}}
\begin{escape}
red fox
sauté
zażółć gęślą jaźń
\newline is a new line in LaTeX
Samp_Dist_Corr
whatever whatever whatever whatever whatever whatever whatever whatever whatever whatever whatever
\end{escape}

\end{document}

失败

! Argument of \FV@BeginScanning has an extra }.
<inserted text> 
                \par 
l.14 \section{\begin{escape}\newline\end{escape}}

使用\section{\escape{\newline}}不会改变结果或错误消息。

为了避免 XY 问题:我正在使用pdflatex从纯文本生成 pdf 文件。

答案1

还定义一个内联版本escape并使用cprotect

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{cprotect}
\usepackage{fvextra}
\DefineVerbatimEnvironment{escape}
  {Verbatim}
  {fontfamily=\rmdefault,breaklines,breaksymbolleft={}}
\CustomVerbatimCommand\escapeinline{Verb}{fontfamily=\rmdefault,breaklines,breaksymbolleft={}}

\begin{document}

\tableofcontents

\cprotect\section{\escapeinline|\newline|}

This is inline: \escapeinline|??{xx|

\begin{escape}
red fox
sauté
zażółć gęślą jaźń
\newline is a new line in LaTeX
Samp_Dist_Corr
whatever whatever whatever whatever whatever whatever whatever whatever whatever whatever whatever
\end{escape}

\end{document}

在此处输入图片描述

答案2

verbatim类似命令和环境通常不能在其他命令的参数内工作。ltxdoc.cls例如,定义\cmd\cs解决这个问题。它们不会转义文本序列,但用于打印命令。一个非常简单的建议是使用 TeX 原语\string,但你必须在里面保护它\section

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{fvextra}
\DefineVerbatimEnvironment{escape}
  {Verbatim}
  {fontfamily=\rmdefault,breaklines,breaksymbolleft={}}

% from ltxdoc.cls:
\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
\makeatletter
\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}}
\def\cmd@to@cs#1#2{\char\number`#2\relax}
\makeatother

\begin{document}

\tableofcontents
\newpage
\section{\texttt{\protect\string\newline} \cmd\newline\space and \cs{newline}}
\begin{escape}
red fox
sauté
zażółć gęślą jaźń
\newline is a new line in LaTeX
Samp_Dist_Corr
whatever whatever whatever whatever whatever whatever whatever whatever whatever whatever whatever
\end{escape}

\end{document}

在此处输入图片描述

相关内容