Endfloat 编译错误

Endfloat 编译错误

为什么以下 MWE 会给我一个错误?我想使用 endfloat 为每章中的表格编号,编号为 I、II、III 等。我还想在每章末尾而不是文档末尾打印表格和图表的列表。

另外,我无法让文档中横向页面上的表格在末尾的表格列表中以横向显示在自己的页面上。表格非常宽,所以我需要将其保留在单独的横向页面上。

\documentclass[a4paper,12pt,twoside]{book}
\usepackage{pdflscape}

\usepackage[]{endfloat}
\renewcommand{\theposttable}{\Roman{theposttbl}}
\renewcommand{\thepostfigure}{\Roman{postfig}}
\renewcommand{\thefigure}{\Roman{figure}}
\renewcommand{\thetable}{\Roman{table}}

\begin{document}

\chapter{This is Chapter 1}
Some text in chapter 1.  See my figure \ref{tab:table1}.

\begin{table}
\caption{First Table} \label{tab:table1}
\end{table}

\let\cleardoublepage\clearpage
\chapter{This is Chapter 2}
Some text in chapter 2.  See my figure \ref{tab:table2}.

\begin{landscape}
\begin{table}
\caption{First Table} \label{tab:table2}
\end{table}
\end{landscape}

\end{document}

答案1

您不能以landscape这种方式使用,因为endfloat无法捕获它。但是,endfloat包知道如何管理新环境。

请注意,您在重新定义时遇到了错误\theposttable

\documentclass[a4paper,12pt,twoside]{book}
\usepackage{pdflscape}

\usepackage{endfloat}

\renewcommand{\theposttable}{\Roman{posttbl}}
\renewcommand{\thepostfigure}{\Roman{postfig}}
\renewcommand{\thefigure}{\Roman{figure}}
\renewcommand{\thetable}{\Roman{table}}

% new environment for landscape tables    
\newenvironment{ltable}
  {\begin{landscape}\begin{table}}
  {\end{table}\end{landscape}}

% make it known to endfloat
\DeclareDelayedFloatFlavor{ltable}{table}

\begin{document}

\chapter{This is Chapter 1}
Some text in chapter 1.  See my figure \ref{tab:table1}.

\begin{table}
\caption{First Table} \label{tab:table1}
\end{table}

\chapter{This is Chapter 2}
Some text in chapter 2.  See my figure \ref{tab:table2}.

\begin{ltable}
\caption{First Table} \label{tab:table2}
\end{ltable}

\end{document}

相关内容