如上所述这里,数学函数应该使用 来定义\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
答案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