我正在排版(非同步)平行列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}