如何正确自定义数学排版中的空格和字符

如何正确自定义数学排版中的空格和字符

目前我想定义具有这种精确空格格式的空格

{ a, b, c }
{}
f : X -> Y
X:Y

{}(请注意和中缺少空格X:Y)。

我还想用我自己的风格来设计一些希腊字符,以及标点符号的颜色。

目前我正在做的事情是:

\mylcurly a \mycomma b \mycomma c \myrcurly

但是(除了冗长之外)它在{ a, b, c }和的情况下会崩溃{},因为两个花括号对的空格不同,所以我最终不得不这样做:

\mylcurlya a \mycomma b \mycomma c \myrcurlya
\mylcurlyb \myrcurlyb

:最初例子中的冒号也是如此。

本质上我想做的事情有两点:

  1. 正确管理空白。
  2. 正确管理自定义彩色字符。

(似乎 LaTeX 引擎在后台对文本做了各种有趣的事情,所以想知道我是否可以以某种方式做同样的事情)。

我想知道我的方法是否正确,或者是否有更像 LaTeX 的方式来处理它。也许有一种方法可以为文本指定一个样式指南,例如使用模式匹配来定义以某种方式设置样式的内容。例如,也许有一种方法可以做到这一点:

p > {
  becomes
\mylcurly

MWE 是这样的:

\documentclass[a4paper]{article}

\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{color}

\newcommand{\myin}{\;\textcolor{blue}{\in}\;}
\newcommand{\mycolon}{\;\;\textcolor{blue}{:}\;\;}
\newcommand{\mycolonb}{\textcolor{blue}{:}}
\newcommand{\myrarrow}{\;\;\textcolor{blue}{\rightarrow}\;\;}
\newcommand{\mylarrow}{\;\;\textcolor{blue}{\leftarrow}\;\;}
\newcommand{\myeq}{\;\textcolor{blue}{=}\;}
\newcommand{\myand}{\;\textcolor{blue}{\land}\;}
\newcommand{\myor}{\;\textcolor{blue}{\lor}\;}
\newcommand{\mylcurly}{\;\textcolor{blue}{\{}\;}
\newcommand{\myrcurly}{\;\textcolor{blue}{\}}\;}
\newcommand{\mycomma}{\textcolor{blue}{,}\;}

\begin{document}

$\mylcurly a \mycomma b \mycomma c \myrcurly \mycomma \mylcurly \dots$

$\mylcurly\myrcurly$

$f \mycolon X \myrarrow Y$

$X \mycolon Y$

\end{document}

它显示的输出如下:

{ a, b, c }, { ...
{ }
f : X -> Y
X : Y

输出应为:

{ a, b, c }, { ...
{}
f : X -> Y
X:Y

我知道如何使空格符合此示例中的模式。我不确定的是,这是否是“设置文本样式”的一般正确方法,或者是否有更好的方法可以更好地处理诸如空格不足和空格相同的边缘情况{}X:Y更少的临时性)。实际上,在不同情况下有更多空格缺失的示例,这些只是我在 MWE 中包括的几个简单示例,以简化问题。

更新

如果有帮助的话,这是原始图像和所需图像。此外,这里还有制作所需图像的源代码。

$\mylcurly a \mycomma b \mycomma c \myrcurly\!\! \mycomma \mylcurly \dots$

$\mylcurly\!\!\!\myrcurly$

$f \mycolon X \myrarrow Y$

$X\!\!\! \mycolon\!\!\! Y$

enter image description here enter image description here

答案1

总结一下评论,听起来好像在 LaTeX 中没有办法通用地做到这一点。相反,建议的替代方案是:

  1. 使用\mathrel\mathbin\mathop\mathord(\mathbin 和 \mathrel 之间有什么区别?\mathop 和 \mathord 之间的区别
  2. 改变运算符或关系周围的间距\thickmuskip等(如何改变二元关系间距的默认值?
  3. 手动更改间距(https://www.sharelatex.com/learn/Spacing_in_math_mode

否则,无法使用 CSS 功能并在某些情况下控制字母间距,所有这些都是在 LaTeX 后台实现的。

在我的例子中,我不一定(在语义上)改变运算符与关系,所以这样做是一种 hack。我只是在视觉上改变任意字符组合之间的间距,有点像连字。在这种情况下,最好的解决方法似乎是 (3),手动设置间距并处理这样一个事实:你会失去所有的数学间距功能,因为如果你尝试过多地自定义它们,它们最终还是会成为障碍。

相关内容