我正在通过一些外部 BASH 脚本放置我的一些文档,但想保护一些信息,以便脚本不会更改它们。对我来说最简单的选择是将重要区域放在{
周围}
,并让 BASH 脚本知道它应该忽略这些部分。
- 和
{
总是}
出现在同一个句子中并且不会跨越两个或多个句子。 - 有时
{
必须}
放置在数学模式环境或环绕宏内。
据我所知,当{
和}
放在句子的一部分或数学模式中时,它们在编译时是不可见的。真的是这样吗?这会改变一些东西吗,比如单词之间的间距、句子的换行符或文本的外观?
- 额外的
{
和}
真的没有效果吗? - 我可以将哪些字符放入文档中以便
xelatex
完全忽略?
答案1
{}
在单词中间可能会阻止字距调整:比较AV
和A{}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}
它只是排版其参数而不执行任何操作。这可能会迫使您正确排版文档,但也允许在解析源文件时利用某些功能。