我希望里面的数字围绕着其他数字,并且能够在高度上垂直居中,不受正常字体大小设置的影响,如图所示:
(放大后的六是{\Large6}
)但是我无法通过使用命令\raisebox
和ex
长度单位来获得结果。请帮忙!
答案1
使用\raisebox
是正确的方法。您可以使用\height
来表示内容的高度,即基线以上的高度。\depth
对于正常数字, 应该为零。然后您需要从正常高度中减去\height
并将其除以 2。大写字母的正常高度约为\strut
给出的高度的1.6ex 或 80% \ht\strutbox
。您可以使用 e-TeX\dimexpr
进行计算。
\documentclass{article}
\newcommand{\vcentered}{\raisebox{.5\dimexpr.8\ht\strutbox-\height\relax}}
\begin{document}
0000\vcentered{\Large 6}00000\vcentered{\small 9}00000
0000\vcentered{\Huge 6}00000\vcentered{\tiny 9}00000
\end{document}
结果:
如果您能提供正常高度的参考,那么您可以做得更准确。此外,您还可以考虑深度。
\documentclass{article}
\newsavebox{\vrefbox}
\newcommand{\setvref}{\sbox{\vrefbox}}
\newcommand{\vcentered}{\raisebox{.5\dimexpr\ht\vrefbox-\height\relax}}
\begin{document}
\setvref{0}0000\vcentered{\Large 6}00000\vcentered{\small 9}00000
\huge
\setvref{0}0000\vcentered{\Huge 6}00000\vcentered{\tiny 9}00000
\end{document}
答案2
我会用:
\newcommand\vcentered[1]{\ensuremath{\vcenter{\hbox{#1}}}}
而不是马丁的定义。虽然有点不同居中文本,它最初设计用于 TeX 中的垂直对齐。
关键是用法:
\vcentered{00000}\vcentered{\Huge6}\vcentered{00000}%
\vcentered{\tiny 9}\vcentered{00000}