我第一次在 newenvironment 中使用自定义计数器,不太明白其中的细微差别。到目前为止,我遇到的唯一问题是,当我使用\ref
它时,它会得到我想要的数字,但不是我想要的格式。我希望引用具有与原始编号相同的格式。在这个 MWE 中,注释掉的行具有我想要的格式。获得它的正确方法是什么?
\documentclass[12pt]{article}
% problem numbering
\newcounter{pcntr} % count the problems
\newenvironment{Problems}{
\begin{list}{\textbf{\alph{pcntr})~}}{\usecounter{pcntr}}
}{
\end{list}
}
% problem referencing
%\newcommand{\qref}[1]{part~\textbf{\alph{\ref{#1}})}}
\newcommand{\qref}[1]{part~\textbf{\ref{#1})}}
\begin{document}
\begin{Problems}
\item \label{prb:test1} Blah blah blah
\item \label{prb:test2} As we saw in \qref{prb:test1}, \dots
\item \label{prb:test3} Also, \qref{prb:test2} is quite interesting.
\end{Problems}
\end{document}
答案1
\thepcntr
正确定义后使用。
\documentclass[12pt]{article}
% problem numbering
\newcounter{pcntr} % count the problems
\renewcommand{\thepcntr}{\alph{pcntr}}
\newenvironment{Problems}
{\begin{list}{\textbf{\thepcntr)~}}{\usecounter{pcntr}}}
{\end{list}}
% problem referencing
\newcommand{\qref}[1]{part~\textbf{\ref{#1})}}
\begin{document}
\begin{Problems}
\item \label{prb:test1} Blah blah blah
\item \label{prb:test2} As we saw in \qref{prb:test1}, \dots
\item \label{prb:test3} Also, \qref{prb:test2} is quite interesting.
\end{Problems}
\end{document}
答案2
enumitem
您可能希望使用和包的功能cleveref
来实现您的格式化目标。
使用的优点\cref
是您可以一次交叉引用多个项目(“部分”)。例如,写出来\Cref{prb:test2,prb:test1} are both quite interesting.
会得到“部分 a) 和 b) 都相当有趣。”
\documentclass[12pt]{article}
\usepackage{enumitem}
\newlist{Problems}{enumerate}{1} % define a new enumerate-like environment
\setlist[Problems]{label=\bfseries\alph*)}
\usepackage{cleveref}
\crefname{Problemsi}{part}{parts} % prefix for cross-references
\begin{document}
\begin{Problems}
\item \label{prb:test1} Blah blah blah
\item \label{prb:test2} As we saw in \cref{prb:test1}, \dots
\item \label{prb:test3} Also, \cref{prb:test2} is quite interesting.
\end{Problems}
\end{document}