强制 \savebox 使用正确模式

强制 \savebox 使用正确模式

我发现自己想要使用以下类型的构造:

\newsavebox{\mybox}
\newcommand{\mycommand}[1]{\savebox{\mybox}{#1}\reflectbox{\usebox{\mybox}}}

问题是我希望框的内容以“正确”模式排版。换句话说,如果在数学模式下使用 \mycommand,则 #1 应该自动以数学模式排​​版。此外,如果在数学模式下在下标内使用 \mycommand,则 #1 应该排版为下标,等等。本质上,如果没有 \reflectbox,\mycommand 应该是完全“透明的”。

答案1

\ThisStyle{...\SavedStyle...}该包的语法正好scalerel允许这样做。

在 MWE 中我展示了:文本模式(第 1 行);textstyle 和 displaystyle math(第 2 行);scriptstyle 和 scriptscriptstyle(第 3 行);正常数学和下标的组合效果\mycommand(第 4 行)。

\documentclass{amsart}
\usepackage{scalerel}
\newsavebox{\mybox}
\newcommand{\mycommand}[1]{%
  \ThisStyle{\ifmmode%
    \savebox{\mybox}{$\SavedStyle#1$}%
    \reflectbox{\usebox{\mybox}}%
  \else%
    \savebox{\mybox}{#1}%
    \reflectbox{\usebox{\mybox}}%
  \fi%
}}
\begin{document}
\mycommand{abc}

$\mycommand{\sum_{i=1}^N abc}\quad\displaystyle\mycommand{\sum_{i=1}^N abc} $

$\scriptstyle \mycommand{abc}\quad\scriptscriptstyle \mycommand{abc}$

$Z_{\mycommand{Z}}$
\end{document}

在此处输入图片描述

相关内容