![顶部对齐的表格单元格,具有不同的字体大小和可控的间距](https://linux22.com/image/265089/%E9%A1%B6%E9%83%A8%E5%AF%B9%E9%BD%90%E7%9A%84%E8%A1%A8%E6%A0%BC%E5%8D%95%E5%85%83%E6%A0%BC%EF%BC%8C%E5%85%B7%E6%9C%89%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AD%97%E4%BD%93%E5%A4%A7%E5%B0%8F%E5%92%8C%E5%8F%AF%E6%8E%A7%E7%9A%84%E9%97%B4%E8%B7%9D.png)
我正在尝试实现一个表格,其中几个功能必须同时运行。之前已经讨论过其中几个功能,但我无法让所有功能同时运行(有些功能根本无法运行)。
我希望能够在同一行的单元格中使用不同的字体大小,并让它们恰恰顶部对齐。下面的 MWE 几乎已经实现了这一点,但较小字体的字母略低于较大字体的字母。(先前的讨论:使表格中不同大小的字体在顶部对齐,而不是底部对齐,但对齐仅是接近,而不是完美。) 编辑:顶部对齐应针对所用字体的最大高度,这样,无论“a”是单独书写还是后面跟一个较高的字母(如“l”),其高度都相同(或者,如果将下面例子中大“B”旁边的小“b”更改为小“a”,则“a”不应跳到天花板上。
我还希望能够在表格的一个单元格内插入多行强制换行的文本,并且这些行之间的间距需要与普通文本相同。这已通过在下方 MWE 中的一个单元格中嵌套另一个表格来实现。
此外,我希望能够使用 \hfill 在嵌套表格中的右边距中放置一些内容,这在 MWE 中是有效的。
此外,表格顶部、底部和侧面的边距应该为零,这样只有页边距决定表格周围的空白量(现在,右边距和左边距之间甚至有差异——虽然当我上传下面的 pdf 时边距由于某种原因进行了调整,但如果您编译代码并直接查看 pdf 则可以看到它)。
最后,我想取消单元格之间的所有自动间距,然后定义我自己的间距。最好能够根据行高来定义单元格之间的垂直间距(对于我为普通文本指定的行高,因此在下面的示例中为 11pt),而水平间距的单位最好根据“‘m’ 的宽度”或类似的单位来定义。
\documentclass[paper=a4,fontsize=11pt]{scrartcl} % KOMA-article class
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel} % English language/hyphenation
\usepackage{geometry}
\usepackage{tabu}
\usepackage{lipsum}
\pagestyle{empty} % No pagenumbers/headers/footers
\newcolumntype{V}{>{\vspace{0pt}}p}
\begin{document}
\begin{tabular} [t]{@{}V{0.2\columnwidth}V{0.8\columnwidth}} % @{} is used to remove the margins from cells
\Huge\textbf A & \begin{tabular}[t]{@{}p{0.8\columnwidth}}
Lorem ipsum \hfill right-aligned\\
sem.\\
Lorem\\
ipsum
\end{tabular} \\
\Huge\textbf B & b \\
\Huge\textbf C & \lipsum*[1] \\
\end{tabular}
\end{document}
编辑2013-03-25:我尝试了一种不同的方法(使用小型页面)并提出了一个问题:制作一个间距均匀的列表,无论字符数和文本行数如何,可能使用小页面或表格。截至撰写本文时,我有一个答案与下面接受的答案类似。它实现了正确的间距,但左列的大小不同(如果要\hfill
在右列中使用),并且文本的顶部对齐\Huge
并不完美。
编辑2013-03-25:我在帖子中得到了答案制作一个间距均匀的列表,无论字符数和文本行数如何,可能使用小页面或表格其中\strut
用于添加空格,并且\vphantom{Qp}
(添加括号中内容的垂直空格(此示例中为 Qp))。这很可能在这里使用,即使仅使用短字母或不向下突出的字母,也可以获得单元格之间的正确间距。
答案1
单元格总是以支柱开始,确切地说\@arstrut
,它是为了帮助对齐。\Huge
第一列中的字母高于此支柱,因此它们设置为接触上边缘。第二列单元格不会发生这种情况。一个技巧是提供一条假的第一行,然后以其高度为后备,我们知道这恰恰是支柱的高度。然后我们不插入行间粘连。
然而,这对于嵌套的 不适用tabular
。
\documentclass[paper=a4,fontsize=11pt]{scrartcl} % KOMA-article class
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel} % English language/hyphenation
\usepackage[showframe]{geometry}
\usepackage{array,tabularx}
\usepackage{lipsum}
\pagestyle{empty} % No pagenumbers/headers/footers
\makeatletter
\newcolumntype{A}[1]{>{\kern-\ht\@arstrutbox\hrule height 0pt}p{#1}}
\newcolumntype{V}{%
>{\csname par\endcsname\kern-\ht\@arstrutbox\nointerlineskip\hrule height0pt
\mbox{}\csname par\endcsname\kern-\ht\@arstrutbox\nointerlineskip
\vrule height\fontcharht\font`A width0pt\relax}X}
\makeatother
\begin{document}
\noindent\begin{tabularx}{\textwidth}{
@{}
A{3em}
V
@{}} % @{} is used to remove the margins from cells
\Huge\bfseries A
&
Lorem ipsum \hfill right-aligned\newline
sem.\newline
Lorem\newline
ipsum \\
\Huge\bfseries B & a \\
\Huge\bfseries C & \lipsum*[1] \\
\end{tabularx}
\end{document}
就行距而言,恐怕它超出了tabular
LaTeX 的模型。
这是一个不同的实现,其中大字母向下移动:
\documentclass[paper=a4,fontsize=11pt]{scrartcl} % KOMA-article class
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel} % English language/hyphenation
\usepackage[showframe]{geometry}
\usepackage{array,tabularx,adjustbox}
\usepackage{lipsum}
\pagestyle{empty} % No pagenumbers/headers/footers
\newcommand{\bigletter}[1]{%
\raisebox{\dimexpr-\height+\fontcharht\font`A\relax}{\Huge\bfseries #1}%
}
\makeatletter
\makeatother
\begin{document}
\noindent\begin{tabularx}{\textwidth}{
@{}
p{3em}
X
@{}} % @{} is used to remove the margins from cells
\bigletter{A}
&
Lorem ipsum \hfill right-aligned\newline
sem.\newline
Lorem\newline
ipsum \\
\bigletter{B} & a \\
\bigletter{C} & \lipsum*[1] \\
\end{tabularx}
\end{document}