我正在寻找一个 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
您可以使用命令hyperref
包autoref
和nameref
\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
使用nameref
和cleveref
\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}