标题中的 TikZ 图片具有不透明度

标题中的 TikZ 图片具有不透明度

我有一个非常相似的问题这里提到。但我喜欢使用 fancyhdr 在文档标题中放置一个具有透明度的 tikz 徽标。

如果我通过启用两个选项中的任何一个来编译下面的示例,我就会得到我想要的结果。我的问题是:

  • 为什么我需要这样的“解决方法”?
  • 如果我需要一种解决方法,我可以以某种方式将它放在 tikz 图片中,或者插入徽标的命令中吗?

谢谢你!

\documentclass[a4paper,12pt]{article}

\usepackage{fancyhdr}
\usepackage{tikz}

\setlength\headheight{ 1.5  cm}

\pagestyle{fancy}

\fancyhf{}
\rhead{\insertlogo}

\newcommand{\insertlogo}{%
  \begin{tikzpicture}[y = 0.1cm, x = 0.1cm]%
    \fill[fill=green, rounded corners=1] (1,2) rectangle +(20,7);
    \fill[fill=red, rounded corners=1, opacity=0.3] (-1,2) rectangle +(24,7);
  \end{tikzpicture}%
}%

\begin{document}

A
% Option 1: the logo is inserted also in the text -> it is OK 
%\insertlogo

% Option 2: the document has two or more pages -> it is OK again
%\newpage

\end{document}

编辑:

@percusse:感谢您的解决方案。它效果很好,但我要告诉您整个故事。我喜欢根据“insertlogo”命令的第二个参数(b - 黑白、c - 颜色、s - 阴影)配置徽标的颜色,此外,我还喜欢使其可扩展(第一个参数),我只提供了一个最小的工作示例,但在这种情况下,我想扩展它。在这种情况下,我可以使用您的解决方案吗?

再次感谢!

\newcommand{\insertlogo}[2]{%
% check if black and white selected

\definecolor{logowhite}{RGB}{255,255,255}
\definecolor{logoblack}{RGB}{  0,  0,  0}

\newif\ifblackandwhite
\newif\ifshaded

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\if b#2
  % define colors for black and white
  \definecolor{logogrey} {RGB}{255,255,255}
  \definecolor{logoyellow} {RGB}{  0,  0,  0}
  \blackandwhitetrue
\else
  \if s#2
    \shadedtrue
  \fi
  % define colors
  \definecolor{logogrey} {RGB}{178,180,182}
  \definecolor{logoyellow} {RGB}{210,210, 40}
\fi

% draw scale box
\scalebox{#1}{%
\begin{tikzpicture}[y = 1cm, x = 1cm]%
\ifshaded
 %clip bounding box in case of shading because it needs more space
 \clip[rounded corners=15](1.0,-2.7) rectangle +(23.0,6.5);
\fi

\ifblackandwhite

  % draw outer border
  \draw[draw=black, line width=0.1, rounded corners=15] (1.0,-2.7) rectangle +(23.0,6.5);

\fi

% draw outer backround
\fill[fill=logogrey, rounded corners=15] (1.0,-2.7) rectangle +(23.0,6.5);

\ifshaded
  % draw inner backround
  \fill[fill=logoyellow, opacity=0.3, rounded corners=15] (1.0,-1.4) -- +(0,5.2) -- +(23.0,5.2) -- +(23.0,0) -- cycle;
\else
  % draw inner backround
  \fill[fill=logoyellow, rounded corners=15] (1.0,-1.4) -- +(0,5.2) -- +(23.0,5.2) -- +(23.0,0) -- cycle;
\fi

% draw text
\draw (15.1,1.0) node {\Huge\color{white}AAA};

\end{tikzpicture}%
}%
}%

注意:我使用 scalebox 是因为我的徽标上有文字,也应该缩放。如果您有更好的想法,我很乐意听取您的意见。我不是 TeXpert。:)

答案1

我不知道为什么会发生这种情况(可能是在准备标题时页面层尚未准备好,因此透明路径消失了),但如果您有徽标或重复内容,只需将其装箱并在以后使用即可。在 writeLaTeX 查看器中,它没有显示任何问题,但这不是保证。

\documentclass[a4paper,12pt]{article}
\usepackage{tikz}
\usepackage{fancyhdr}

\newsavebox\myLogoBox
\savebox\myLogoBox{%
  \begin{tikzpicture}
    \fill[fill=green, rounded corners=1] (1mm,2mm) rectangle +(2cm,7mm);
    \fill[fill=red, rounded corners=1, opacity=0.3] (-1mm,2mm) rectangle +(2.4cm,7mm);
  \end{tikzpicture}%
}
\newcommand{\insertlogo}{\usebox{\myLogoBox}}%
\setlength\headheight{ 1.5  cm}

\pagestyle{fancy}
\fancyhf{}
\rhead{\insertlogo}

\begin{document}
A
\end{document}

相关内容