在我的论文中,我定义了 Boxes。在这些框中,我提供了额外的背景信息或定义,这些信息或定义对于我的正文来说太详细了。这些环境不是浮点数,也没有标题。框号在对象本身中显示和定义。我无法将框放入浮点数中,因为这样做的话它们就不再起作用了。
我想引用文本中的方框。使用\label{}
和\ref{}
不起作用,因为它显然给出了章节编号。我只有有限数量的方框,而且只在介绍中,所以我可以手动编号。但我想保留 pdf 文件中的可点击链接。
有什么想法吗?
PS 我不知道这是否相关,但这些框写在子文件中,我使用它们导入到我的主 .tex 中\input{}
PPS 我在 .cls 文件中定义了如下框
\newcounter{mybox}[chapter] \setcounter{mybox}{0}
\renewcommand{\themybox}{\arabic{chapter}.\arabic{mybox}}
\newenvironment{mybox}[2][]{%
\refstepcounter{mybox}%
\ifstrempty{#1}%
{\mdfsetup{%
frametitle={%
\tikz[baseline=(current bounding box.east),outer sep=0pt]
\node[anchor=east,rectangle,fill=gray!20]
{\strut Box ~\themybox};}}
}%
{\mdfsetup{%
frametitle={%
\tikz[baseline=(current bounding box.east),outer sep=0pt]
\node[anchor=east,rectangle,fill=gray!20]
{\strut Box ~\themybox:~#1};}}%
}%
\mdfsetup{innertopmargin=10pt,linecolor=gray!20,%
linewidth=2pt,topline=true,%
frametitleaboveskip=\dimexpr-\ht\strutbox\relax
}
\begin{mdframed}[]\relax%
}{\end{mdframed}}
PPPS 这是文本中的样子
\begin{mybox}[Definitions: Validity]{}
\begin{description}
\item[Some word] has this meaning
\end{description}
\end{mybox}
然后我尝试使用\input{folder/Boxfile}\label{Box:label1}
我也试过
\begin{mybox}[Definitions: Validity]{}
\begin{description}
\item[Some word] has this meaning
\end{description}
\end{mybox}\label{Box:mybox}
这也指章节编号,而不是盒子编号
答案1
mybox
环境不浮动且不包含语句这一事实对于确定它是否可以通过 LaTeX 的-机制\caption
进行交叉引用并不重要。重要的是环境通过指令增加其关联的计数器。\label
\ref
\refstepcounter
该\label
指令应在mybox
环境内部提供,最好在进入环境之后立即提供。
另外:环境和计数器共享完全相同的名称 ( mybox
) 很容易引起混淆。那么如何改为调用计数器myboxcntr
呢?
请参阅以下示例,了解如何执行交叉引用。
\documentclass{report}
\usepackage{mdframed,tikz}
\newcounter{myboxcntr}[chapter]
\renewcommand{\themyboxcntr}{\thechapter.\arabic{myboxcntr}}
%\setcounter{myboxcntr}{0} % not needed
\newenvironment{mybox}[2][]{%
\refstepcounter{myboxcntr}%
\ifstrempty{#1}%
{\mdfsetup{%
frametitle={%
\tikz[baseline=(current bounding box.east),outer sep=0pt]
\node[anchor=east,rectangle,fill=gray!20]%
{\strut Box \themyboxcntr};}}}%
{\mdfsetup{%
frametitle={%
\tikz[baseline=(current bounding box.east),outer sep=0pt]
\node[anchor=east,rectangle,fill=gray!20]%
{\strut Box \themyboxcntr:~#1};}}}
\mdfsetup{innertopmargin=10pt,linecolor=gray!20,%
linewidth=2pt,topline=true,%
frametitleaboveskip=\dimexpr-\ht\strutbox\relax}
\begin{mdframed}[]\relax}{%
\end{mdframed}}
\usepackage[colorlinks]{hyperref}
\usepackage[nameinlink]{cleveref}
\crefname{myboxcntr}{Box}{Boxes}
\begin{document}
\setcounter{chapter}{3} % just for this example
Yawn, big yawn, wakey-wakey, \dots
\begin{mybox}[Greetings!]{}
\label{box:hello} % <-- crucial: provide a \label statement inside the env.
Hello World.
\end{mybox}
A cross-reference to \cref{box:hello}.
\end{document}