我为简短的伪算法定义了自己的环境,我想使用命令\labelformat
来更改的输出\vref
。 Varioref 的文档说:
“该命令有两个参数:第一个是计数器的名称,第二个是引用时的表示。这意味着,为了成功使用,必须知道用于生成标签的计数器名称,尽管实际上这不会造成问题。当前计数器编号被选为参数。”
这对于部分来说有效,但不适用于我自己的环境。
梅威瑟:
\documentclass{book}
\usepackage{amsmath}
\usepackage{varioref}
\labelformat{section}{Section~#1}
\labelformat{algctr}{Algorithm~#1}
% own environment for short algorithms
\newcounter{algctr}
\newenvironment{algo}[1]{
\medskip\noindent%
\refstepcounter{algctr}%
\textbf{Algorithm \thealgctr: #1}\\%
\begin{minipage}{\textwidth}%
\leftskip=1.5em%
}{\end{minipage}\par\medskip}%
\numberwithin{algctr}{chapter}
\begin{document}
\section{Testsection}
\label{ex1}
Reference to section: \vref{ex1}, reference to algorithm: \vref{ex2}.
\begin{algo}{Example}\label{ex2}
This is an example.
\end{algo}
\end{document}
输出:
答案1
该\labelformat
命令提供了一种更改计数器行为的方法,但要使该方法有效,计数器必须存在。当您稍后定义计数器时,该定义将重新安装默认行为,因为既不检查是否已定义某些内容。
因此,如果你将计数器声明移到一切\labelformat
正常之前(或多或少,你还需要\par
在环境定义中添加一个,就像\medskip
在 LaTeX 中一样)不是启动垂直模式但使用\vspace
),但你会得到: