排版模态符号的一致方法

排版模态符号的一致方法

在逻辑中,模态通常用命题前的几何符号来表示,其中形状的选择很大程度上取决于传统。

amsfontsamssymb提供各种符号,如\square\lozenge,一开始看起来就很好。

然而,寻找更多符号似乎特别具有挑战性。由于模态通常是链接在一起的,因此视觉高度和笔划粗细应该大致相同才能很好地适应。我通过符号表进行了广泛的搜索,如果我没有遗漏任何东西,似乎没有一个圆圈符合标准。类似地,它们的\triangleleft高度也不相同。

参考图像展示圆形、正方形和三角形。

这些符号应该被当作\mathord或视为微分符号d(前面有一个细小的空格,后面没有空格)。下面是我手头正好有的一本书的例子。 扫描的书页 目前我使用 TikZ 绘制符号。有没有更好的方法?

答案1

您可以使用logix包。它需要 Unicode 引擎(lualatex 或 xelatex)。符号在数学和文本模式下均可用。

\documentclass{article}
\usepackage{logix}

\begin{document}
\FacNec\FacPos\FacNext\FacFutr\FacPast\FacCont\FacNonCont
\end{document}

在此处输入图片描述

根据该软件包,它们是为与 Stix 字体一起使用而设计的,因此如果 logix 字体与您使用的字体不匹配,您可以尝试将以下内容添加到序言中:

\setmainfont{STIX Two Text}
\setmathfont{STIX Two Math}

答案2

您已经有了一个很好的 LaTeX 答案,使用 logix 包及其特定字体(在排版逻辑方面,它确实似乎涵盖了很多内容)。我认为 ConTeXt lmtx 答案是有用途的,如果不是为了让更多人意识到为此类任务定义新数学类的可能性,并设置一致的间距。

如果我们context在文件上运行

% \showglyphs
% \showmakeup[mathglue]
% \setupbodyfont[pagella]

\registerengineclass [modal] [MOD]

\setnewconstant  \mathmodalcode  \mathclassvalue   modal
\copymathspacing \mathmodalcode  \mathordinarycode


\Umathchardef \modalnecessary \mathmodalcode   0 "25A1
\Umathchardef \modalpossible  \mathmodalcode   0 "25CA
\Umathchardef \modalnext      \mathmodalcode   0 "25CB
\Umathchardef \modalleft      \mathmodalcode   0 "22B2
\Umathchardef \modalright     \mathmodalcode   0 "22B3
\Umathchardef \modalU         \mathbinarycode  0 "1D4B0

\starttext
\startTEXpage[offset=1DK]
Some inline formulas:

\im {\modalnecessary _F(\varphi \rightarrow \psi ) \rightarrow (\modalnecessary _F \varphi \rightarrow \modalnecessary _F \psi)}

\im {\modalnext (\varphi \rightarrow \psi) \rightarrow (\modalnext  \varphi \rightarrow \modalnext  \psi)}

\im {\modalnext \neg\varphi \leftrightarrow \neg\modalnext \varphi}

\im {\varphi \modalU \psi \rightarrow \modalpossible_F \psi}

\im {\modalleft \psi \rightarrow \neg \modalright \varphi}

Changing the spacing:

\im{A\modalnecessary B \neq A \square B}

\inherited\setmathspacing \mathordinarycode \mathmodalcode \allsplitstyles  \thinmuskip
\inherited\setmathspacing \mathordinarycode \mathmodalcode \allscriptstyles \pettymuskip

\im{A\modalnecessary B \neq A \square B}
\stopTEXpage
\stoptext

我们得到

模态输出

有几条评论如下:

  • 我不太了解模态逻辑,所以我不确定到底想要什么。
  • \startTEXpage\stopTEXpage用于为该示例提供一小页。

现在来看看重点部分:

  • 并启动一个新的原子类。确保\registerclass默认情况下它获得与普通类相同的原子间间距。\setnewconstant\copymathspacing
  • 这些\Umathchardef行定义了具有新类的各种数学字符。注意:我只是随机选择了这些名字。\modalU当然,modalbinary如果需要的话,可以激发一个新的原子类,该原子类继承了二进制原子类的间距,并进行了修改。(也许它根本不应该有二进制运算符的间距?)
  • 然后只需在内联数学模式中设置公式即可(\im
  • 在底部,我们展示了如何设置间距,以防有人真的想设置它。在这里,我们设置了普通类和新类之间的间距,我们对\allsplitstyles(所有非脚本样式)和\allscriptstyles(所有脚本样式)都这样做,但可以更细粒度。

如果想要调试并更好地查看间距,可以取消注释前两行。

标有字形和间距

这种方法还可以根据需要切换字体。字体是否好看取决于字体。如果我们取消注释第三行,我们得到

在此处输入图片描述

相关内容