处理文本中的特殊 LaTeX 字符

处理文本中的特殊 LaTeX 字符

我有一个用于书籍章节的 LaTeX 文件,可能需要在某个时候将其转换为 Word,因为这是出版商使用的格式(叹气)。这篇文章中没有任何数学内容,但我仍然使用 LaTeX,因为即使不写数学,它也比其他选择要好。不幸的是,我大量使用了只应该出现在数学环境中的字符,特别是下划线字符 ( _)。我确实在几个地方使用了数学环境,但只是非常短暂地使用。

所以,我的问题是,我可以让 LaTeX 为这个特定字符设置例外,并将下划线视为下划线吗?这将使以后转换为 Word 或其他文字处理格式更加容易。另一种方法是\_在很多地方使用。如果有某种方法可以在数学环境中使用下划线,那就更好了,但不确定这将如何工作。需要说明的是,我想要一种可以与任何特殊 LaTex 字符一起使用的通用技术,尽管我认为重新映射大多数其他字符会带来比它本身更多的麻烦。

我不确定这里要使用什么标签,所以请随意添加。谢谢。

编辑:原来这是常见问题解答 -如何排版下划线字符

答案1

对于下划线来说,这很容易:

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

\catcode`_=12
\begingroup\lccode`~=`_\lowercase{\endgroup\let~\sb}
\mathcode`_="8000

\begin{document}
Under_score but $a_{x}$
\end{document}

实际上这句话\mathcode`_="8000是多余的,但重复它使我们的意图更加明确。

我们让该字符_“数学活跃”,即,它的行为类似于宏,但仅限于数学模式。这个\begingroup\lccode...技巧将此宏定义为等同于,而\sb这又等同于通常_引入下标的方式。为了使它真正被视为数学活跃字符,我们需要给它类别代码 12,这也使它可打印(在数学模式之外)。但是,我们需要一种在正确位置有下划线的字体,因此我们加载 T1 输出编码。

其他特殊字符必须以不同的方式处理。例如,$可以通过以下方式“中和”该符号:

\usepackage{fixltx2e}
\catcode`$=12

在序言中;该包是必需的,因为它“增强”了\(\)命令。当然,现在必须使用这些命令输入内联公式。

对于&,可以说

\def\AM{&}
\catcode`&=12

并用于\AM在表格环境中标记对齐点。

此外,#角色可以被中和,只要在说完

\catcode`#=12

不会尝试定义新的命令。

但是,我不建议更改 catcode(也许除了下划线以外)。如果要转换为其他格式,则“搜索和替换”更安全。

答案2

包裹underscore使其_行为与文本模式一样\textunderscore,但不影响数学模式的行为。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{underscore}

\begin{document}
Under_score but $a_{x}$
\end{document}

相关内容