![如何在 LaTeX 中排版右、左逻辑投影二元运算?](https://linux22.com/image/318559/%E5%A6%82%E4%BD%95%E5%9C%A8%20LaTeX%20%E4%B8%AD%E6%8E%92%E7%89%88%E5%8F%B3%E3%80%81%E5%B7%A6%E9%80%BB%E8%BE%91%E6%8A%95%E5%BD%B1%E4%BA%8C%E5%85%83%E8%BF%90%E7%AE%97%EF%BC%9F.png)
在布尔基础知识部分中计算机编程艺术 第 4A 卷、前分册0B,Donald Knuth 引入了左右逻辑投影的符号,这些符号与英文字母非常相似,L
并被R
翻译成逻辑连接词,见第 3 页表 1(PDF 第 7 页)。这正是我在寻找的符号这个 StackExchange 问题。
但是,我不确定在 LaTeX 中用什么命令输出这些符号,而且我无法在综合 LaTeX 符号列表也没有。有人知道 Donald Knuth 是如何想出这些符号的,以及如何在 LaTeX 中排版它们吗?
答案1
扩展我的第一个方法识别神秘的“R”符号,以包含\KnL
与 具有相同高度和宽度的\KnR
。已编辑以调整大放大倍数下符号的质量。
根据 OP 的评论,已编辑以使用 调整大小到“i”的高度\scalerel*{item to scale}{item of target size}
;还将解决方案包含在 中\mathbin
以解决间距问题。请注意,用户可以将目标大小更改为“i”以外的其他大小,以适应他们的感受。
\documentclass{article}
\usepackage{stackengine,scalerel}
\usepackage{graphicx}
\def\KnRgap{\rule{1.63ex}{0ex}\rule[-.3ex]{0ex}{1.8ex}}
\def\KnR{\kern1pt\mathbin{\scalerel*{%
\stackinset{r}{0pt}{b}{0pt}{\rotatebox{53}{\rule{.07ex}{1.29ex}}}{%
\stackinset{l}{0pt}{t}{.02ex}{\rule{.07ex}{1.8ex}}{%
\stackinset{l}{.02ex}{t}{.02ex}{\rule{1ex}{.07ex}}{%
\stackinset{r}{0pt}{t}{.02ex}{\scalebox{.76}{$\supset\mkern -2mu$}}{%
\KnRgap%
}}}}}{i}}\kern1pt%
}
\def\KnL{\kern1pt\mathbin{\scalerel*{%
\stackinset{l}{0pt}{t}{.02ex}{\rule{.07ex}{1.78ex}}{%
\stackinset{l}{.02ex}{b}{0pt}{\rule{1.53ex}{.07ex}}{%
\KnRgap%
}}}{i}}\kern1pt%
}
\begin{document}
$\mathcal{P} \KnR \mathcal{Q} $~~Right projection; second dictator%
$\mathcal{P} \KnL \mathcal{Q} $~~Left projection
\end{document}
使用该\scalerel
方法的一个优点是它可以自动考虑数学风格(此处显示为\textstyle
、\scriptstyle
和\scriptscriptstyle
):
并从该答案扩展第二种方法(同样经过编辑以解决尺寸问题):
\documentclass{article}
\DeclareFontFamily{U}{matha}{\hyphenchar\font45}
\DeclareFontShape{U}{matha}{m}{n}{
<5> <6> <7> <8> <9> <10> gen * matha
<10.95> matha10 <12> <14.4> <17.28> <20.74> <24.88> matha12
}{}
\DeclareSymbolFont{matha}{U}{matha}{m}{n}
\DeclareMathSymbol{\varcup}{3}{matha}{"59}
\usepackage{stackengine,scalerel}
\usepackage{graphicx}
\def\KnRgap{\rule{1.45ex}{0ex}\rule[-.3ex]{0ex}{1.8ex}}
\def\KnR{\kern1pt\mathbin{\scalerel*{%
\stackinset{r}{0pt}{b}{0pt}{\rotatebox{45}{\rule{.08ex}{1.14ex}}}{%
\stackinset{l}{0pt}{t}{.02ex}{\rule{.08ex}{1.8ex}}{%
\stackinset{l}{.02ex}{t}{0.0pt}{\rule{.7ex}{.08ex}}{%
\stackinset{r}{0pt}{t}{0.0ex}{\scalebox{.81}{%
\rotatebox{90}{$\varcup\mkern -2mu$}}}{%
\KnRgap%
}}}}}{i}}\kern1pt%
}
\def\KnL{\kern1pt\mathbin{\scalerel*{%
\stackinset{l}{0pt}{t}{.02ex}{\rule{.08ex}{1.78ex}}{%
\stackinset{l}{}{b}{}{\rule{1.4ex}{.08ex}}{%
{%
\KnRgap%
}}}}{i}}\kern1pt%
}
\begin{document}
$\mathcal{P} \KnR \mathcal{Q} $~~Right projection; second dictator%
$\mathcal{P} \KnL \mathcal{Q} $~~Left projection
\end{document}