在 XeTeX 中,如果我有一行有两种字体大小,我该如何安排较小的字体与行的中心或顶部对齐?
例如
\newfontinstance\biggoth[Color=000000,Scale=5.0]{Cloister Black}
\newfontinstance\smallgoth[Color=000000,Scale=2.0]{Cloister Black}
\biggoth Hello \smallgoth World
“Hello”与行底对齐。
我很感激任何想法和意见。
答案1
通常,TeX 会将所有字符(和方框)的基线保持在相同高度。对于单个单词,您可以按照 chl 的建议,使用 来提高文本的高度\raisebox
。与其猜测要提高多少,不如将单词放入方框中(可能带有支柱),测量其高度,然后适当提高。
\documentclass{article}
\newcommand*\raiseup[1]{%
\begingroup
\setbox0\hbox{\tiny\strut #1}%
\leavevmode
\raise\dimexpr \ht\strutbox - \ht0\box0
\endgroup
}
\begin{document}
Here's some text. Here's a raised \raiseup{word}.
\end{document}
答案2
也许你可以玩一下\raisebox
,例如
\biggoth Hello \raisebox{.5ex}{\smallgoth World}
答案3
这是另一种可能性,与 TH. 的建议非常相似:
\documentclass{minimal}
\usepackage{fontspec}
\newfontinstance\biggoth[Color=000000,Scale=5.0]{Cloister Black}
\newfontinstance\smallgoth[Color=000000,Scale=2.0]{Cloister Black}
\newsavebox{\mybox}
\newcommand*{\tlap}[1]{%
\sbox{\mybox}{#1}%
\raisebox{-\ht\mybox}{\usebox{\mybox}}%
}
\newcommand*{\mlap}[1]{%
\sbox{\mybox}{#1}%
\raisebox{-0.5\ht\mybox}{\usebox{\mybox}}%
}
\begin{document}
\tlap{\biggoth Hello}
\tlap{\smallgoth World}
\mlap{\biggoth Hello}
\mlap{\smallgoth World}
\end{document}