如何调整符号框的大小并使其垂直居中?

如何调整符号框的大小并使其垂直居中?

考虑以下 MWE:

\documentclass[margin=2mm]{standalone}
\usepackage{amsmath,amssymb}
\usepackage{graphics}
\def\myboxmin{\mathop{\raisebox{.15em}{\scalebox{.5}{$\boxminus$}}}}

\begin{document}
$A \myboxmin B$
\end{document}

我想通过两种方式来改善它

  1. 定义一个\RescaleSymbol命令,按照上面的输出方式输入\RescaleSymbol[.5]{\boxminus}(例如,重新缩放的默认值是.75
  2. 如果没有\raisebox,重新缩放后的符号将与基线对齐。现在,它必须将要重新缩放的符号的高度(一半)作为值。

我能怎么做?

答案1

您可以将新宏定义为:\newcommand{\RescaleSymbol}[2][<default_optional>]{..}带有#1可选参数和#2强制参数。第一个(可选)参数的默认值写在第二对括号中。使用新命令作为\RescaleSymbol[<scale>]{<symbol>}\RescaleSymbol{<symbol>}带有默认比例 0.75。

\documentclass[margin=2mm]{standalone}
\usepackage{amsmath,amssymb}
\usepackage{graphics}

\newcommand{\RescaleSymbol}[2][.75]{\mathop{\vcenter{\hbox{\scalebox{#1}{$#2$}}}}}

\begin{document}
$A - \RescaleSymbol[.5]{\boxminus} B$
\end{document}

在此处输入图片描述

答案2

您可能必须\mathop将符号相对于公式轴垂直居中,但这仅在参数为\mathop单个字符时才有效。

amsmath包具有内置机制,用于判断一个符号是 还是\mathbin\mathrel用于\underset\overset

\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{graphicx}

\makeatletter
\newcommand{\rescalesymbol}[2][0.75]{%
  \binrel@{#2}% this makes \binrel@@ to mean \mathbin, \mathrel or empty
  \binrel@@{\rescale@symbol{#1}{#2}}%
}
\newcommand{\rescale@symbol}[2]{%
  \mathpalette\rescale@@symbol{{#1}{#2}}%
}
\newcommand{\rescale@@symbol}[2]{%
  \rescale@@@symbol#1#2%
}
\newcommand{\rescale@@@symbol}[3]{%
  % #1=math style, #2=scale factor, #3=symbol
  \vcenter{\hbox{\scalebox{#2}{$\m@th#1#3$}}}%
}
\makeatother

\begin{document}

$A \rescalesymbol{\boxminus} B$

$\scriptstyle A \rescalesymbol{\boxminus} B$

$A \rescalesymbol[0.5]{\boxminus} B$

$\scriptstyle A \rescalesymbol[0.5]{\boxminus} B$

$A \rescalesymbol{\pitchfork} B$

$\scriptstyle A \rescalesymbol{\pitchfork} B$

$A \rescalesymbol[0.5]{\pitchfork} B$

$\scriptstyle A \rescalesymbol[0.5]{\pitchfork} B$

\end{document}

在此处输入图片描述

如果您想要将符号的类型设置为不同于其标准状态的\mathbin\mathrel,或者您需要完全不同的类型,我建议使用尾随可选参数:

\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{xparse}

\makeatletter
\NewDocumentCommand{\rescalesymbol}{O{0.75}mo}{%
  \IfNoValueTF{#3}
   {%
    \binrel@{#2}% this makes \binrel@@ become \mathbin, \mathrel or empty
    \binrel@@{\rescale@symbol{#1}{#2}}%
   }
   {#3\binrel@@{\rescale@symbol{#1}{#2}}}%
}
\newcommand{\rescale@symbol}[2]{%
  \mathpalette\rescale@@symbol{{#1}{#2}}%
}
\newcommand{\rescale@@symbol}[2]{%
  \rescale@@@symbol#1#2%
}
\newcommand{\rescale@@@symbol}[3]{%
  % #1=math style, #2=scale factor, #3=symbol
  \vcenter{\hbox{\scalebox{#2}{$\m@th#1#3$}}}%
}
\makeatother

\begin{document}

$A \rescalesymbol{\boxminus} B$

$\scriptstyle A \rescalesymbol{\boxminus} B$

$A \rescalesymbol[0.5]{\boxminus} B$

$\scriptstyle A \rescalesymbol[0.5]{\boxminus} B$

$A \rescalesymbol{\pitchfork} B$

$\scriptstyle A \rescalesymbol{\pitchfork} B$

$A \rescalesymbol[0.5]{\pitchfork}[\mathop] B$

$\scriptstyle A \rescalesymbol[0.5]{\pitchfork}[\mathop] B$

\end{document}

在此处输入图片描述

相关内容