检查 mmode 命令是否在 Tikz-cd 环境中不起作用

检查 mmode 命令是否在 Tikz-cd 环境中不起作用

我有一个命令,它允许我在数学模式下书写\terminal并以 bb-bold 样式打印,但也允许我在文本模式下将其调用为\terminal(而不是\(terminal\)或其他)。我使用的数学字体是因为很难找到好看的 bb-bold 字符来表示 0 和 1 作为初始和终止对象(类别理论)。

但是,我认为在某个环境中调用该命令时检查会失败,tikz-cd导致我收到很多错误(缺少分隔符、缺少数学模式、在文本模式下调用数学字体等)。有没有简单的解决方法可以让我\terminal在数学模式下和数学模式外继续使用相同的命令?

\documentclass[a4paper, 12pt]{article}
\usepackage[utf8]{inputenc}

\DeclareMathAlphabet{\mymathbb}{U}{BOONDOX-ds}{m}{n}
\newcommand{\terminal}{\ifmmode\mymathbb{1}\else$\mymathbb{1}$\fi}

\begin{document}

\begin{figure}
\centering
\begin{tikzcd}[column sep=huge, row sep=huge]
    F \rar["\eta", squiggly, tail] \dar["!", squiggly] & G \dar["\chi_\eta", squiggly] \\
    \terminal \rar["\top", squiggly] &  \Omega
\end{tikzcd}
\end{figure}

\end{document}

答案1

\ensuremath按照您的\ifmmode意图做事。

\documentclass[a4paper, 12pt]{article}
\usepackage{tikz-cd}
\usetikzlibrary{decorations.pathmorphing}
\usepackage[utf8]{inputenc}

\DeclareMathAlphabet{\mymathbb}{U}{BOONDOX-ds}{m}{n}
\newcommand{\terminal}{\ensuremath{\mymathbb{1}}}

\begin{document}

\begin{figure}
\centering
\begin{tikzcd}[column sep=huge, row sep=huge]
    F \rar["\eta", squiggly] & G \dar["\chi_\eta", squiggly] \\
    \terminal 
    \rar["true", squiggly] &  \Omega
\end{tikzcd}
\end{figure}

\end{document}

在此处输入图片描述

相关内容