我有一个简单的问题;我正在写一份包含许多章节和图表的文档。交叉引用工作正常。到目前为止一切顺利。但是,当我引用某些内容时,我更希望图表和章节采用不同的格式。
例如,如果我引用某个部分(假设有适当的标签),我希望输出是:Section 4.3
当我引用一个图形时:Figure 4-3
。
我该如何处理?
先感谢您
答案1
您可以重新定义\p@figure
以产生所需的格式(但这只会改变用于交叉引用的字符串的格式;用于标题的字符串将保持不变):
\documentclass{book}
\makeatletter
\renewcommand\p@figure{\thechapter-\arabic{figure}\expandafter\@gobble}
\makeatother
\begin{document}
\chapter{Test Chapter}
See figure~\ref{fig:test} in section~\ref{sec:test}...
\section{test}\label{sec:test}
\begin{figure}[!ht]
\caption{Test Figure}
\label{fig:test}
\end{figure}
\end{document}
并将其与cleveref
包结合起来,您可以这样说:
\documentclass{book}
\usepackage{cleveref}
\makeatletter
\renewcommand\p@figure{\thechapter-\arabic{figure}\expandafter\@gobble}
\makeatother
\crefname{figure}{figure}{figures}
\Crefname{figure}{Figure}{Figures}
\begin{document}
\chapter{Test Chapter}
See \cref{fig:test} in \cref{sec:test}...
\section{test}\label{sec:test}
\begin{figure}[!ht]
\caption{Test Figure}
\label{fig:test}
\end{figure}
\end{document}
评论:
- 我仅
[!ht]
在此示例中用作放置说明符;我是不是推荐它的使用。 - 就个人观点而言,由于我们
x.y
使用不同的字符串引用对象,因此这种风格引入了一定程度的不一致性x-y
。我建议您重新考虑这一改变。
为了保持一致性,我更愿意进行更改\thefigure
,以便对象编号中使用的字符串和交叉引用中使用的字符串相同:
\documentclass{book}
\usepackage{cleveref}
\makeatletter
\renewcommand\thefigure{\mbox{\thechapter-\arabic{figure}}}
\makeatother
\crefname{figure}{figure}{figures}
\Crefname{figure}{Figure}{Figures}
\begin{document}
\chapter{Test Chapter}
See \cref{fig:test} in \cref{sec:test}...
\section{test}\label{sec:test}
\begin{figure}[!ht]
\caption{Test Figure}
\label{fig:test}
\end{figure}
\end{document}