使\big/可扩展

使\big/可扩展

我想要一个更大的斜线符号。如何让它可扩展?最小示例:

% arara: pdflatex
\documentclass{article}

\usepackage{amsmath}
\newcommand{\modslash}{\big/}

\begin{document}
\(A \modslash B_{{A \modslash B}_{A \modslash B}}\)
\end{document}

答案1

在下标和上标中使用\big和朋友实际上不起作用。

对于显示和文本样式,您可以获得与\big和朋友一起缩放的更大的斜线,但有一个限制:\modslash\big\modslash会产生相同的尺寸。

\documentclass{article}
\usepackage{amsmath,etoolbox}

\DeclareMathDelimiter{\modslashsymbol}{\mathord}{largesymbols}{"0E}{largesymbols}{"2E}
\makeatletter
\newif\ifbBigg@
\pretocmd{\bBigg@}{\bBigg@true}{}{}
\apptocmd{\bBigg@}{\bBigg@false}{}{}
\newrobustcmd{\modslash}{\ifbBigg@\modslashsymbol\else\big/\fi}
\makeatother

\begin{document}

\(A / B_{{A / B}_{A / B}}\)

\(A \modslash B_{{A \modslash B}_{A \modslash B}}\)

\(\modslash \big\modslash \Big\modslash \bigg\modslash \Bigg\modslash\)

\end{document}

这是什么?我根据位于字体/中的较大版本的 定义了一个新的可缩放数学符号largesymbols,因为

\DeclareMathDelimiter{/}{\mathord}{operators}{"2F}{largesymbols}{"0E}

我从文件中的信息中获取了下一个较大符号的位置.tfm,即

(CHARACTER O 16
   (CHARWD R 0.577779)
   (CHARHT R 0.039999)
   (CHARDP R 1.160013)
   (NEXTLARGER O 56)
   )

八进制`16 和 `56 分别是十六进制"0E"2E

但是,一如既往,这里还是有个问题。largesymbols字体中的符号相对于基线的位置很特殊;基本上,它们都悬挂在基线下方,除了用于测量的很小的高度。所以只要这样做

\DeclareMathDelimiter{\modslash}{\mathord}{largesymbols}{"0E}{largesymbols}{"2E}

不会起作用。因此,我修补了和朋友的内部宏,\big在开始时将条件设置为 true,在结束时设置为 false,因此的定义\modslash可以使用该信息,并\big/在条件为 false 时使用(当在和朋友\modslash的上下文中未使用时\big)。

我保留了下标中的示例\modslash,以表明不应使用它。

在此处输入图片描述

如果您只想要自动\big调整大小,即按下标和上标缩放,那么它会“更容易”。

\documentclass{article}
\usepackage{amsmath}
\usepackage{unicode-math}

\makeatletter
\newcommand{\modslash}{\mathord{\text{$\m@th\big/$}}}
\makeatother

\begin{document}

$A \big/ B_{A \big/ B_{A \big/ B}}$

$A \modslash B_{A \modslash B_{A \modslash B}}$

\end{document}

这里unicode-math使用(按照评论),但解决方案与它无关。

注意你不能申请\big和 朋友 到 这个 版本\modslash.

在此处输入图片描述

相关内容