带有条件标题的图表参考(取决于版本)

带有条件标题的图表参考(取决于版本)

我使用版本包来处理条件内容。但是它不适用于标题不同的参考资料(即,标题取决于版本)。以下是 MWE

\documentclass[a4paper,11pt]{article}
\usepackage{versions}
\usepackage{lipsum}

\excludeversion{short}
%\includeversion{short}
%\excludeversion{long}
\includeversion{long}

\begin{document}

\begin{short}
\lipsum[1-1]
\end{short}

\begin{long}
\lipsum[1-2]
\end{long}

This is a reference to Fig.~\ref{fig:varyingcaption}, which has a varying caption.

\begin{figure}[htb]
\centering
\framebox(100,50){}
\begin{short}
\caption{SHORT caption}
\end{short}
\begin{long}
\caption{LONG caption}
\end{long}
\label{fig:varyingcaption}
\end{figure}

This is a reference to Fig.~\ref{fig:fixcaption}, which has a fix caption.

\begin{figure}[htb]
\centering
\framebox(100,50){}
\caption{Fix caption}
\label{fig:fixcaption}
\end{figure}

\end{document}

如您所见,第一个图的引用是??,而第二个图的引用是 2。

我也尝试过使用注释包而不是版本包,并将上面的包含/排除命令更改为如下

\excludecomment{short}
%\includecomment{short}
%\excludecomment{long}
\includecomment{long}

并且有类似的问题,但现在??已被空格取代(即没有给出对第一个图的引用)。

答案1

首先:该包version似乎定义了环境,例如等的名称\includeversion{foo},即将\begin{foo}...\end{foo}被定义。

这基本上没有问题,但是环境的启动命令foo\foo,因此调用该环境long确实很糟糕,因为\long是 TeX 原语,所以不应该重新定义它!

现在,标签问题:

\caption如果您在环境中隐藏了,\@currentlabel则 的重新定义\refstepcounter不会使其在环境之外定义。为了通知\label\@currentlabel您必须在版本环境中使用它。

\documentclass[a4paper,11pt]{article}
\usepackage{versions}
\usepackage{lipsum}

%\excludeversion{shortversion}
\includeversion{shortversion}
\excludeversion{longversion}
%\includeversion{longversion}

\begin{document}

\begin{shortversion}
\lipsum[1-1]
\end{shortversion}

\begin{longversion}
\lipsum[1-2]
\end{longversion}

This is a reference to Fig.~\ref{fig:varyingcaption}, which has a varying caption.

\begin{figure}[htb]
\centering
\framebox(100,50){}
\begin{shortversion}
\caption{SHORT caption}
\label{fig:varyingcaption}
\end{shortversion}
\begin{longversion}
\caption{LONG caption}
\label{fig:varyingcaption}
\end{longversion}

\end{figure}

This is a reference to Fig.~\ref{fig:fixcaption}, which has a fix caption.

\begin{figure}[htb]
\centering
\framebox(100,50){}
\caption{Fix caption}
\label{fig:fixcaption}
\end{figure}

\end{document}

相关内容