![在长表行内垂直居中文本](https://linux22.com/image/372522/%E5%9C%A8%E9%95%BF%E8%A1%A8%E8%A1%8C%E5%86%85%E5%9E%82%E7%9B%B4%E5%B1%85%E4%B8%AD%E6%96%87%E6%9C%AC.png)
我注意到我的表中所有字符的下方都有可怕的空白。
更改字体、字体大小和行距没有任何效果。有人问过类似的问题,但我没有找到相同的。'what TjJ' 位于p
longtable 的一列中,使其成为m
或b
列(来自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
默认罗马字体叠加时高度相同的示例。
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}