我正在阅读以下链接的 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
并改为输入
alpha
、beta
和gamma
。更一般地说,TeXBoat 文章的重点是展示自定义基本列类型(、和
l
)c
的各种可能性。r
p
我无法理解表格环境中 raggedright 的含义。
默认情况下,TeX 会将段落格式化为(完全)对齐。这对于
p
(“段落”)列类型很重要。随着段落宽度的减小,以让读者赏心悦目的方式对齐段落变得越来越困难。一旦段落足够窄,最好切换到右对齐模式,也称为左对齐模式。要将
p
类型列切换为右边不齐模式,请写入>{\raggedright\arraybackslash}p
。