如何缩短 \diagup?

如何缩短 \diagup?

我有以下问题:我需要一些\boxdiag\boxbslash符号,但我还是个 TeX 菜鸟,所以当包发生冲突时我不知道该怎么办。在这种情况下,我尝试的任何带有符号的包\boxdiag最终都会与amsmath(?) 发生冲突,\vec被发现是当场犯下的。由于我是个非常狡猾的菜鸟,我找到了一种方法,至少有一个简洁的\boxbslash模拟器:\mathrlap{\smallsetminus}\square。请注意,\smallsetminus完美适合\square。但\diagup不是。所以,我在寻找\foobar带有的\foobar:\smallsetminus=\diagup:\diagdown。(甚至尝试过\mathrlap{\angle}\square:-)更改的字体大小\diagup似乎在内部也不起作用\mathrlap(它是一个数学环境)。或者您有其他不需要相互检查 20 个包的想法吗?

答案1

适合现有的尺寸\square。开始打保龄球吧!

\documentclass{article}
\usepackage{scalerel,amssymb,stackengine}
\DeclareRobustCommand\boxdiag{\boxslsh{1}}
\DeclareRobustCommand\boxbslash{\boxslsh{-1}}
\newcommand\boxslsh[1]{
\mathchoice{
  \ensurestackMath{\stackengine{0pt}{\square}
  {\stretchrel*[80]{\hstretch{#1}{/}}{\square}}{O}{c}{F}{T}{L}}
}{
  \ensurestackMath{\stackengine{0pt}{\square}
  {\stretchrel*[80]{\hstretch{#1}{/}}{\square}}{O}{c}{F}{T}{L}}
}{
  \ensurestackMath{\stackengine{0pt}{\scriptstyle\square}
  {\scriptstyle\stretchrel*[74]{\hstretch{#1}{/}}{\square}}{O}{c}{F}{T}{L}}
}{
  \ensurestackMath{\stackengine{0pt}{\scriptscriptstyle\square}
  {\scriptscriptstyle\stretchrel*[66]{\hstretch{#1}{/}}{\square}}{O}{c}{F}{T}{L}}
}}
\begin{document}
$\boxdiag\boxbslash$

$\scriptstyle\boxdiag\boxbslash$

$\scriptscriptstyle\boxdiag\boxbslash$
\end{document}

在此处输入图片描述

如果您的数学字体发生变化,唯一需要调整的是那些\stretchrel*可选参数。例如,txfonts加载后,选项应[72]适用于所有 4 种数学样式。

在此处输入图片描述

答案2

偶然间,我注意到我已经加载了包graphicx(没有冲突),这意味着我可以旋转符号。因此 gruesome \rotatebox[origin=c]{90}{$\mathrlap{\smallsetminus}\square$}(当然我同时用 宏化了它\newcommand)可以完成这个任务,没有任何副作用,而且看起来几乎和上述包中的原生带对角线的方框符号一样完美。结案 :-) 编辑
:或者至少几乎如此。这个 hack 不能在caption环境中使用(incomplete \iffalse似乎会抛出错误 - 仍在试验中),当在数学模式下用作索引时,必须格外小心,括号和美元必须按正确的顺序排列。

相关内容