我已经定义了一个自定义环境:
\documentclass[11pt]{article}
\usepackage[table,hyperref]{xcolor} % Better control over color
\usepackage[colorlinks=true, linkcolor=DarkBlue, citecolor=DarkBlue, urlcolor=DarkBlue, breaklinks=true]{hyperref}
\usepackage[nameinlink]{cleveref}
\newcommand{\questid}[1]{\renewcommand{\givenquestid}{#1}}
\newcommand{\questtitle}[1]{\renewcommand{\givenquesttitle}{#1}}
\newcommand{\givenquestid}{REQUIRED!}
\newcommand{\givenquesttitle}{REQUIRED!}
\newcounter {questc}
\newenvironment{quest}%
{
\small
\rowcolors{1}{}{lightgray}
}%
{
\refstepcounter{questc}\label{quest:\givenquestid}
Something goes here.
}
\crefname{questc}{Quest}{Quests}
\begin{document}
\begin{quest}
\questid{1}
\questtitle{Collect wolf pelts}
\end{quest}
\end{document}
我想用\nameref
标题来引用环境。也就是说,我想\nameref{quest:1}
给出这样的引用:“任务 1:收集狼皮。”
如何在自定义环境中指定名称格式?
答案1
\@currentlabelname
如果你想的话,你必须设置nameref
提取适当的内容。由于您使用 指定问题标题\questtitle
,因此您可以使用以下方式合并此添加内容:
\makeatletter
\newcommand{\questtitle}[1]{%
\renewcommand{\givenquesttitle}{#1}%
\protected@edef\@currentlabelname{Quest~\givenquestid: #1}}
\makeatother