我怎样才能让 \hyperlink 显示 \hypertarget 的章节编号?

我怎样才能让 \hyperlink 显示 \hypertarget 的章节编号?

我正在使用一个文档类,它提供了一个名为 sheet 的环境,以及一个 \sheetlink 命令来提供指向特定工作表的超链接。以下源代码中显示了一个演示主要功能的简化示例:

\documentclass{article}
\usepackage{hyperref}
\setlength{\parindent}{0mm}
\setlength{\parskip}{1ex}

\newcounter{sheetnum}[section]

\newenvironment{sheet}[1]{%
\refstepcounter{sheetnum}
\label{#1}
\hypertarget{#1}{\underline{Sheet \thesection.\thesheetnum}}
}

\newcommand{\sheetlink}[1]{Sheet \hyperlink{1}{\thesection.\ref*{#1}}}


\begin{document}

\section{One}

This is a reference to \sheetlink{sheet:first}

\section{Two}
\label{sec:two}

This is a reference to \sheetlink{sheet:first}

\begin{sheet}{sheet:first}
This is the first sheet in \autoref{sec:two}
\end{sheet}

\end{document}

这将产生以下输出: 在此处输入图片描述

当 \sheetlink 命令引用同一节中的工作表时,它可以按预期工作,但是当 \sheetlink 引用不同节中的工作表时,它会得到错误的节号,因为它使用 \thesection,这将是当前节号,而不是包含工作表的节号。

我该如何修改它以便 \sheetlink 打印包含该工作表的部分的部分编号?

答案1

\documentclass{article}
\usepackage{hyperref}
\setlength{\parindent}{0mm}
\setlength{\parskip}{1ex}

\newcounter{sheetnum}[section]
\renewcommand\thesheetnum{\thesection.\arabic{sheetnum}}

\newenvironment{sheet}[1]{%
\refstepcounter{sheetnum}%
\label{#1}%
\underline{Sheet \thesheetnum}}

\newcommand{\sheetlink}[1]{Sheet \ref{#1}}


\begin{document}

\section{One}

This is a reference to \sheetlink{sheet:first}

\section{Two}
\label{sec:two}

This is a reference to \sheetlink{sheet:first}

\begin{sheet}{sheet:first}
This is the first sheet in \autoref{sec:two}
\end{sheet}

\end{document}

在此处输入图片描述

相关内容