我parlist
使用小写字母来定义项目(我知道还有其他方法可以使用字母来定义项目但无论如何我都想自定义列表样式)。
不幸的是,如果我参考它们,标签上会印有数字。有人能帮我解决吗?
以下是 MWE:
\documentclass[10pt,a4paper]{article}
\usepackage{amsmath}
\newcounter{num}
\newenvironment{parlist}{\begin{list}{(\alph{num})}{\usecounter{num} \leftmargin0pt \itemindent5pt \topsep0pt \labelwidth0pt}}{\end{list}}
\begin{document}
\begin{parlist}
\item This is the first item \label{first}
\item and another one
\end{parlist}
As seen in \eqref{first}...
\end{document}
其结果为:
答案1
重新发明轮子很少会带来实质性的回报。因此,我不会尝试根据我的特定需求调整非常低级的 LaTeX 环境list
,而是加载enumitem
包并在序言中发出以下命令:
\usepackage{enumitem}
\newlist{parlist}{enumerate}{1}
\setlist[parlist]{label=(\alph*),wide=0pt,topsep=0pt}
parlist
您可以亲自验证,就列表式环境的布局而言,此设置产生的输出与您的 版本完全相同。不过,有一个很大的区别: 的输出\ref
现在也是您期望的,即(a)
等。
完整的 MWE (最小工作示例):
\documentclass[a4paper]{article} % '10pt' is the default
\usepackage{lipsum} % for filler text
%\newcounter{num}
%\newenvironment{parlist}{\begin{list}{(\alph{num})}{\usecounter{num}%
% \leftmargin0pt \itemindent5pt \topsep0pt \labelwidth0pt}}{\end{list}}
\usepackage{enumitem}
\newlist{parlist}{enumerate}{1}
\setlist[parlist]{label=(\alph*),wide=0pt,topsep=0pt}
\begin{document}
\begin{parlist}
\item This is the first item \label{first}
\item \lipsum*[2]
\end{parlist}
As seen in \ref{first}, \dots
\end{document}
答案2
重新定义\thenum
:
\documentclass[10pt,a4paper]{article}
\usepackage{amsmath}
\newcounter{num}
\renewcommand{\thenum}{\alph{num}}
\newenvironment{parlist}
{%
\begin{list}{(\thenum)}{%
\usecounter{num}%
\leftmargin0pt
\itemindent5pt
\topsep0pt
\labelwidth0pt
}%
}{\end{list}}
\begin{document}
\begin{parlist}
\item This is the first item \label{first}
\item and another one
\end{parlist}
As seen in \eqref{first}...
\end{document}