如何对奇数页和偶数页的图表设置不同的标题位置?

如何对奇数页和偶数页的图表设置不同的标题位置?

对于小图,我希望标题根据页码(奇数或偶数)位于右侧或左侧。为此,我定义命令\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的包来执行您想要的操作。SCfigurefigure

答案2

由于输出例程的异步特性,计数器page不可靠。例如,请使用scrextend包及其\ifthispageodd宏。

相关内容