我希望对 d 列表中嵌套项目的引用enumerate
包含列表中的所有标点符号。这是一个简单示例:
\documentclass{article}
\begin{document}
\begin{enumerate}
\item whatever
\item 1st level \label{first}
\begin{enumerate}
\item whatever
\item 2nd level \label{second}
\begin{enumerate}
\item whatever
\item 3rd \label{third}
\begin{enumerate}
\item whatever
\item 4th \label{fourth}
\end{enumerate}
\end{enumerate}
\end{enumerate}
\end{enumerate}
1st: \ref{first}
2nd: \ref{second}
3rd: \ref{third}
4th: \ref{fourth}
\end{document}
这是我得到的输出(我将其显示为代码,因为引号没有保留行首的空格)
1. whatever
2. 1st level
(a) whatever
(b) 2nd level
i. whatever
ii. 3rd
A. whatever
B. 4th
1st: 2
2nd: 2b
3rd: 2(b)ii
4th: 2(b)iiB
问题是最后的四个参考文献缺少标点符号。我希望最后的参考文献看起来像这样:
第一:2.
第二:2.(b)
第三:2.(b).ii.
第四:2.(b).ii.B.
尽管不可否认它很丑,但有人还是要求参考文献与列表中的完全一样。
我希望不使用\usepackage
大多数 Latex 安装中不标准的任何内容来执行此操作。因此,我想重新定义工作方式\ref
并让其保留所有标点符号,或者重新定义任何可以让它按照我的要求执行的内容,而不包含任何外部包。
答案1
没有 OP 想要的任何包裹。
\documentclass{article}
\renewcommand{\theenumi}{\arabic{enumi}.}
\renewcommand{\labelenumi}{\theenumi}
\renewcommand{\theenumii}{(\alph{enumii})}
\renewcommand{\labelenumii}{\theenumii}
\renewcommand{\theenumiii}{\roman{enumiii}.}
\renewcommand{\labelenumiii}{\theenumiii}
\renewcommand{\theenumiv}{\Alph{enumiv}.}
\renewcommand{\labelenumiv}{\theenumiv}
\makeatletter
\renewcommand\p@enumii{\theenumi}
\renewcommand\p@enumiii{\theenumi\theenumii.} %% if you don't want that dot between "(b)" and "ii" remove the . at the end after \theenumii
\makeatother
\begin{document}
\begin{enumerate}
\item whatever
\item 1st level \label{first}
\begin{enumerate}
\item whatever
\item 2nd level \label{second}
\begin{enumerate}
\item whatever
\item 3rd \label{third}
\begin{enumerate}
\item whatever
\item 4th \label{fourth}
\end{enumerate}
\end{enumerate}
\end{enumerate}
\end{enumerate}
1st: \ref{first}
2nd: \ref{second}
3rd: \ref{third}
4th: \ref{fourth}
\end{document}