![使放大的数字在正常文本(几乎是数字)高度中垂直居中。](https://linux22.com/image/236516/%E4%BD%BF%E6%94%BE%E5%A4%A7%E7%9A%84%E6%95%B0%E5%AD%97%E5%9C%A8%E6%AD%A3%E5%B8%B8%E6%96%87%E6%9C%AC%EF%BC%88%E5%87%A0%E4%B9%8E%E6%98%AF%E6%95%B0%E5%AD%97%EF%BC%89%E9%AB%98%E5%BA%A6%E4%B8%AD%E5%9E%82%E7%9B%B4%E5%B1%85%E4%B8%AD%E3%80%82.png)
我希望里面的数字围绕着其他数字,并且能够在高度上垂直居中,不受正常字体大小设置的影响,如图所示:
(放大后的六是{\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}