我有以下问题:我需要一些\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
似乎会抛出错误 - 仍在试验中),当在数学模式下用作索引时,必须格外小心,括号和美元必须按正确的顺序排列。