如何才能轻松地避开标题为“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}