我想使用 将图像的中心与文本的垂直中心垂直对齐在同一行\raisebox
。必须使用宏,因为它将被多次使用(并且在同一行上多次使用)。此实现有效,但需要使用临时长度。我想直接进行计算,而无需这些,但找不到正确的语法。不起作用\raisebox{0.5\heightof{E}-0.25in}
。
最接近的问题似乎是这里,但这种方法无法正确对齐。我希望垂直图像中心与文本基线和字母顶部之间的中点对齐(在本例中为“E”)。
梅威瑟:
\documentclass{article}
\usepackage{calc}
\begin{document}
\newlength{\lenA}
\newlength{\lenB}
\setlength{\lenA}{\heightof{E}}
\setlength{\lenB}{0.25in}
Text \raisebox{0.5\lenA-0.5\lenB}{\rule{0.25in}{0.25in}} Testing
\end{document}
答案1
三种方法:
和
tabular
\begin{tabular}{@{}c@{}}<material>\end{tabular}
使用
\raisebox
并测量大写字母\raisebox{.5\fontcharht\font`E-.5\height}{<material>}
使用
\raisebox and
1ex`(这是 David 的解决方案)\raisebox{1ex-0.5\height}{<material>}
\documentclass{article}
\usepackage{calc}
\begin{document}
T \begin{tabular}{@{}c@{}}\rule{0.25in}{0.25in}\end{tabular} T
\raisebox{.5\fontcharht\font`E-.5\height}{\rule{0.25in}{0.25in}} T
\raisebox{1ex-0.5\height}{\rule{0.25in}{0.25in}} T
\end{document}
我会使用第一种方法,但这取决于实际应用。第一种方法的中心化是相对于数学轴的,分数线将在此绘制。
答案2
下面比较几个“中点”:
1ex
(单位名称来自小写字母 x),参见 大卫的回答。信件的中间
E
(方法来自问题)。数学轴,减号、等号、加号等的中心轴。这也是egreg 的
tabular
解决方案。支撑箱的比例。LaTeX 将 30% 置于基线
\baselineskip
以下,将 70% 置于基线以上。
以下示例文件定义了宏并\midraiseboxA
对其\midraiseboxB
进行了比较:
\documentclass{article}
\usepackage{calc}
\newcommand*{\midraiseboxA}{%
\raisebox{1ex-.5\height}%
}
\newcommand*{\midraiseboxB}{%
\raisebox{(\heightof{E}-\height)/2}%
}
\newcommand*{\midraiseboxC}{%
\raisebox{\heightof{$\vcenter{}$}-.5\height}%
}
\newcommand*{\midraiseboxD}{%
\raisebox{.2\baselineskip-.5\height}%
}
\usepackage{color}
\newcommand*{\testI}{%
\textcolor{red}{\rule{.5ex}{.25pt}}%
}
\newcommand*{\testII}{%
\rule{\baselineskip}{\baselineskip}%
}
\setlength{\parskip}{2ex}
\begin{document}
\newcommand*{\test}[1]{%
E#1{\testI}xe#1{\testI}- Test #1{\testII} Testing %
\kern-.75\baselineskip
\textcolor[gray]{.5}{%
\rlap{\raisebox{-.5\height}%
{\rule{3\baselineskip}{.2pt}}}%
\rlap{\raisebox{\heightof{E}-.5\height}%
{\rule{3\baselineskip}{.2pt}}}%
\rlap{\raisebox{\depthof{g}*(-1)-.5\height}%
{\rule{3\baselineskip}{.2pt}}}%
}%
\kern.75\baselineskip
#1{\testII} Eg%
\par
}
\test\midraiseboxA
\test\midraiseboxB
\test\midraiseboxC
\test\midraiseboxD
\end{document}
评论:
calc
如果需要,可以删除对包的依赖:
- 表达式使用和
\heightof
计算\settoheight
- 可以使用 e-TeX 进行计算
\dimexpr
。
例如\midraiseboxC
:
\newdimen\midraisedimen
\newcommand*{\midraiseboxC}{%
\settoheight\midraisedimen{$\vcenter{}$}%
\raisebox{\dimexpr\midraisedimen-.5\height\relax}%
}
答案3
使用字体的 x 高度更容易(尽管你可以根据需要测量 E)
\documentclass{article}
\usepackage{calc}
\begin{document}
Text \raisebox{1ex-0.5\height}{\rule{0.25in}{0.25in}} Testing
\end{document}