强制 LaTeX 调整 ':' 间距以匹配 \colon

强制 LaTeX 调整 ':' 间距以匹配 \colon

如上所述这里,数学函数应该使用 来定义\colon,而集合定义应该使用:。我的问题是,我定义函数的次数比定义集合的次数多二十倍,\colon每次都输入代码是一个严重的开销;它使我的代码的可读性大大降低,而且每次都会产生一些脑力开销,从而减慢记笔记的速度。

我已经更喜欢|使用 来定义集合:,而不是 ,因此默认:对我来说没有用。是否可以重新定义它,使其表现得像 一样\colon

答案1

amsmath可能正在使用的\colon不仅仅是一个标点符号,而且使用了稍微不同的间距(第 3 行是没有 时得到的amsmath)。

在第 4 行中我使用了\relcolon集合符号。

警告这将打破babel-french

\documentclass{article}
\usepackage{amsmath}

\usepackage{etoolbox}

% a colon as ordinary symbol
\DeclareMathSymbol{\mathordcolon}{\mathord}{operators}{"3A}

% a colon as relation symbol
\DeclareMathSymbol{\relcolon}{\mathrel}{operators}{"3A}

% the definition of \colon in amsmath contains :
% which would start an infinite loop
\patchcmd{\colon}{:}{\mathordcolon}{}{}

% provide a definition of : as an active character
\begingroup\lccode`~=`: \lowercase{\endgroup\let~}\colon

% make : math active
\AtBeginDocument{\mathcode`:="8000 }

\begin{document}

1. $f\colon A\to B$ with \verb|\colon|

2. $f:A\to B$ with \verb|:|

3. $f\mathpunct{\mathordcolon} A\to B$

4. $\{\,x\in X\relcolon x=x\}$

\end{document}

在此处输入图片描述

答案2

:下面的示例首先显示了and的原始行为\colon。然后将关系冒号保存为命令\relcolon,并将冒号符号重新分配为标点冒号:

\documentclass{article}
\begin{document}
\[
  a\colon b:c
\]
%
\mathchardef\relcolon=\mathcode`\:
\mathcode`\:=\colon
%
\[
  a:b\relcolon c
\]
\end{document}

结果

答案3

我并不是严格地回答这个问题,而是:我没有玩集合和函数,而是有一个\set{...}宏(来自http://tex.stackexchange.com/questions/209863),以及一个\map宏来实现类似的结果:

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

% http://tex.stackexchange.com/questions/209863
\DeclarePairedDelimiterX{\set}[1]{\{}{\}}{\setargs{#1}}
\NewDocumentCommand{\setargs}{>{\SplitArgument{1}{|}}m}{\setargsaux#1}
\NewDocumentCommand{\setargsaux}{mm}
{\IfNoValueTF{#2}{#1} {#1\,\delimsize|\,\mathopen{}#2}}

\newcommand\map[1]{\colon #1\longrightarrow}

\begin{document}

  \verb+$\set{1,2,\dots,n}$+
  $\set{1,2,\dots,n}$

  \verb+$\set{1\le k\le n|k\in\mathbb{Z}}$+
  $\set{1\le k\le n|k\in\mathbb{Z}}$

  \verb+$\set[\Bigg]{\displaystyle\sum_{k=1}^n| 1\le n\le 100}$+

  $\set[\Bigg]{\displaystyle\sum_{k=1}^n| 1\le n\le 100}$

  \verb+$f\map AB$+
  $f\map AB$

   \verb+$f\map{\mathbb{R}}\mathbb{R}$+
   $f\map{\mathbb{R}}\mathbb{R}$

\end{document}

输出:

在此处输入图片描述

因为我更喜欢使用\longrightarrow\to所以输入比输入然后\map好得多。另一个优点是和看起来都非常接近数学含义。\colon\longrightarrow\set\map

相关内容