在长表行内垂直居中文本

在长表行内垂直居中文本

我注意到我的表中所有字符的下方都有可怕的空白。

移开你的目光。

更改字体、字体大小和行距没有任何效果。有人问过类似的问题,但我没有找到相同的。'what TjJ' 位于plongtable 的一列中,使其成为mb列(来自array包)在视觉上没有任何意义。调整\addtolength\aboverulesep{}\..\below..、和\midrule[0pt]会破坏配色方案,除非我尝试过的错误。在 MS Paint 中,我测量了从到顶部/底部的距离j,我希望这两个距离相等,而无需输入任何额外的内容。这可能吗?

如果深渊虚空无论如何都持续存在并且蔓延,是否需要任何代码示例?:

\documentclass{article}
\usepackage{longtable}
\begin{document}
\begin{longtable}{l p{1cm}}\hline
foo & bar \\\hline
foo & bar \\\hline
\end{longtable}
\end{document}

m下面是一个列与pag默认罗马字体叠加时高度相同的示例。

dddd

m、、t列类型b垂直对齐其余列,就好像它们是\multirow-s 一样。通过下面的测试,您可以发现大多数(尚未尝试过所有)字体系列的间距不等于其\hline最长上升部/下降部上方/下方的 s。

\documentclass{article}
\usepackage{array,longtable}
\begin{document}
\fontfamily{pag}\selectfont% select any font really
\begin{longtable}{l p{11cm}}\hline
foo & AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz and this continue to second row \\\hline 
\end{longtable}
    \vspace*{-48.8pt}
    \fontfamily{lmtt}\selectfont% select any font really
    \begin{longtable}{l m{11cm}}\hline
    foo & AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz and this continue to second row \\\hline 
    \end{longtable}
        \vspace*{-48.8pt}
        \fontfamily{ppl}\selectfont% select any font really
        \begin{longtable}{l b{11cm}}\hline
        foo & AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz and this continue to second row \\\hline 
        \end{longtable}
\end{document}

答案1

如果您想改变空间,您必须重新定义\strut

为了使字体中上线与最高字符以及下线与最深字符之间的距离相等,可以使用

\documentclass{article}
\usepackage{longtable,array} % forgot to add array
\showboxdepth2
\begin{document}
\fontfamily{pcr}\selectfont
\newcommand\changestrut{%
  \setbox\strutbox\hbox{%
    \setbox0\hbox{ABCDEFGHJIKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}%
    \skip0\dimexpr\baselineskip-\ht0-\dp0\relax
    \vrule height\glueexpr\ht0+.5\skip0\relax depth\glueexpr\dp0+.5\skip0\relax width0pt
  }%
}
\changestrut
\begin{longtable}{l p{11cm}}\hline
foo & AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz \\\hline 
\end{longtable}
\fontfamily{phv}\selectfont
\changestrut
\begin{longtable}{l p{11cm}}\hline
foo & AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz \\\hline 
\end{longtable}
\end{document}

输出 可以更改该行\setbox0\hbox{...}以包含您期望使用的所有字符。您也可以尝试仅包含“典型”字符。这样字符看起来会更居中,但您可能会遇到深字形的问题:

\documentclass{article}
\usepackage{longtable,array} % forgot to add array
\showboxdepth2
\begin{document}
\fontfamily{pcr}\selectfont
\newcommand\changestrut{%
  \setbox\strutbox\hbox{%
    \setbox0\hbox{ABCDE}%
    \skip0\dimexpr\baselineskip-\ht0-\dp0\relax
    \vrule height\glueexpr\ht0+.5\skip0\relax depth\glueexpr\dp0+.5\skip0\relax width0pt
  }%
}
\changestrut
\begin{longtable}{l p{11cm}}\hline
foo & AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz \\\hline 
\end{longtable}
\fontfamily{phv}\selectfont
\changestrut
\begin{longtable}{l p{11cm}}\hline
foo & AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz \\\hline 
\end{longtable}
\end{document}

在此处输入图片描述

答案2

不同的字体有不同的特点。例如,Computer Modern 字形的最大高度为 6.94444pt,最大深度为 1.94444pt,x 高度为 4.30554pt。另一方面,Avant Garde 的最大字形高度为 7.35498pt,最大深度为 2.14998pt,x 高度为 5.46999pt(我使用的是 TeX Gyre 项目克隆版 Adventor)。

高度/深度的比率相似 (Computer Modern 为 3.57,Avant Garde 为 3.42),但是 x 高度却有很大差异。

假设您想用 Avant Garde (Adventor) 排版整个文档,您至少需要进行一项调整:您需要增加基线跳跃,因为高度和深度更大:12pt 是不够的,因为总高度为 9.5pt,而 Computer Modern 为 8.88888pt。这样一行上的深字形和下一行上的高字形之间只剩下 2.5pt,而不是超过 3pt。假设我们选择 13pt 的基线跳跃\linespread{1.08}(实际上会给出 12.96pt)。

\documentclass{article}
\usepackage{tgadventor}

\renewcommand{\familydefault}{\sfdefault}
\linespread{1.08}

\begin{document}

\begin{tabular}{l}
\hline
what TjJ \\
\hline
\end{tabular}

\end{document}

在此处输入图片描述

我们来计算一下。两条规则相距 12.96pt;T 的高度为 7.35498pt,j 的深度为 2.14998pt。基线距离顶部规则 12.96*0.7=9.072pt,留下约 1.72pt 的空白。基线距离底部规则 12.96pt*0.3=3.888pt,留下约 1.74pt 的空白。

更有趣的是,顶部规则距离 w 的顶部有 3.6pt,其中空白处的差异(0.1mm)略小于 0.3pt,这是可以忽略不计的,并且使得主体部分在可用空间中居中。

交替颜色:

\documentclass{article}
\usepackage{tgadventor}
\usepackage[table]{xcolor}

\renewcommand{\familydefault}{\sfdefault}
\linespread{1.08}

\begin{document}

\rowcolors{1}{black!30}{white}
\begin{tabular}{l}
what TjygJ \\
what TjygJ \\
what TjygJ \\
\end{tabular}

\end{document}

在此处输入图片描述

我如何测量这些参数?

\documentclass{article}
\usepackage{tgadventor}

\begin{document}

\sbox0{abcdefghijklmnopqrstuvwxyzABC}

\the\ht0 % max height of Computer Modern glyphs

\the\dp0 % max depth of Computer Modern glyphs

\the\dimexpr1ex % x-height of Computer Modern

\sbox0{\sffamily abcdefghijklmnopqrstuvwxyzABC}

\the\ht0 % max height of Adventor glyphs

\the\dp0 % max depth of Adventor glyphs

{\sffamily\expandafter}\the\dimexpr1ex % x-height of Adventor

\end{document}

在此处输入图片描述

相关内容