据我所知,Tab 键没有任何作用,因此可以安全使用而不会改变输出。
我在 Google 上搜索过,但什么也没找到。通常都是关于 tab 命令的。
答案1
Tab 键的效果完全取决于操作系统如何解释该键、编辑器如何处理操作系统解释的结果,以及最后 TeX 如何在特定上下文中解释编辑器处理的结果。
在我的计算机上,Kile 当前配置为,如果我在将模式设置为 LaTeX 的情况下编辑文件,则按 Tab 键会插入空格。默认情况下,.tex
例如,目前所有文件和一些其他源文件都是如此。
直到最近,我才将 Kile 配置为在这种情况下插入制表符。然而,这会导致各种问题,所以我改变了配置。
标记的键和插入制表符之间的联系并没有什么不可侵犯的tab
。无论输入是否是制表符,编辑器都可能会进一步转换输入。
这一点可能看起来有些迂腐。但事实并非如此。因为如果按 Tab 键对排版文档产生了您不喜欢的影响,您可以选择其他方法。
一是停止在有问题的地方使用该键。我可以用这种方式解决制表符引起的问题:我可以使用空格键。但那会很麻烦。我想要在特定位置输入特定数量的空格。我不想必须在正确的位置插入正确的数字。
但这不是唯一的选择。另一个选择是改变密钥对源代码的影响。
这可以在操作系统/桌面环境/GUI 或终端配置级别完成。如果您像我一样觉得 CapsLock 很麻烦,因为您没有意识到自己已经打开了它,那么这是一个不错的选择。您可以将 CapsLock 变成另一个 Ctrl 键或使用它来输入字符。
或者也可以通过编辑器来完成,对于这种情况来说,这是一个更好的选择。它不仅可以避免在与 TeX 无关的应用程序中改变键的效果。它还允许更细粒度的控制。您可能希望键在.bib
文件中执行不同的操作。或者在.sh
文件中。
答案2
让我们看看latex.ltx
,我们在哪里找到
277 \catcode`\{=1 % left brace is begin-group character
278 \catcode`\}=2 % right brace is end-group character
279 \catcode`\$=3 % dollar sign is math shift
280 \catcode`\&=4 % ampersand is alignment tab
281 \catcode`\#=6 % hash mark is macro parameter character
282 \catcode`\^=7 % circumflex and uparrow are for superscripts
283 \catcode`\_=8 % underline and downarrow are for subscripts
284 \catcode`\^^I=10 % ascii tab is a blank space
这基本上从一开始就没有改变plain.tex
,最后一行是当前问题所感兴趣的。
它表示 ASCII 字符编号 9 被分配了类别代码 10。等等,编号 9 在哪里?根据 TeX 惯例,^^I
这相当于键入与 64 相差的字符I
(加或减,取决于哪个给出 0 到 127 之间的代码点)。由于I
ASCII 中的位置为 73,并且 73+64=137>127,因此我们得出 73-64=9。根据 TeX 的规则,混合物
\catcode`\^^I=10
与输入 相同\catcode 9=10
。
类别代码 10 表示“空格”,基本上,所有具有此类别代码的字符都具有相同的行为。因此,该<tab>
字符在行首和控制字后会被忽略,但在与正常空格(字符代码 32)相同的上下文中会产生空格。
当然,你可以改变类别代码,让角色的行为有所不同。例如,
\documentclass{article}
\catcode`\^^I=12
\begin{document}
a b
\end{document}
(和 之间a
有b
一个<tab>
字符,这个字符可能会在本网站的复制粘贴中丢失)将产生
因为 OT1 编码中的 Computer Modern 字体在插槽 9 中有 Ψ。
但是,如果类别代码没有改变,<tab>
则与空格(或一连串空格,因为标准 TeX 规则)相同。
角色在编辑器窗口中做什么<tab>
又是另一回事。例如,在我的 Aquamacs(Mac OS X 的 Emacs 变体)设置中,角色<tab>
完全不执行任何操作。有些编辑器可能会生成一连串空格,有些编辑器可能会生成真正的<tab>
字符,有些编辑器可能会使用它来移动到标记点。
答案3
tab
您可以在文档中使用它而不改变输出。
然后您可以缩进代码以提高可读性。
例如,emacs 具有自动缩进代码的功能,我认为大多数编辑器都具有此功能。