当前章节/图表的名称

当前章节/图表的名称

我正在寻找一个 LaTeX 命令,比如说\foo,它会扩展为我所在的部分类型。在下面,第一个\foo应该扩展为“Section”,第二个应该扩展为“Subsection”,第三个应该扩展为“Figure”:

\section{aaa}
Hello \foo

\subsection{bbb}
Hello \foo

\begin{figure}
  whatever
  \caption{bla \foo}
\end{figure}

我希望用这个来构建一个标签包,它知道标签来自哪里,即,\label{R4wmVP}图形内部会\ref{R4wmVP}打印“图 \thefigure”。好处是,在将某个部分设为子部分(或章节)后,所有引用都会自动更改。

答案1

您可以使用命令hyperrefautorefnameref

\documentclass{article}
\usepackage{hyperref}
\begin{document}
\section{aaa}\label{sec:1}
Hello \autoref{sec:1}\qquad\nameref{sec:1}

\subsection{bbb}\label{subsec:1}
Hello \autoref{subsec:1}\qquad\nameref{subsec:1}

\begin{figure}[!ht]
 whatever
 \caption{bla}\label{fig:1}
 \end{figure}

 \autoref{fig:1}\qquad\nameref{fig:1}

\end{document}

上述代码产生以下结果:

关于这里的评论,这里有一个例子,没有hyperref使用namerefcleveref

\documentclass{article}
\usepackage{nameref}
\usepackage{cleveref}

\begin{document}
\section{aaa}\label{sec:1}
Hello \nameref{sec:1}\qquad\cref{sec:1}\qquad\namecref{sec:1}

\subsection{bbb}\label{subsec:1}
Hello \nameref{subsec:1}\qquad\cref{subsec:1}\qquad\namecref{subsec:1}

\begin{figure}[!ht]
 whatever
 \caption{bla}\label{fig:1}
 \end{figure}

\nameref{fig:1}\qquad\cref{fig:1}\qquad\namecref{fig:1}
\end{document}

相关内容