我有一个非常相似的问题这里提到。但我喜欢使用 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}