paracol:按列浮点数是否按出现顺序编号?

paracol:按列浮点数是否按出现顺序编号?

我正在排版(非同步)平行列paracol.sty– 实际上是翻译,一种语言在左列,另一种语言在右列。文档包含大量“按列”的浮动(即在列内排版的浮动)。由于paracol在右列之前读取和处理整个左列(延伸到各个页面),所以左列中的所有浮动都比右列中的浮动先编号,即使它们出现在后面的页面上。鉴于页面流中的线性外观,这导致浮动以无序的方式出现。

有办法解决这个问题吗?我需要将浮动保持为逐列浮动(这样它们就不会破坏两列布局)。

有没有办法修改计数器机制,让数字按照出现的顺序排列?或者至少按照页面?(也就是说,在一页内,我不介意所有左列浮动元素在右列浮动元素之前编号,但这不应该跨页面)

或者我必须使用\setcounter{figure}{0}等来实现“手动”编号?

多谢!

附言:我知道paracol手册上说这个“问题”会发生。但也许有人知道如何解决它。

梅威瑟:

\documentclass{article}
\usepackage{paracol}
\usepackage{lipsum}

\globalcounter{figure}

\begin{document}

\begin{paracol}{2}
    \lipsum[1-3]
    \begin{figure}[t] 
        \caption{The caption}
        \label{Label1}
    \end{figure}
    \lipsum[2]

    \switchcolumn

    \begin{figure}[t]
        \caption{The caption}
        \label{Label2}
    \end{figure}
    \lipsum[1-3]

\end{paracol}

\end{document}

以下示例显示,如果按照页面顺序,图 2 会出现在图 1 之前。

在此处输入图片描述

答案1

这将修复\caption\label\listoffigures。请注意,它至少需要运行两次。

必须\useparafig在 之前添加\caption。它\thefigure为图形环境的其余部分(或当前组)重新定义。

\thefigure它的工作原理是在图形实际出现的顺序之间创建一个转换表( \theparafig)。

\documentclass{article}
\usepackage{paracol}
\usepackage{lipsum}

\globalcounter{figure}

\newcounter{parafig}

\newcommand{\newparafig}[1]{\stepcounter{parafig}%
  \expandafter\xdef\csname parafig#1\endcsname{\theparafig}}

\makeatletter
\newcommand{\useparafig}{\protected@write\@auxout{}{\string\newparafig{\thefigure}}%
  \@ifundefined{parafig\thefigure}{}%
  {\edef\parafig{\csname parafig\thefigure\endcsname}%
   \let\thefigure=\parafig}}
\makeatother

\begin{document}
\listoffigures\newpage
\sloppy
\begin{paracol}{2}
    \lipsum[1-3]
    \begin{figure}[t]
        \useparafig
        \caption{The caption}
        \label{Label1}
    \end{figure}
    \lipsum[2]

    \switchcolumn

    \begin{figure}[t]
        \useparafig
        \caption{The caption}
        \label{Label2}
    \end{figure}
    \lipsum[1-3]

\end{paracol}

\end{document}

相关内容