第 12 类 其他角色

第 12 类 其他角色

我正在寻找智慧,即我可能没有考虑到的潜在副作用。下划线很常见,对于没有经验的 LaTeX 用户来说,逃避它很烦人。假设我对数学模式的下标不感兴趣。将下划线设置为非活动字符是否安全?

默认情况下 _ 表示下标,您需要通过在其前面加上 catcode 0 将其转换为文字字符\

把这个放入我的文档中是否会让生活变得更轻松?

第 12 类 其他角色

\catcode`\_=12   % 
\catcode`_=12    % 
\catcode"005F=12 % unicode decimal syntax
\catcode'137=12  % octal syntax
\catcode95=12    % decimal syntax

或者

第 11 类字母字符

\catcode`\_=11   % 
\catcode`_=11    % 
\catcode"005F=11 % unicode decimal syntax
\catcode'137=11  % octal syntax
\catcode95=11    % decimal syntax

我的想法是,如果在正确的时间完成(加载所有包之后)就不会发生这种情况。


笔记

  • 我正在使用xelatexfontspec因此我确保我的所有文档都是 UTF-8 编码的。
  • etoc添加内容\contentsline,这意味着下划线的 catcode 必须在这些宏的定义时间之前更改,否则在\begin{document}下次运行之后读取 .toc 时,\contentsline即使您稍后设置它,下划线也会在宏中被读为 catcode 8,因为该组保护任何定义后更改。

答案1

我认为制作_可打印字符(类别代码 12)没有任何问题,除非字体编码为 OT1,因为使用此编码的字体在插槽处可能没有下划线"5F

如果您使用fontspec,输出字体编码将自动设置为 TU,或者在旧版本中设置为 EU1 或 EU2(取决于 XeLaTeX 或 LuaLaTeX)。这些不是 OT1。

对于偶尔的数学模式下标,您可以使用它\sb来代替通常的下划线。

一个相当简单的例子:

\documentclass[a4paper]{book}

\usepackage{fontspec}

\catcode`_=12

\begin{document}

\frontmatter

\tableofcontents

\mainmatter

\chapter{A title_with_underscores}\label{a_b}

\ref{a_b}

\end{document}

请注意,在将 用作可打印字符之前,必须在 之前进行 catcode 更改_,特别是在\begin{document}LaTeX 读取.aux文件时。

关于要使用的语法,

\catcode`\_=12   % 
\catcode`_=12    % 
\catcode"5F=12   % unicode decimal syntax
\catcode'137=12  % octal syntax
\catcode95=12    % decimal syntax

很好。前两个指定了一个字母常数并且更方便。由于下划线的起始类别代码为 8,因此不需要反斜杠,但这也没什么坏处。

设置_为类别代码 11。这可能会在几种情况下造成伤害;例如

\macro_

将被解释为一个标记。

相关内容