使用 changebar 时双列图形和表格会消失

使用 changebar 时双列图形和表格会消失

我想在 IEEEtran 的边距中插入一个栏,但是当我使用 changebar 包时,两列图形和表格消失了。这是我的代码:

\documentclass[journal]{IEEEtran}
\usepackage{lipsum}
\usepackage{graphicx}

\usepackage[color]{changebar}
\usepackage{soul}
\usepackage{xspace}
\cbcolor{black}
\sethlcolor{yellow}
\newcommand{\edit}[1]{\cbstart\hl{#1}\cbend\xspace}

\begin{document}
\lipsum[1]
\lipsum[1]

\begin{figure*}
  \centering
  \includegraphics[width=15cm]{example-image}\\
\end{figure*}

\lipsum[1]
\lipsum[1]
\end{document}

如果您能提供任何帮助我将不胜感激。

答案1

changebar是一个旧的包,它重新定义了几个乳胶内部结构,特别是浮点处理。

事实证明,它与 2015/01/01 latex 版本中的双浮点处理不完全兼容(修复了该领域的几个错误)

这有效,直到 changebar 更新:

\RequirePackage[2014/01/01]{latexrelease}
\documentclass[journal]{IEEEtran}
\usepackage{lipsum}
\usepackage{graphicx}

\usepackage[color]{changebar}
\usepackage{soul}
\usepackage{xspace}
\cbcolor{black}
\sethlcolor{yellow}
\newcommand{\edit}[1]{\cbstart\hl{#1}\cbend\xspace}

\begin{document}
\lipsum[1]
\lipsum[1]

\begin{figure*}
  \centering
  \includegraphics[width=15cm]{example-image}
\end{figure*}

\lipsum[1]
\lipsum[1]

\end{document}

答案2

我能够通过changebar.sty从我的发行版(TeX Live 2015,但该文件在大约 10 年内没有更新)复制并删除与浮点相关的宏来解决相同的问题 -

\let\end@float\cb@end@float               % remove from here
\let\flt@float@end\float@end
  ·
  ·
  ·
  \flt@float@dblend
  }                                       % up until here

将新文件重命名为 eg mychangebar.sty,而\usepackage{mychangebar}不是 stock changebar

在尝试了可接受的解决方案并注意到由于 2014 年浮动行为的不同,它完全改变了我的布局后,我这样做了。当然,这意味着您的更改栏将无法在浮动中或跨浮动工作;需要更彻底地重写这些宏才能真正解决问题。

答案3

它看起来像changebar.sty替换了一些 latex 内核宏。本例中的相关宏是\end@float

如果愿意,您可以尝试以下解决方案(对我有用twocol

  1. 将其添加到文档的序言中:

    \makeatletter
    \newcommand{\cboff}{\let\end@float\ltx@end@float}
    \newcommand{\cbon}{\let\end@float\cb@end@float}
    \makeatother
    
  2. 在 和 之前和 之后分别添加命令\cboff、。例如\cbon\begin{figure*}\end{figure*}

    \cboff
    \begin{figure*}
    ...
    \end{figure*}
    \cbon
    

这是一个愚蠢的解决方法,但似乎有效。

相关内容