旋转数学公式并使其字体大小正确

旋转数学公式并使其字体大小正确

我想要一个宏,它接受一个参数,使该参数变为粗体,围绕其中心旋转 -90 度,并根据使用位置自动将其缩放到正确的字体大小。该宏将专门用于数学模式。

从 MWE 的输出中可以看出,使用该\rot{0}命令的下标字体大小太大。我该如何修复此问题以获取正确的字体大小?

平均能量损失

\documentclass{article}

\usepackage{amsmath,graphicx}

\newcommand{\std}[1]{\mathbf{#1}}
\newcommand{\rot}[1]{\mathbin{\rotatebox[origin=c]{-90}{$\mathbf{#1}$}}}

\begin{document}%

$\std{0}, ~ \rot{0}, ~ x_\std{0}, ~ x_{\rot{0}}$

\end{document}%

输出 MWE

输出 MWE

答案1

在这种情况下,使用如下方法会容易得多\text

\documentclass{article}

\usepackage{amsmath,graphicx}

\newcommand{\rot}[1]{%
  \text{\rotatebox[origin=c]{-90}{$\mathbf{#1}$}}%
}

\begin{document}

$\rot{0}, x_{\rot{0}}$

$\rot{1}, x_{\rot{1}}$

$\rot{8}, x_{\rot{8}}$

\end{document}

\mathpalette以一种用户友好的方式隐藏。

在此处输入图片描述

一个可能的改进是

\newcommand{\rot}[1]{%
  \text{%
    \setlength{\mathsurround}{0pt}%
    \rotatebox[origin=c]{-90}{$\mathbf{#1}$}%
  }%
}

如果某些文档类设置了数学环绕参数,以确保安全。

更简短的是

\makeatletter
\newcommand{\rot}[1]{%
  \text{\m@th\rotatebox[origin=c]{-90}{$\mathbf{#1}$}}%
}
\makeatother

答案2

经过进一步搜索,我发现这个帖子,详细说明了应该如何做。我不得不\rot将的定义改为

\newcommand{\rot}[1]{{\mathpalette{\rott{#1}}\relax}}
\newcommand{\rott}[3]{\rotatebox[origin = c]{-90}{$#2\mathbf{#1}$}}

现在它似乎可以正常工作了。

答案3

这可以通过使用包\ThisStyle{...\SavedStyle...}的功能简单地实现scalerel

\documentclass{article}

\usepackage{amsmath,graphicx,scalerel}

\newcommand{\std}[1]{\mathbf{#1}}
\newcommand{\rot}[1]{\ThisStyle{\mathbin{\rotatebox[origin=c]{-90}{$\SavedStyle\mathbf{#1}$}}}}

\begin{document}%

$\std{0}, ~ \rot{0}, ~ x_\std{0}, ~ x_{\rot{0}}$

\end{document}%

在此处输入图片描述

相关内容