正在努力使代码的换行功能正常工作,并找到了一个对我有用的解决方案 - 直到我尝试在代码中添加目录。问题似乎在于在(子)节标题内使用新的 \texttt{}。有很多错误,并且目录已损坏(在 Overleaf 上,对于 MWE)- 在我的实际项目中,由于同样的错误,它甚至无法编译。
我正在使用 Steven Segletes 解决方案对 \texttt{} 中的特定字符进行换行:文本中的换行符
错误堆栈以两次“不正确的字母常量。”开始,然后继续“缺少插入 $。”,“缺少插入 }。”,“缺少插入 $。”等等。
我正在用 markdown 编写并使用 pandoc 编译为 tex,所以我真的不想有两个版本的 \texttt(即制作 \textttwrap 或 \textttnowrap 或类似版本)。
我的 MWE(它使用 scrarticle,因为我正在使用它,但问题与 article 相同)。
\documentclass{scrarticle}
\usepackage[utf8]{inputenc}
\catcode`_=12 %
\renewcommand{\texttt}[1]{%
\begingroup
\ttfamily
\begingroup\lccode`~=`/\lowercase{\endgroup\def~}{/\discretionary{}{}{}}%
\begingroup\lccode`~=`[\lowercase{\endgroup\def~}{[\discretionary{}{}{}}%
\begingroup\lccode`~=`.\lowercase{\endgroup\def~}{.\discretionary{}{}{}}%
\begingroup\lccode`~=`_\lowercase{\endgroup\def~}{_\discretionary{}{}{}}%
\begingroup\lccode`~=`:\lowercase{\endgroup\def~}{:\discretionary{}{}{}}%
\catcode`/=\active\catcode`[=\active\catcode`.=\active\catcode`_=\active\catcode`:=\active
\scantokens{#1\noexpand}%
\endgroup
}
\catcode`_=8 %
\title{subsection-texttt-mwe}
\author{c.angustaylor }
\date{January 2021}
\begin{document}
\maketitle
\tableofcontents
\section{Introduction}
\texttt{this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_this_is_long_but_wraps_properly_}
\subsection{\texttt{this_is_tt_subsection}}
Doesn't work with no escapes for \_, which is fine in texttt{} with the solution otherwise.
% \subsection{\texttt{this\_is\_tt\_subsection}}
% Also doesn't work with escapes for \_
\end{document}
答案1
保护\texttt
\subsection{\protect\texttt{this_is_tt_subsection}}
或者使定义具有普遍的稳健性
\DeclareRobustCommand{\texttt}[1]{%
或使用(这需要新的 LaTeX,在旧版 LaTeX 中添加\usepackage{xparse}
):
\RenewDocumentCommand{\texttt}{m}{%