在数学模式下,我尝试画一个正方形,里面有一个菱形。我尝试在序言中写出以下内容,但失败了:
\newcommand{\sqdiamond}{\mathbin{\rlap{$\mspace{2mu}\diamond$}\hbox{$\square$}}}
但是,菱形符号相对于正方形的缩放比例不正确。我希望菱形的角与正方形边的中点相切,但我不知道如何正确“缩放”菱形。还有其他方法可以做到这一点吗?
答案1
在所有四种数学模式下,让两个符号缩放并正确对齐非常困难。最好使用 TikZ 绘制。一个困难是正确缩放大小和线宽。这最好使用amsmath
\text
宏来完成。我制作了两个略有不同的版本。
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{tikz}
\newcommand{\sqdiamond}{\mathbin{\text{\tikz [x=1ex,y=1ex,line width=.1ex,line join=round] \draw (0,0) rectangle (1,1) (0,.5) -- (.5,1) -- (1,.5) -- (.5,0) -- (0,.5) -- cycle;}}}
\newcommand{\varsqdiamond}{\mathbin{\text{\tikz [x=1ex,y=1ex,line width=.1ex,line join=round] \draw (0,0) rectangle (1,1) (.5\pgflinewidth,.5) -- (.5,1ex-.5\pgflinewidth) -- (1ex-.5\pgflinewidth,.5) -- (.5,.5\pgflinewidth) -- (.5\pgflinewidth,.5) -- cycle;}}}
\begin{document}
% Test code:
.. $a \sqdiamond b$ ..
\[a \sqdiamond b \]
.. $X_{a \sqdiamond b}$ ..
.. $X_{X_{a \sqdiamond b}}$ ..
.. $a \varsqdiamond b$ ..
\[a \varsqdiamond b \]
.. $X_{a \varsqdiamond b}$ ..
.. $X_{X_{a \varsqdiamond b}}$ ..
\end{document}
放大:
变体 1:
变体 2:
答案2
这似乎适用于 Computer Modern 字体,但它依赖于字体:
\newcommand{\sqdiamond}{\mathbin{\ooalign{%
$\scriptstyle\square$\cr\hfil\raisebox{.15pt}{$\diamond$}\hfil\cr}}}
答案3
这是一种可能性,使用蒂克兹:
\usepackage{tikz}
\newcommand{\sqdiamond}{%
\tikz{\draw (0,0) rectangle (6pt,6pt);
\draw (3pt,0) -- (6pt,3pt) -- (3pt,6pt) -- (0,3pt) -- (3pt,0);}
}
答案4
使用xy
包(特别是\usepackage[all]{xy}
),我们可以用正方形围住菱形,如下所示:
$\xymatrix{*[F]{\diamondsuit}}$
这似乎可以正确缩放到所有字体大小、显示数学、脚注等。唯一的问题是放在后面的下标是否会正确间隔。为此,以下调整似乎有效,但不能保证与字体大小无关:
\documentclass{amsart}
\usepackage[all]{xy}
\newcommand\sd{\xymatrix{*[F]{\diamondsuit}}\hspace{0.5mm}}
\begin{document}
Jensen invented $\diamondsuit_\lambda$ and $\square_\lambda$.
We want to combine them.
Like this:
$\sd_\lambda$
\end{document}