我试图创建一个自动标记功能,但是它不起作用,我能够将问题分解为以下几行:
\newcommand{\foo}[1]{\label{fooref:#1}}
看起来 latex 没有将 #1 解析为参数:当我使用时,\foo{picture}
有一个名为的链接fooref:#1
而不是fooref:picture
答案1
这是一个设置两个用户宏的解决方案:\mylab
和\myref
。通过调用创建的标签的默认前缀字符串\mylabel
设置为“fooref”。可以通过为\mylab
和提供可选参数来覆盖此前缀\myref
。
\documentclass{article}
\newcommand{\mylab}[2][fooref]{\label{#1:#2}}
\newcommand{\myref}[2][fooref]{\ref{#1:#2}}
\begin{document}
\section{hello} \mylab{stuff} % label string is 'fooref:stuff'
\setcounter{equation}{7} % just for this example
\begin{equation} \mylab[zzz_ref]{euler} % label string is 'zzz_ref:euler'
e^{i\pi}-1=0
\end{equation}
A cross-reference to section \myref{stuff}.
A cross-reference to equation \myref[zzz_ref]{euler}.
\end{document}