我想我的问题相当简单,但我是乳胶的初学者。因此,我希望得到以下方面的反馈:
我在我的文档中加载了以下包:
\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
您实际上也可以重现代码的行为。
要解决您的文本问题,有几种选择:
将您想要蓝色的文本放在花括号中,如下所示:
{\color{bblue}\bfseries\bblue 大型虚拟标题页}
使用
\textcolor{}{}
如下命令:\textcolor{bblue}{\bfseries\bblue 中的大型虚拟标题页}