额外的括号如何影响文档中项目的放置?

额外的括号如何影响文档中项目的放置?

我正在通过一些外部 BASH 脚本放置我的一些文档,但想保护一些信息,以便脚本不会更改它们。对我来说最简单的选择是将重要区域放在{周围},并让 BASH 脚本知道它应该忽略这些部分。

  • {总是}出现在同一个句子中并且不会跨越两个或多个句子。
  • 有时{必须}放置在数学模式环境或环绕宏内。

据我所知,当{}放在句子的一部分或数学模式中时,它们在编译时是不可见的。真的是这样吗?这会改变一些东西吗,比如单词之间的间距、句子的换行符或文本的外观?

  • 额外的{}真的没有效果吗?
  • 我可以将哪些字符放入文档中以便xelatex完全忽略?

答案1

{}在单词中间可能会阻止字距调整:比较AVA{}V。(正如 David Kastrup 指出的那样,如果 TeX 尝试对单词 where's the empty group 进行连字,则空组不会执行任何操作。)另一方面,将一组单词放在段落中的括号内不会执行任何操作;当然,在括号内进行的分配不会在括号外保留。

相反,在数学模式下,括号组会产生一个子公式,然后将其视为单个对象(准确地说,是普通原子)。但是,在这方面,命令的括号参数不算作括号组。

$a+b$键入和完全不同$a{+}b$:前者+是二元运算符号,后者不是。$x=0$和之间也有细微的差别${x=0}$。 在后者中,符号被分配了适当的类别(= 被视为关系符号),但空格参与到同一行中其他空格的拉伸或收缩中。后一个公式中不允许 TeX 在 之后断行=,而前一个公式中允许(但这不是禁止这种断行的好方法,$x=\nobreak 0$更好)。

数学模式中的空组是不是忽略:就间距而言,它被视为普通原子:比较$-1$${}-1$

因此,一般来说,应该避免在数学公式中使用支撑群,尽管它们在特定情况下有其用途。

你可以做的是使用一些在传递信息时被剥离的分隔符。或者,选择两个你确定不会在 TeX 文件中使用的字符,例如,作为 Bash 的分隔符,在文档的序言中说

\catcode`\⟦=9
\catcode`\⟧=9

这将告诉 XeTeX 忽略这两个字符。

答案2

在某些地方插入括号可能会导致排版出现差异。但是,这可能很大程度上取决于括号的使用。因此,以下是一些注意事项:

在此处输入图片描述

\documentclass{article}
\begin{document}
Here is some {text} that {should {be {left} unaffected} by braces. 
In {text mode}, this is not a problem}. In math mode, there may be problems. Compare
\[
  y-2+x\ \textrm{with}\ y{-2+x}.
\]
It may be a problem with {\TeX\ } since you don't need a control space afterward.
If you use \TeX\ with a control space it works.
\end{document}

在数学模式中可以看到间距的差异,其中-从二元运算符(第一个实例)更改为一元运算符(第二个实例)。此外,{\TeX\ }与 相比,通过括号分组会导致双倍间距\TeX\。由于您可能需要成对使用这些“不接触”分隔符,因此许多(如果不是全部)非排版符号/控制序列的组合可能会导致间距问题。

另一种方法是编写“逐字”或“不执行任何操作”的宏

\newcommand{\donttouch}[1]{#1}

它只是排版其参数而不执行任何操作。这可能会迫使您正确排版文档,但也允许在解析源文件时利用某些功能。

相关内容