![检查宏参数是否具有特定前缀](https://linux22.com/image/259948/%E6%A3%80%E6%9F%A5%E5%AE%8F%E5%8F%82%E6%95%B0%E6%98%AF%E5%90%A6%E5%85%B7%E6%9C%89%E7%89%B9%E5%AE%9A%E5%89%8D%E7%BC%80.png)
我正在写一篇数学论文,我有一些宏,它们以定理、推论等的标签作为参数。我想知道,有没有办法检查标签是否以特定前缀开头?
也就是说,\reftitle
对 执行“定理” \reftitle{thm:122}
、对 执行“推论” \reftitle{cor:124}
、对 执行“陈述”的命令\reftitle{stmt:122}
。
这个想法是宏需要检查参数是否以cor
、thm
等开头。
我对 LaTeX 中的宏还不太熟悉,但我不知道该怎么做。有人有什么想法吗?
答案1
\def\reftitle#1{\xreftitle#1:\relax}
\def\xreftitle#1:#2\relax{%
\def\tmp{#1}%
\def\tmpb{thm}\ifx\tmp\tmpb Theorem\fi
\def\tmpb{cor}\ifx\tmp\tmpb Corollary\fi
}
a \reftitle{thm:foo}
b \reftitle{cor:foo}
c \reftitle{foo}
然而,与其依赖标签前缀,也许更好的方法是记录在引用时自动引用的单元类型\label
(例如 hyperref 所做的那样)