对于小图,我希望标题根据页码(奇数或偶数)位于右侧或左侧。为此,我定义命令\row
如下:
\newcommand{\row}[2]{%
\ifodd\value{page}
#2 \hfil #1
\else
#1 \hfil #2
\fi
}
通常,它在环境内部使用figure
,例如,
\begin{figure}
\row{%
\begin{minipage}[c]{0.67\textwidth}
\includegraphics[width=\textwidth]{2011-03-03}
\end{minipage}%
}{%
\begin{minipage}[c]{0.3\textwidth}
\caption{The transition temperature vs. density of the hydrogen}
\label{fig:03-03}
\end{minipage}}
\end{figure}
在大多数情况下,这种方法都能满足需求,但有时,标题的放置会出错。我想知道为什么?如何修改我的代码以避免麻烦?
答案1
您可以使用该refcount
包:
\usepackage{refcount}
\newcounter{figureposcount}
\newcommand{\row}[2]{%
\refstepcounter{figureposcount}\label{figurepos\thefigureposcount}%
\ifodd\getpagerefnumber{figurepos\thefigureposcount}
#2 \hfil #1%
\else
#1 \hfil #2%
\fi
}
但是,您也可以考虑使用不需要特殊语法(除了使用而不是)sidecap
的包来执行您想要的操作。SCfigure
figure
答案2
由于输出例程的异步特性,计数器page
不可靠。例如,请使用scrextend
包及其\ifthispageodd
宏。