我想出了一种在 LaTeX 中显示讲师用于嵌入偏序集的符号的方法,因为找不到它作为标准符号。我采用的方法是使用 TikZ 图片作为新函数,代码如下
\newcommand{\Sqsubset}{
\kern3pt
\begin{tikzpicture}
\draw (0ex,0ex) -- (0ex,1.3ex);
\draw (0ex,0) -- (1.3ex,0ex);
\draw (0ex,1.3ex) -- (1.3ex,1.3ex);
\draw (0.325ex,0.325ex) -- (1.3ex,0.325ex);
\draw (0.325ex,0.325ex) -- (0.325ex,0.975ex);
\draw (0.325ex,0.975ex) -- (1.3ex,0.975ex);
\end{tikzpicture}
\kern3pt }
我基本上只是想知道是否有一种方法可以使用这个符号,而不必让编译器每次都从代码中提取它......也许将它保存为字形?
答案1
符号质量可以得到提高。
间距:
\mathrel
照顾不同数学环境中的水平数学模式间距。- 符号的侧边距可以从 3pt 减少到类似的值
sqsubset
。
线条图:
不应分割折线并将线段绘制为单线。这样线连接设置就不适用。如果将线绘制为连接线,则可以使线连接更平滑。下面的示例使用设置
round
。并且线帽也可以做成圆形,就像这样
\sqsubset
。
完整示例:
\documentclass{article}
\usepackage{tikz}
% Old version
\newcommand{\OldSqsubset}{
\kern3pt
\begin{tikzpicture}
\draw (0ex,0ex) -- (0ex,1.3ex);
\draw (0ex,0) -- (1.3ex,0ex);
\draw (0ex,1.3ex) -- (1.3ex,1.3ex);
\draw (0.325ex,0.325ex) -- (1.3ex,0.325ex);
\draw (0.325ex,0.325ex) -- (0.325ex,0.975ex);
\draw (0.325ex,0.975ex) -- (1.3ex,0.975ex);
\end{tikzpicture}
\kern3pt }
% New version
\newcommand{\Sqsubset}{%
\mathrel{%
\tikz[line cap=round, line join=round]
\draw
(1.3ex, 0ex) -- (0ex, 0ex) -- (0ex, 1.3ex) -- (1.3ex, 1.3ex)
(1.3ex, 0.325ex) -- (0.325ex, 0.325ex) -- (0.325ex, 0.975ex)
-- (1.3ex, 0.975ex)
(-.13ex, 0ex) (1.3ex + .13ex, 0ex) % side bearings
;%
}%
}
\begin{document}
\noindent
$A \OldSqsubset B$
$A \Sqsubset B$
\end{document}
答案2
使用标准符号不是更好吗?
\documentclass{article}
\usepackage{mathabx}
\begin{document}
\[
A\sqSubset B
\]
\end{document}
可以避免mathabx
改变所有可能不受欢迎的符号。
\documentclass{article}
\DeclareFontFamily{U}{mathb}{}
\DeclareFontShape{U}{mathb}{m}{n}{
<-5.5> mathb5
<5.5-6.5> mathb6
<6.5-7.5> mathb7
<7.5-8.5> mathb8
<8.5-9.5> mathb9
<9.5-11> mathb10
<11-> mathb12
}{}
\DeclareSymbolFont{mathb}{U}{mathb}{m}{n}
\DeclareFontSubstitution{U}{mathb}{m}{n}
\DeclareMathSymbol{\sqSubset}{3}{mathb}{"94}
\DeclareMathSymbol{\sqSupset}{3}{mathb}{"95}
\begin{document}
$A \sqSubset B \sqSupset C$
\end{document}
答案3
这是为了遵循数学风格而做的,我称之为\mathrel
(我的一个假设)。它的高度将始终与大写字母的高度一样高。
已编辑,将第二个参数从 改为\scalerel*
,X
以便\subset
这个新符号永远获得 的高度\subset
,以回应芭芭拉的评论。
\documentclass{article}
\usepackage{tikz,scalerel}
\newcommand{\SqsubsetRAW}{%
\begin{tikzpicture}
\draw (0ex,0ex) -- (0ex,1.3ex);
\draw (0ex,0) -- (1.3ex,0ex);
\draw (0ex,1.3ex) -- (1.3ex,1.3ex);
\draw (0.325ex,0.325ex) -- (1.3ex,0.325ex);
\draw (0.325ex,0.325ex) -- (0.325ex,0.975ex);
\draw (0.325ex,0.975ex) -- (1.3ex,0.975ex);
\end{tikzpicture}}
\newsavebox\SqsubsetBOX
\savebox\SqsubsetBOX{\SqsubsetRAW}
\newcommand\Sqsubset{\mathrel{\scalerel*{\kern1\LMpt\usebox{\SqsubsetBOX}}{\subset}}}
\begin{document}
$Z \subset A\Sqsubset B_{A\Sqsubset B_{A\Sqsubset B}}$
\LARGE
$A\Sqsubset B_{A\Sqsubset B_{A\Sqsubset B}}$
\end{document}
答案4
您可以使用\savebox
。但是,如果符号用于下标或上标等,则可能会出现问题。
代码:
\documentclass{article}
\usepackage{tikz}
\newcommand{\SqsubsetMacro}{%
\kern3pt
\begin{tikzpicture}
\draw (0ex,0ex) -- (0ex,1.3ex);
\draw (0ex,0) -- (1.3ex,0ex);
\draw (0ex,1.3ex) -- (1.3ex,1.3ex);
\draw (0.325ex,0.325ex) -- (1.3ex,0.325ex);
\draw (0.325ex,0.325ex) -- (0.325ex,0.975ex);
\draw (0.325ex,0.975ex) -- (1.3ex,0.975ex);
\end{tikzpicture}%
\kern3pt%
}
\newsavebox{\SqsubsetBox}
\savebox{\SqsubsetBox}{\SqsubsetMacro}
\newcommand{\Sqsubset}{\usebox{\SqsubsetBox}}
\begin{document}
\Sqsubset
\end{document}