我有一个命令,它允许我在数学模式下书写\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}