答案1
该包很旧,定义缺少\ltx@sh@ft
有助于纠正这种定位的。宏的更现代定义\U
是
\newcommand*\U[1]{\oalign{#1\crcr\hidewidth\ltx@sh@ft{-3ex}%
\vbox to .2ex{\hbox{\u{}}\vss}\hidewidth}}
在您自己的文件中,您需要将其括在一\makeatletter...\makeatother
对中。如果您正在加载semtrans
包,则需要使用\renewcommand*
。
\documentclass{article}
\usepackage{semtrans}
\makeatletter
\renewcommand*\U[1]{\oalign{#1\crcr\hidewidth\ltx@sh@ft{-3ex}%
\vbox to .2ex{\hbox{\u{}}\vss}\hidewidth}}
\makeatother
\begin{document}
Upright position: \U{h}
Italic position: \textit{\U{h}}
\end{document}
以上内容模仿了\b
LaTeX 内核中定义的重音,即:
\DeclareTextCommand{\b}{OT1}[1]
{\hmode@bgroup\o@lign{\relax#1\crcr\hidewidth\ltx@sh@ft{-3ex}%
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}\egroup}
因此,你可以完全模仿这个并使用
\makeatletter
\DeclareTextCommand{\U}{OT1}[1]
{\hmode@bgroup\o@lign{\relax#1\crcr\hidewidth\ltx@sh@ft{-3ex}%
\vbox to.2ex{\hbox{\u{}}\vss}\hidewidth}\egroup}
\makeatother