使 \scalebox 在下标模式下工作

使 \scalebox 在下标模式下工作

我创建了一个简单的宏来输入一种范围符号(a:b),并用较大的冒号来区分它与普通文本。

这是带有 MWE 的宏:

\documentclass{minimal}
\usepackage{graphicx}

\newcommand{\range}[3][]{%
\def\rangedbldot{\scalebox{1.4}{:}}%
\if\relax\detokenize{#1}\relax%
  \ensuremath{#2\rangedbldot#3}%
\else%
  \ensuremath{#2\rangedbldot#1\rangedbldot#3}%
\fi%
}

\begin{document}
\(1{:}2\)

\(\range{1}{2}\)

\(a_{\range{1}{2}}\)
\end{document}

结果如下:

在此处输入图片描述

我期望的是,由于我使用的是\scalebox,而不是\resizebox,因此缩放后的冒号将与当前字体大小成比例,下标比普通文本中的要小一点。但显然事实并非如此。

我这里哪里做错了?我该如何修复宏以使冒号在两种情况下都成比例?

答案1

使用\mathpalette,请参阅\mathpalette 的奥秘

\documentclass{article}
\usepackage{graphicx}

\newcommand{\range}[3][]{%
  \if\relax\detokenize{#1}\relax
    \ensuremath{#2\rangedbldot#3}%
  \else
    \ensuremath{#2\rangedbldot#1\rangedbldot#3}%
  \fi
}
\newcommand{\rangedbldot}{\mathpalette\dorangedbldot\relax}
\newcommand{\dorangedbldot}[2]{%
  \scalebox{1.4}{$#1:$}%
}

\begin{document}
\(1{:}2\)

\(\range{1}{2}\)

\(a_{\range{1}{2}}\)
\end{document}

在此处输入图片描述

答案2

在这里我使用\ThisStyle{...\SavedStyle...}scalerel将适当的数学大小带入其中\scalebox

\documentclass{minimal}
\usepackage{graphicx,scalerel}

\newcommand{\range}[3][]{%
\def\rangedbldot{\ThisStyle{\scalebox{1.4}{$\SavedStyle:$}}}%
\if\relax\detokenize{#1}\relax%
  \ensuremath{#2\rangedbldot#3}%
\else%
  \ensuremath{#2\rangedbldot#1\rangedbldot#3}%
\fi%
}

\begin{document}
\(1{:}2\)

\(\range{1}{2}\)

\(a_{\range{1}{2}}\)
\end{document}

在此处输入图片描述

答案3

\text我会使用字体更改,但如果您想缩放,它比直接使用 mathpalette更容易使用。

在此处输入图片描述

\documentclass{article}
\usepackage{graphicx,amsmath,bm}

\makeatletter
\newcommand{\range}[3][\@gobble]{%
  \ensuremath{#2\rangedbldot#1\rangedbldot#3}%
}
\makeatother

\begin{document}

\begin{minipage}{.2\textwidth}
\def\rangedbldot{\scalebox{1.4}{:}}

\(1{:}2\)

\(\range{1}{2}\)

\(a_{\range{1}{2}}\)
\end{minipage}
\begin{minipage}{.2\textwidth}
\def\rangedbldot{{\bm{:}}}

\(1{:}2\)

\(\range{1}{2}\)

\(a_{\range{1}{2}}\)
\end{minipage}
\begin{minipage}{.2\textwidth}
\def\rangedbldot{\text{\scalebox{1.4}{:}}}

\(1{:}2\)

\(\range{1}{2}\)

\(a_{\range{1}{2}}\)
\end{minipage}




\end{document}

相关内容