我想在数学公式模式下生成一个小型无衬线字体字母 t 来排版转置。但是,A^{\mathsf{\textsc{t}}}
不起作用。有什么想法吗?
答案1
Computer Modern Sans Serif 缺少小写字母(Latin Modern 也缺少)。此外,\textsc
内部命令\mathsf
不会产生无衬线字体,因为\mathXX
命令不会累积。
如果你不需要在下标或上标中使用这个,你可以这样做
\newcommand{\trans}{^{\scriptscriptstyle\mathsf{T}}}
完整示例:
\documentclass{article}
\usepackage{amsmath}
\newcommand{\trans}{{\scriptscriptstyle\mathsf{T}}}
\begin{document}
Output: $A^{\trans}$
Comparison: $A^{\textsc{t}}$
Subscript: $\mathcal{X}_{A^{\trans}}$
\end{document}
如您所见,下标的输出不是最优的。
不同的实现:
\documentclass{article}
\usepackage{amsmath}
\usepackage{pict2e}
\makeatletter
\newcommand{\trans}{}% for safety
\DeclareRobustCommand{\trans}{\mathpalette\aberdysh@trans\relax}
\newcommand{\aberdysh@trans}[2]{%
\begingroup
\settoheight\unitlength{$\m@th#1{x}$}%
\begin{picture}(1,1)
\squarecap
\Line(0.05,1)(0.95,1)
\Line(0.5,0)(0.5,1)
\end{picture}%
\endgroup
}
\makeatother
\begin{document}
$\trans\scriptstyle\trans\scriptscriptstyle\trans$
Output: $A^{\trans}$
Comparison: $A^{\textsc{t}}$ $A^{\scriptscriptstyle\mathsf{T}}$
Subscript: $\mathcal{X}_{A^{\trans}}$
\end{document}
您可能想要尝试\roundcap
而不是\squarecap
。
答案2
我最终使用了以下替代方案。
\makeatletter
\newcommand*{\transpose}{%
{\mathpalette\@transpose{}}%
}
\newcommand*{\@transpose}[2]{%
% #1: math style
% #2: unused
\small \raisebox{1.37\depth}{$\m@th#1\intercal$}%
}
\makeatother
\newcommand*{\tran}{^{\mkern-1.5mu\transpose}}
\newcommand*{\traninv}{^{-\mkern-1.5mu\transpose}}