![非正方形的符号 \not\square 看起来很糟糕](https://linux22.com/image/384721/%E9%9D%9E%E6%AD%A3%E6%96%B9%E5%BD%A2%E7%9A%84%E7%AC%A6%E5%8F%B7%20%5Cnot%5Csquare%20%E7%9C%8B%E8%B5%B7%E6%9D%A5%E5%BE%88%E7%B3%9F%E7%B3%95.png)
我很难找到一个适合非正方形的符号。我想得到一个划掉的正方形,但是
$\not\square$
命令没有将该行放置在正确的位置。
使用包 centernot 它会变得更好一点
\usepackage{centernot}
$\centernot\square$
现在,线条位于正确的位置,但并不像应有的那样对称:线条刚好到达正方形的顶部。有什么想法吗?
答案1
由于 是\not
为了应用于数学关系而制作的,因此更好的语法应该是\mathord{\not\mathrel{\square}}
。然而,虽然这解决了水平位置的问题,但垂直位置仍然不是理想的。
因此我建议一种“最佳”stackengine
方法。
然而,OP 指出希望避免使用额外的包,因此我进行了编辑以提供本机的替代方案。
\documentclass{article}
\usepackage{amssymb,stackengine}
\begin{document}
\[
\textrm{Better: }\quad\mathord{\not\mathrel{\square}}
\]
\[
\textrm{Best: }\quad\ensurestackMath{\stackinset{c}{}{c}{}{/}{\square}}
\]
\[
\textrm{Alternative: }\quad\raisebox{1pt}{$\not\mathrel{\raisebox{-1pt}{$\square$}}$}
\]
\end{document}
答案2
通过让 TeX 进行计算,您可以避免任何猜测。
\documentclass{article}
\usepackage{amsmath,amssymb}
\makeatletter
\DeclareRobustCommand{\notsquare}{\mathord{\mathpalette\generic@not\square}}
\newcommand{\generic@not}[2]{%
\sbox\z@{$\m@th#1/$}%
\sbox\tw@{$\m@th#1#2$}%
\sbox\z@{\raisebox{\dimexpr(\ht\tw@-\dp\tw@-\ht\z@+\dp\z@)/2\relax}{$\m@th#1/$}}%
\vphantom{\usebox{\z@}}%
\ooalign{\hidewidth\usebox{\z@}\hidewidth\cr$\m@th#1#2$\cr}%
}
\makeatother
\begin{document}
$\square\notsquare_{\square\notsquare}$
\end{document}
我使用是\mathord
因为这样\square
。
答案3
您可以使用以下\square
方式定义自己的符号作为覆盖:/
\ooalign
\documentclass{article}
\usepackage{amssymb}
\newcommand{\notsquare}{
\mathrel{
\ooalign{
$\square$\cr
\hidewidth\raise.225ex\hbox{$/$}\hidewidth
}
}
}
\begin{document}
\[
f \mathrel{\square} g \notsquare h
\]
\end{document}
以下是一个简短的课程\ooalign
:\subseteq
+\circ
作为单个符号(“开子集”)