Tab 键有什么作用吗?

Tab 键有什么作用吗?

据我所知,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 之间的代码点)。由于IASCII 中的位置为 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}

(和 之间ab一个<tab>字符,这个字符可能会在本网站的复制粘贴中丢失)将产生

在此处输入图片描述

因为 OT1 编码中的 Computer Modern 字体在插槽 9 中有 Ψ。

但是,如果类别代码没有改变,<tab>则与空格(或一连串空格,因为标准 TeX 规则)相同。


角色在编辑器窗口中做什么<tab>又是另一回事。例如,在我的 Aquamacs(Mac OS X 的 Emacs 变体)设置中,角色<tab>完全不执行任何操作。有些编辑器可能会生成一连串空格,有些编辑器可能会生成真正的<tab>字符,有些编辑器可能会使用它来移动到标记点。

答案3

tab您可以在文档中使用它而不改变输出。

然后您可以缩进代码以提高可读性。

例如,emacs 具有自动缩进代码的功能,我认为大多数编辑器都具有此功能。

答案4

它似乎只在行首被忽略。以下代码在 PDFLaTeX、XeLaTeX、LuaLaTeX、TeX->DVI->PS->PDF 和 TeX->DVI->PDF 中具有相同的输出:

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}

\begin{document}

tab%
    tab%
        tab%
            tab tab tab tab tab tab 

\end{document}

它总是看起来像这样:

输出.pdf

相关内容