当前颜色的颜色堆栈切换会干扰垂直列表

当前颜色的颜色堆栈切换会干扰垂直列表

我想使用来自pdfcol易碎盒子的包装。

\pdfcolSwitchStack切换堆栈,但使用黑色作为初始颜色,而不是我的应用程序所需的当前颜色。

\pdfcolSetCurrentColor哪个用当前颜色替换堆栈最顶部的条目。不幸的是,它似乎还实际设置了当前颜色(再次)?至少,它以某种方式干扰了垂直列表(添加了什么内容?)。在几种情况下,\pdfcolSetCurrentColor使用时会添加/更改垂直空间。

我正在寻找一种方法来切换颜色堆栈,以当前颜色作为最顶层的条目没有再次设置此颜色或干扰垂直列表。

以下 MWE 显示了该问题。

版本 A(未使用\pdfcolSetCurrentColor):

\documentclass{article}
\usepackage{xcolor,lipsum}
\usepackage{pdfcol,parskip}

\pdfcolInitStack{mycolstack}

\newbox\mwebox
\newbox\firstbox

\makeatletter

\newcommand{\splitexample}[1]%
  {%
    \setbox\mwebox\vbox%
      {%
        \pdfcolSwitchStack{mycolstack}%
        %\pdfcolSetCurrentColor%------------------------------------------
        \color@begingroup%
          \hsize=11cm\relax%
          #1%
        \color@endgroup%
      }%
    \setbox\firstbox\vsplit\mwebox to 7cm%
    \fbox%
      {%
        \color@begingroup%
        \pdfcolSetCurrent{mycolstack}%
        \box\firstbox%
        \pdfcolSetCurrent{}%
        \color@endgroup%
      }
    \par inter text \par
    \fbox%
      {%
        \color@begingroup%
        \pdfcolSetCurrent{mycolstack}%
        \box\mwebox%
        \pdfcolSetCurrent{}%
        \color@endgroup%
      }
  }%

\makeatother

\begin{document}

\color{blue}

before text

\splitexample{%
  \begin{minipage}{9cm}
  \begin{enumerate}
    \item abc
  \end{enumerate}
  \end{minipage}\par
  \lipsum[1]
  {\itshape\bfseries\color{red}
  \lipsum[2]
  }
  \lipsum[3]
}

after text
\end{document}

此处,主色调为蓝色。颜色堆栈mycolstack切换为黑色。

在此处输入图片描述

版本 B(使用\pdfcolSetCurrentColor):

\documentclass{article}
\usepackage{xcolor,lipsum}
\usepackage{pdfcol,parskip}

\pdfcolInitStack{mycolstack}

\newbox\mwebox
\newbox\firstbox

\makeatletter

\newcommand{\splitexample}[1]%
  {%
    \setbox\mwebox\vbox%
      {%
        \pdfcolSwitchStack{mycolstack}%
        \pdfcolSetCurrentColor%------------------------------------------
        \color@begingroup%
          \hsize=11cm\relax%
          #1%
        \color@endgroup%
      }%
    \setbox\firstbox\vsplit\mwebox to 7cm%
    \fbox%
      {%
        \color@begingroup%
        \pdfcolSetCurrent{mycolstack}%
        \box\firstbox%
        \pdfcolSetCurrent{}%
        \color@endgroup%
      }
    \par inter text \par
    \fbox%
      {%
        \color@begingroup%
        \pdfcolSetCurrent{mycolstack}%
        \box\mwebox%
        \pdfcolSetCurrent{}%
        \color@endgroup%
      }
  }%

\makeatother

\begin{document}

\color{blue}

before text

\splitexample{%
  \begin{minipage}{9cm}
  \begin{enumerate}
    \item abc
  \end{enumerate}
  \end{minipage}\par
  \lipsum[1]
  {\itshape\bfseries\color{red}
  \lipsum[2]
  }
  \lipsum[3]
}

after text
\end{document}

现在,颜色堆栈mycolstack正如预期的那样接管了主要的蓝色。

但是,请注意1. abc插入后垂直位置发生了变化\pdfcolSetCurrentColor

在此处输入图片描述

有没有办法在不改变垂直列表的情况下使用颜色堆栈的当前颜色?

相关内容