Part
我正在编写一个大型文档,其中我使用了从右到左的几乎所有级别的节paragraph
。
我一直varioref
结合使用hyperref
并cleverref
“智能地”处理我的所有引用(我可能不应该同时使用这三个,但到目前为止它已经给了我想要的效果。
唯一的问题是,引用似乎不能像我预期的那样与段落配合使用。引用解析为在引用 (sub(sub)) 节时自动插入单词“Section”,在引用图形时自动插入单词“Figure”,但引用段落时不会插入单词“Paragraph”或“Section”。
我原以为问题出在我已经定义了自定义段落格式,但您应该能够从下面的 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
它来覆盖某些参考类型的自动大写。