在表格环境中使用 {$} {$} 的含义

在表格环境中使用 {$} {$} 的含义

我正在阅读以下链接的 Tug 手册 https://www.tug.org/TUGboat/tb28-3/tb90hoeppner.pdf 在第 2.1 节中有使用的示例array。此处进行了增强,使其可以“开箱即用”地进行编译:

\documentclass{article}
\usepackage{array}
\begin{document}
\begin{tabular}%
   {>{\ttfamily\char`\\}c>{$}c<{$}}
\multicolumn{1}{c}{Command} &
\multicolumn{1}{c}{Symbol}\\
\hline
alpha & \alpha\\
beta & \beta\\
gamma & \gamma
\end{tabular}
\end{document}

我想知道

  • >{$}c<{$}在程序中。
  • %前面 是什么意思\begin{tabular}
  • 是什么意思 >{\ttfamily\char‘\\}c

根据我的理解,我可以推断这 {>{\ttfamily\char‘\\}c可能是在每个文本项后添加一个反斜杠,此外,在同一文档中,他们有一段内容如下

命令钩子被应用于这些单元格。这些命令钩子的另一个用途是在窄列中排版段落。LATEX 默认将这些段落左对齐和右对齐排版,但在窄列中,使用 排版它们通常更合适 \raggedright

我无法理解 tabular 环境中 raggedright 的含义。这是做什么的?

答案1

该符号>{tokens}c表示该列中的每个单元格前面都会有tokens;类似地,c<{tokens}告诉 TeX 附加tokens到单元格的内容。

>{$}c<{$}意味着单元格的内容将被包围$...$,因此在数学模式下排版。

在您的示例中将\alpha被视为与$\alpha$第二列中的其他单元格相同。

可以使用任何列说明符,l以及r等等。

那怎么办\raggedright?假​​设您希望一列为p{4cm}。在如此狭窄的列中对齐会很复杂,因此可以这样做

>{\raggedright}p{4cm}

并且单元格的内容将被排版为右侧参差不齐。

>{\raggedright\arraybackslash}p{4cm}记住如果这是表格的最后一列则执行此操作,否则\\将不会结束表格行。

答案2

在我开始回答您的问题之前,值得展示一下排版表(屏幕截图取自 TUGBoat 文章):

在此处输入图片描述

请注意,左侧列的内容使用等宽字体排版,而右侧列的内容是三个数学符号。

  • >{$}c<{$}[环境定义第2列]是什么意思tabular

    我相信您知道这c意味着“居中”,并且该$字符本身意味着“打开或关闭内联数学模式”。

    >{$}和助词<{$}将列“夹”在一对$字符中。这是什么意思?考虑右侧列中的第一个单元格(标题单元格除外):它包含\alpha。由于tabular默认情况下是文本模式环境,因此 TeX 肯定会抱怨\alpha在文本模式下遇到。但是,由于列未定义为c而是定义为>{$}c<{$},因此 TeX实际上开始进行的工作不是\alpha但是$\alpha$——这也很好。

    你可能会问,为什么要这么麻烦?为什么不将其设置c为列类型,然后在第二列的三个单元格中输入 $\alpha$ ,$\beta$ , and $\gamma$?好吧,这样做是可行的,但也需要输入更多$符号并造成不必要的代码混乱。

  • %[after]是什么意思\begin{tabular}

    再次,我假设您知道这%是 TeX 的注释起始字符。

    我的猜测是,由于原始文章采用双栏模式排版,栏数较窄,因此排版该指令

    \begin{tabular}{>{\ttfamily\char`\\}c>{$}c<{$}}
    

    写在一行上会超出列的宽度。写

    \begin{tabular}%
        {>{\ttfamily\char`\\}c>{$}c<{$}}
    

    实现完全相同的功能,但不会超出列的宽度。

  • 是什么意思>{\ttfamily\char‘\\}c

    和前面一样,c表示居中,>{...}表示...将立即插入到该内容中的每个单元格之前(除非列类型通过 覆盖\multicolumn,就像在左侧列的第一个单元格中所做的那样)。这里,...由两部分组成:\ttfamily\char‘\\。前者切换到等宽(“电传打字机”)字体,后者按字面意思排版反斜杠特点。因此,TeX 首先排版一个反斜杠字符,然后排版alpha,两者都使用等宽字体。

    再次,你可能会忍不住问:“为什么要费心创建复杂的列定义?”当然,可以c通过选择列类型并在单元格中输入\ttfamily\string\alpha\ttfamily\string\beta和 ,获得了完全相同的结果。我认为,将改为\ttfamily\string\gamma不仅在便利性方面,而且在代码可读性方面,获得巨大回报应该是显而易见的。c

    >{\ttfamily\char`\\}c
    

    并改为输入alphabetagamma

    更一般地说,TeXBoat 文章的重点是展示自定义基本列类型(、和lc的各种可能性。rp

  • 我无法理解表格环境中 raggedright 的含义。

    默认情况下,TeX 会将段落格式化为(完全)对齐。这对于p(“段落”)列类型很重要。随着段落宽度的减小,以让读者赏心悦目的方式对齐段落变得越来越困难。一旦段落足够窄,最好切换到右对齐模式,也称为左对齐模式。

    要将p类型列切换为右边不齐模式,请写入>{\raggedright\arraybackslash}p

相关内容