顶部对齐的表格单元格,具有不同的字体大小和可控的间距

顶部对齐的表格单元格,具有不同的字体大小和可控的间距

我正在尝试实现一个表格,其中几个功能必须同时运行。之前已经讨论过其中几个功能,但我无法让所有功能同时运行(有些功能根本无法运行)。

我希望能够在同一行的单元格中使用不同的字体大小,并让它们恰恰顶部对齐。下面的 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}

在此处输入图片描述

就行距而言,恐怕它超出了tabularLaTeX 的模型。

这是一个不同的实现,其中大字母向下移动:

\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}

相关内容