段落的“智能”交叉引用

段落的“智能”交叉引用

Part我正在编写一个大型文档,其中我使用了从右到左的几乎所有级别的节paragraph

我一直varioref结合使用hyperrefcleverref“智能地”处理我的所有引用(我可能不应该同时使用这三个,但到目前为止它已经给了我想要的效果。

唯一的问题是,引用似乎不能像我预期的那样与段落配合使用。引用解析为在引用 (sub(sub)) 节时自动插入单词“Section”,在引用图形时自动插入单词“Figure”,但引用段落时不会插入单词“Paragraph”或“Section”。

例如: 使用 varioref 对部分进行编号

我原以为问题出在我已经定义了自定义段落格式,但您应该能够从下面的 MWE 中看到它也发生在“正常”段落中。

我是否缺少了一些东西来让这些包像其他所有包一样尊重段落?

\documentclass[a4paper, oneside, 11pt]{report}
\usepackage[left=4cm, right=2cm, top=1.5cm, bottom=2.5cm]{geometry}
\usepackage{lipsum}
\usepackage{varioref}
\usepackage[hidelinks]{hyperref} 
\usepackage[capitalise,noabbrev]{cleveref}
\usepackage{tocloft}
\setcounter{secnumdepth}{5} % Number deeper sections
\setcounter{tocdepth}{5}% Number deeper sections

\newcommand{\myparagraph}[1]{\paragraph{#1}\mbox{}\vspace{0.3cm}\\} % adds a new paragraph environment called by \myparagraph


\begin{document}

\tableofcontents

\chapter{My First Chapter}\label{chapterone}
\section{My First Section}\label{sectionone}
\subsection{My First Subsection}\label{subsectionone}
\subsubsection{My First Subsubsection}\label{subsubsectionone}
\paragraph{My First Standard Paragraph}\label{mystandardparagraph}
\lipsum[1]
\myparagraph{My First Custom Paragraph}\label{mycustomparagraph}
\lipsum[2]

\chapter{My Second Chapter}
\section{My Second Section}
I can reference \vref{chapterone} and \vref{sectionone} and \vref{subsectionone} and \vref{subsubsectionone}

\subsection{My Second Subsection}
But not \vref{mystandardparagraph} and \vref{mycustomparagraph}...

\end{document}

答案1

cleveref根本不知道如何正确引用段落编号,实际上在 LOG 文件中发出警告。要告诉包如何“调用”这些类型的引用,请使用

\crefname{labeltype}{singular}{plural}

在你的例子中

\documentclass[a4paper, oneside, 11pt]{report}
\usepackage[left=4cm, right=2cm, top=1.5cm, bottom=2.5cm]{geometry}
\usepackage{lipsum}
\usepackage{varioref}
\usepackage[hidelinks]{hyperref} 
\usepackage[capitalise,noabbrev]{cleveref}
\usepackage{tocloft}
\setcounter{secnumdepth}{5} % Number deeper sections
\setcounter{tocdepth}{5}% Number deeper sections

\newcommand{\myparagraph}[1]{\paragraph{#1}\mbox{}\vspace{0.3cm}\\} % adds a new paragraph environment called by \myparagraph

\crefname{paragraph}{paragraph}{paragraphs}% <<<---- added

\begin{document}

\tableofcontents

\chapter{My First Chapter}\label{chapterone}
\section{My First Section}\label{sectionone}
\subsection{My First Subsection}\label{subsectionone}
\subsubsection{My First Subsubsection}\label{subsubsectionone}
\paragraph{My First Standard Paragraph}\label{mystandardparagraph}
\lipsum[1]
\myparagraph{My First Custom Paragraph}\label{mycustomparagraph}
\lipsum[2]

\chapter{My Second Chapter}
\section{My Second Section}
I can reference \vref{chapterone} and \vref{sectionone} and \vref{subsectionone} and \vref{subsubsectionone}

\subsection{My Second Subsection}
But not \vref{mystandardparagraph} and \vref{mycustomparagraph}...

\end{document}

请注意,手动设置\crefname不会受到capitalise设计选项的影响。手册(第 10 页)写道:

所有默认的交叉引用格式的首字母都将大写,自动生成的\cref变体也是如此(参见第 8.1.2 和 8.2 节)。(但是,如果您明确定义了\cref变体以不是大写,cleveref仍将遵守您的定义。换句话说,您有责任在自己的格式定义中正确定义大写。

因此,您可以用\crefname它来覆盖某些参考类型的自动大写。

相关内容