我想要一个更大的斜线符号。如何让它可扩展?最小示例:
% 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
.