答案1
适用于所有数学风格。
\documentclass{letter}
\usepackage{stackengine,scalerel}
\newcommand\hot[1]{\ThisStyle{%
\sbox0{\kern-.5pt$\SavedStyle#1$\kern-.5pt}%
\stackengine{.2\LMex}{\kern.5pt\copy0\kern.5pt}{%
\rlap{\rule[-.5\LMex]{.4\LMpt}{.5\LMex}}%
\rlap{\rule[-.5\LMex]{\wd0}{.4\LMpt}}%
\rule{\wd0}{.4\LMpt}\llap{\rule[-.5\LMex]{.4\LMpt}{.5\LMex}}%
}{U}{c}{F}{F}{S}
}}
\begin{document}
$\hot{A}= 3\hot{z}$
$\scriptstyle\hot{A}= 3\hot{z}$
$\scriptscriptstyle\hot{A}= 3\hot{z}$
\end{document}
如果想要它自动以直立风格出现,那么#1
的定义中的实例\hot
可以简单地调整为\mathrm{#1}
。
答案2
我的看法是:框线的粗细和高度随当前数学样式而变化。两者都取决于当前样式的分数线粗细,即\fontdimen8 <font>3
。
如果您正在使用lmodern
,请记住也加载fixcmex
。
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\DeclareRobustCommand{\rtens}[1]{%
\mathpalette\rtens@{\mathsf{#1}}%
}
\newcommand{\rtens@}[2]{%
\vtop{%
\sbox\z@{$\m@th#1#2$}% measure the width
\ialign{%
\hfil##\hfil\cr
\usebox{\z@}\cr
\noalign{\nointerlineskip\vskip2\rtens@thickness{#1}}
\rtens@rect{#1}\cr
}%
}%
}
\newcommand{\rtens@rect}[1]{%
\fboxrule=\rtens@thickness{#1}%
\fboxsep=-\fboxrule
\fbox{%
\rule{0pt}{4\rtens@thickness{#1}}% height
\kern\wd\z@\kern-\rtens@thickness{#1}% width
}%
}
\newcommand{\rtens@thickness}[1]{%
\fontdimen 8
\ifx#1\displaystyle\textfont3\else
\ifx#1\textstyle\textfont3\else
\ifx#1\scriptstyle\scriptfont3\else
\scriptscriptfont3
\fi\fi\fi
}
\makeatother
\begin{document}
$\rtens{A}$ $\rtens{g}$
$\scriptstyle\rtens{A}$ $\scriptscriptstyle\rtens{g}$
$\rtens{A}\scriptstyle\rtens{A}$
\Large $\rtens{I}\rtens{J}$
\end{document}