指定参考名称

指定参考名称

请参阅下面的 MWE。我想要实现的是,\nameref{c}打印为Appendix而不是Some Stuff

\documentclass{book}
\usepackage{lipsum}
\usepackage{appendix}
\usepackage{hyperref}
\begin{document}
\chapter{First Chapter}
\lipsum[1]

We refer to the \nameref{c}.

\lipsum

\begin{appendices}

\renewcommand\thechapter{}
\chapter{Some stuff}\label{c}
\lipsum
\end{appendices}
\end{document}

请注意,由于某些原因,我想使用\renewcommand\thechapter{}而不是\chapter*{...}加法\addcontentsline...

这似乎有点特殊的情况。但是,以下 MWE 显示了一个可能非常频繁的应用程序:

\documentclass{book}
\usepackage{lipsum}
\usepackage{appendix}
\usepackage{hyperref}
\begin{document}
\chapter{First Chapter}
\lipsum[1]

This is explained in the next chapter. 
%I want to set a link on "next chapter" which points to the second chapter

\lipsum[2]

\chapter{Second Chapter}
\lipsum[3]
\end{document}

注意:我重写了我原来的问题。现在它更加切题,对其他人来说可能也更有趣。

答案1

\nameref解决了您的问题,下面的示例也可以在不重新定义的情况下工作\thechapter,并在目录和书签中添加一个条目。

\documentclass{book}
\usepackage{lipsum}
\usepackage{hyperref}
\usepackage{bookmark}
\bookmarksetup{numbered}

\begin{document}
\tableofcontents

\chapter{First Chapter}
\lipsum[1]

We refer to the \nameref{chap:second}.

\lipsum

\cleardoublepage
\addcontentsline{toc}{chapter}{Second Chapter}
\chapter*{Second Chapter}
\label{chap:second}
\lipsum
\end{document}

PS:这也适用于\renewcommand*{\thechapter}{},因为解决方案中引用了章节标题。我假设您还希望在章节标题上方的章节开头处使用不带数字的字符串“Chapter”,并且编号仍然继续。

\documentclass{book}
\usepackage{lipsum}
\usepackage{hyperref}
\usepackage{bookmark}
\bookmarksetup{numbered}

\begin{document}
\tableofcontents

\chapter{First Chapter}
\lipsum[1]

We refer to the \nameref{chap:second}.

\lipsum

\renewcommand*{\thechapter}{}
\chapter{Second Chapter}
\label{chap:second}
\lipsum
\end{document}

PPS:由于问题的改变,第三个变体。

的名称标题\nameref在内部存储在 中\@currentlabelname。可以将其重新定义为下一个将读取的新字符串\label

\documentclass{book}
\usepackage{lipsum}
\usepackage{appendix}
\usepackage{hyperref}

\makeatletter
\newcommand*{\SetNameTitle}[1]{%
  \def\@currentlabelname{#1}%
}
\makeatother

\begin{document}
\chapter{First Chapter}
\lipsum[1]

We refer to the \nameref{c}.

\lipsum

\begin{appendices}

\renewcommand\thechapter{}
\chapter{Some stuff}
\SetNameTitle{\appendixname}
\label{c}
\lipsum
\end{appendices}
\end{document}

还有一个变体,其中参考文本被替换。

\documentclass{book}
\usepackage{lipsum}
\usepackage{appendix}
\usepackage{hyperref}

\begin{document}
\chapter{First Chapter}
\lipsum[1]

We refer to the \hyperref[c]{\appendixname}.

\lipsum

\begin{appendices}

\renewcommand\thechapter{}
\chapter{Some stuff}\label{c}
\lipsum
\end{appendices}
\end{document}

答案2

这是一个可能的解决方案:

\documentclass{book}
\usepackage{lipsum}
\usepackage{appendix}
\usepackage{hyperref}
\begin{document}
\chapter{First Chapter}
\lipsum[1]

We refer to the \hyperlink{c}{Appendix}.

\lipsum

\begin{appendices}

\renewcommand\thechapter{}

\cleardoublepage
\phantomsection\hypertarget{c}{}
\chapter{Some stuff}\label{c}
\lipsum

\end{appendices}

\end{document}

...对于第二个 MWE:

\documentclass{book}
\usepackage{lipsum}
\usepackage{appendix}
\usepackage{hyperref}
\begin{document}
\chapter{First Chapter}
\lipsum[1]

This is explained in the \hyperlink{c}{next chapter}. 
%Now the link points to the second chapter and is printed as "next chapter"

\lipsum[2]

\cleardoublepage
\phantomsection\hypertarget{c}{}
\chapter{Second Chapter}
\lipsum[3]
\end{document}

相关内容