完整参考练习

完整参考练习

我有以下设置:

\documentclass{book}
\usepackage{enumitem}
\usepackage{hyperref}
\hypersetup
{
    colorlinks=true,
    linktoc=all,
    linkcolor=black,
    citecolor=teal,
}
\newlist{exercise}{enumerate}{5}
\setlist[exercise]{label*=\thechapter.\arabic*.,ref=\thechapter.\arabic*, 
    before={\section*{\hfil{Exercises -- \thechapter}\hfil}}%
    \addcontentsline{toc}{section}{Exercises -- \thechapter}%
}
\begin{document}
    \let\oldref=\ref 
    \renewcommand{\ref}[1]{\oldref{#1} in page \pageref{#1}}
    \chapter{title}
    \section{title}
    \begin{enumerate}
        \item   bla
                \begin{enumerate}
                    \item   \label{key1}
                            bla
                \end{enumerate}
    \end{enumerate}
    \begin{exercise}
        \item 
            \begin{enumerate}
                \item   bla
                        \begin{enumerate}
                            \item   \label{key}
                                    bla                         
                            \item   bla
                        \end{enumerate}
                \item   bla
            \end{enumerate}
    \end{exercise}
    Exercise \ref{key}, \ref{key1}.
\end{document}

这将产生以下输出。 在此处输入图片描述 我想要\ref生成的exercise是“1.1. 1.(a) in page 1”和第一个员工enumerate“1.(a) in page 1”。当然,它们都应该像现在一样是超链接。我该如何实现呢?

答案1

虽然我认为你想要的格式对读者来说相当混乱,但使用 key 可以轻松实现\setlist*before然而,你应该不是\ref以这种方式重新定义!这肯定会破坏一些东西。相反,定义一个新命令,比如\myref,也输出页码。

\documentclass{book}

\usepackage{enumitem}
\usepackage{hyperref}
\hypersetup{
  colorlinks=true,
  linktoc=all,
  linkcolor=black,
  citecolor=teal,
}

\newlist{exercise}{enumerate}{5}
\setlist[exercise]{
  label*=\thechapter.\arabic*.,
  ref=\thechapter.\arabic*, 
  before={%
    \section*{\hfil{Exercises -- \thechapter}}%
    \addcontentsline{toc}{section}{Exercises -- \thechapter}%
    \setlist*[enumerate,1]{ref=\theexercisei.~\arabic*}%
    \setlist*[enumerate,2]{ref=\theenumi.(\alph*)}%
  },
}
\setlist*[enumerate,2]{ref=\theenumi.(\alph*)}

\newcommand*\myref[1]{\ref{#1} on page~\pageref{#1}}

\begin{document}

\chapter{title}
\section{title}
\begin{enumerate}
  \item   bla
    \begin{enumerate}
        \item \label{key1}
          bla
    \end{enumerate}
\end{enumerate}
\begin{exercise}
  \item 
    \begin{enumerate}
      \item bla
        \begin{enumerate}
            \item \label{key}
              bla                         
            \item bla
        \end{enumerate}
      \item bla
    \end{enumerate}
\end{exercise}
Exercise~\myref{key}, \myref{key1}.

\end{document}

MWE 输出

相关内容