我正在尝试使用 TikZcd 来创建更好的同构映射符号。我看过关于这个问题的其他帖子,它们都很糟糕,他们甚至承认他们的解决方案并不好。 同构地图的符号?
我个人觉得下面的箭头还挺好看的(做了一些调整),其中的例子是从1到2的箭头:
这是由代码生成的
$1 \hspace{-0.4cm}
\begin{tikzcd}
\phantom{1} \arrow[r, "\sim"] & \phantom{1}
\end{tikzcd}
\hspace{-0.4cm}
2$
由于这有点混乱,所以我想将其放入这样的命令中
\newcommand*\isomap{
\hspace{-0.4cm}
\begin{tikzcd}
\phantom{1} \arrow[r, "\sim"] & \phantom{1}
\end{tikzcd}
\hspace{-0.4cm}
}
但我得到了错误
Package pgf: Single ampersand used with wrong catcode.
我查过这个错误,但结果与我的情况无关(据我所知)。有什么想法可以将其放入命令中吗?
答案1
另一个建议是stackengine
:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}%
\usepackage{old-arrows}
\usepackage[usestackEOL]{stackengine}
\newcommand{\isomarrow}{\mathrel{\setstackgap{S}{-0.5pt}\ensurestackMath{\Shortstack{\scriptstyle\sim\\ \longrightarrow}}}}
\begin{document}
\[ 1 \isomarrow 2\]%
\end{document}
答案2
一种可能的解决方案是不使用tikz-cd
,而是使用\xrightarrow
预定义长度的盒子(我使用了1cm
)。
该命令包含 2 个参数,用作域和余域,例如\isomap{x}{y}
。
\documentclass[11pt,a4paper]{report}
\usepackage{amsthm,amsmath,amssymb,amsfonts}
\newcommand{\isomap}[2]{$ #1 \xrightarrow{\makebox[1cm]{$\sim$}} #2 $}
\begin{document}
the operator $\otimes$ is invariant up to isomorphism \isomap{1}{2}.
the operator $\otimes$ is invariant up to isomorphism \isomap{x}{y}.
\end{document}