在数学模式下自动在字母之间添加空格(跟踪)?

在数学模式下自动在字母之间添加空格(跟踪)?

我无法控制的工具产生以下输出:

\[\mForall{v1 v2 v3 : \mNat{} \mPlus{} \mQuot{}}{a \mLt{} b \mAnd{} b \mLt{} c \mImpl{} a \mLt{} c}\]

我所能做的就是重新定义\m...宏。最终目标是得到类似于以下内容的结果:

forall a \, b \, c \: : \: \mathbb{N} + \mathbb{Q} : ... . \: a < b \wedge b < c \implies a < c

除了一件事之外,所有这些都很容易: 中的间距\mForall。我想我需要将它的第一个参数拆分在冒号周围,并用细数学空格替换前半部分的空格,而后半部分保持不变。

我可以使用 pdfLaTeX 轻松实现这一点吗?

答案1

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath,amsfonts}


%[1] to remove spurious {}
\newcommand{\mNat}[1]{\mathbb{N}}
\newcommand{\mPlus}[1]{+}
\newcommand{\mQuot}[1]{\mathbb{Q}}
\newcommand{\mLt}[1]{<}
\newcommand{\mAnd}[1]{\land}
\newcommand{\mImpl}[1]{\Rightarrow}

\newcommand\mForall[2]{\forall #1:#2}

\begin{document}

\[\mForall{a b c : \mNat{} \mPlus{} \mQuot{}}{a \mLt{} b \mAnd{} b \mLt{} c \mImpl{} a \mLt{} c}\]


\def\mForall#1#2{\forall \xaddsp #1:#2}
\def\xaddsp#1 {%
\ifx:#1:\else
#1\,\expandafter\xaddsp
\fi}
\[\mForall{a b c : \mNat{} \mPlus{} \mQuot{}}{a \mLt{} b \mAnd{} b \mLt{} c \mImpl{} a \mLt{} c}\]

\end{document}

答案2

这是一个expl3版本;第一个参数\mForall在冒号处拆分,第一部分被处理为另一个序列,并\,在每个项目之间添加。

第二部分和第二个参数只是用冒号分隔。

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\mForall}{mm}
 {
  \mForallFirst{#1} : #2
 }

\NewDocumentCommand{\mForallFirst}{m}
 {
  \seq_set_split:NVn \l_tmpa_seq \c_colon_str { #1 }
  \clement_split_vars:f { \seq_item:Nn \l_tmpa_seq { 1 } }
  :
  \seq_item:Nn \l_tmpa_seq { 2 }
}
\cs_generate_variant:Nn \seq_set_split:Nnn { NV }

\cs_new_protected:Nn \clement_split_vars:n
 {
  \seq_set_split:Nnn \l_tmpb_seq { ~ } { #1 }
  \forall
  \seq_use:Nn \l_tmpb_seq { \, }
 }
\cs_generate_variant:Nn \clement_split_vars:n { f }
\ExplSyntaxOff

\newcommand{\mNat}{\mathbb{N}}
\newcommand{\mPlus}{+}
\newcommand{\mQuot}{\mathbb{Q}}
\newcommand{\mLt}{<}
\newcommand{\mAnd}{\land}
\newcommand{\mImpl}{\Rightarrow}

\begin{document}

\[\mForall{a b c : \mNat{} \mPlus{} \mQuot{}}{a \mLt{} b \mAnd{} b \mLt{} c \mImpl{} a \mLt{} c}\]

\end{document}

在此处输入图片描述

相关内容