加载 tikz 包导致颜色改变

加载 tikz 包导致颜色改变

我想我的问题相当简单,但我是乳胶的初学者。因此,我希望得到以下方面的反馈:

我在我的文档中加载了以下包:

\documentclass[12pt,a4paper]{scrreprt}
\usepackage[ngerman,english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{helvet}

%tikz
\usepackage{tikz} %Due to this line my text color changes

\usepackage[absolute]{textpos}

%math
\usepackage{amsmath}
\usepackage{amssymb}
%graphics
\usepackage{graphicx}
%for inkscape
\usepackage{color}
\usepackage{transparent}



\textblockorigin{0mm}{0mm}
\renewcommand{\familydefault}{\sfdefault}
\definecolor{bblue}{RGB}{0,73,116}




\begin{document}

  \begin{titlepage}
    
   
    
    \begin{textblock*}{50mm}[0,1](50mm,50mm)
      \color{bblue}\bfseries\Large
      dummy title page in bblue
    \end{textblock*}

     

        \begin{center}
            \color{black}
        
        \end{center}

    
      
          
    \begin{textblock*}{60mm}[0,1](55mm,310mm)
      dummy text as well
    \end{textblock*}

  \end{titlepage}


    \newpage
    
    ...Some text...
    
    \end{document}

我最后添加了 tikz 包,它将我的文本颜色更改为蓝色。在加载包之前,颜色是黑色,这也是应该的。我读到 tikz 在内部加载了一个颜色包。我是否可以将一些选项传递给包以避免文档中的文本颜色发生变化?

谢谢!

答案1

环境textblock不是颜色安全的(一个错误)。您的示例可以简化为:

\documentclass{article}
\usepackage{xcolor}
\usepackage[absolute]{textpos}
\begin{document}
\begin{textblock*}{50mm}[0,1](50mm,50mm)
  \color{red} dummy title page in bblue
\end{textblock*}
...Some text...
\end{document}

归根结底,问题在于这里

为了解决此问题(虽然textpos尚未修复),您可以在textpos加载后将此修补程序添加到您的文档中:

% \usepackage[absolute]{textpos}
% The patch must be after textpos is loaded
\usepackage{etoolbox}
\makeatletter
\patchcmd\TP@textblock
  {\TP@textbox=\vbox\bgroup}
  {\TP@textbox=\vbox\bgroup\color@begingroup}
  {}{\PatchFailed}
\patchcmd\TP@commonendtextblock
  {\fi\egroup}
  {\fi\color@endgroup
      \egroup}
  {}{\PatchFailed}

这是一个可编译的示例:

\documentclass{article}
\usepackage{xcolor}

\usepackage[absolute]{textpos}
\usepackage{etoolbox}
\makeatletter
\patchcmd\TP@textblock
  {\TP@textbox=\vbox\bgroup}
  {\TP@textbox=\vbox\bgroup\color@begingroup}
  {}{\PatchFailed}
\patchcmd\TP@commonendtextblock
  {\fi\egroup}
  {\fi\color@endgroup
      \egroup}
  {}{\PatchFailed}

\begin{document}

\begin{textblock*}{50mm}[0,1](50mm,50mm)
  \color{red} dummy title page in bblue
\end{textblock*}

...Some text...

\end{document}

在此处输入图片描述

答案2

好的,所以,这个问题的发生是因为tikz加载xcolor而不是color(后者应该停留在它所属的 80 年代)。它还会加载graphicx,所以除非您想将选项传递给它们中的任何一个,否则您无需再次加载它们。通过明确加载xcolor而不是,color您实际上也可以重现代码的行为。

要解决您的文本问题,有几种选择:

  1. 将您想要蓝色的文本放在花括号中,如下所示:

    {\color{bblue}\bfseries\bblue 大型虚拟标题页}

  2. 使用\textcolor{}{}如下命令:

    \textcolor{bblue}{\bfseries\bblue 中的大型虚拟标题页}

相关内容