我们有一个 EPS 文件,其中的徽标是单色的。是否可以在 LaTeX 中以某种方式操纵此颜色?我们需要为同一印记的不同系列使用不同颜色的徽标。
编辑:
这是徽标:
http://hpsg.fu-berlin.de/~stefan/transfer/Logo_Buchcover_hellblau.eps
答案1
PDF 模式下 pdfTeX 的图形驱动程序文件有一个技巧pdftex.def
。如果 PDF 图像不包含颜色设置,pdftex.def
则不强制使用黑色,而是使用当前颜色。
首先我们需要将 EPS 文件转换为 PDF:
ps2pdf -dEPSCrop -dCompressPages=false Logo_Buchcover_hellblau.eps Logo_Buchcover.pdf
选项
-dCompressPages=false
禁用页面内容的压缩,因为我们需要在下一步中对其进行操作。由于图像不包含很多运算符,因此压缩也不会带来太多好处。需要禁用颜色设置。但是需要小心。PDF 将其间接对象的位置记录在交叉引用表中,我们只更改一个字节,不添加或删除字节以保持 PDF 结构完整。
识别该行:
0.599609 0.0499878 0.0499878 0 k
k
是设置 CMYK 颜色的运算符。百分比%
是 PDF(PostScript、TeX)中的注释字符,因此我们将第一个更改0
为%
:%.599609 0.0499878 0.0499878 0 k
用于修改字节的编辑器不得更改任何其他内容(行尾、制表符等)。如果有疑问,那么十六进制编辑器也可以。
现在我们可以在 pdfLaTeX 中使用该图像:
\documentclass[pdftex]{article} % The trick does not work for other drivers \usepackage{graphicx} \usepackage{color} \begin{document} \includegraphics{Logo_Buchcover} \textcolor{red}{\includegraphics{Logo_Buchcover}} \textcolor{blue}{\includegraphics{Logo_Buchcover}} \end{document}
答案2
这可能不适用于任何图形eps
,但对于不太复杂的矢量图形,可以使用此工作流程:
- 转换
Logob.eps
为;Asymptote
pstoedit -f asy Logob.eps Logob.asy
- 简化
asy
代码并在适当的地方添加改变颜色的命令。
对于提供的徽标,pstoedit
发现该DIN-Regular
字体用于文本。
下面Logob.tex
包含在 中绘制徽标的程序asydef
,它接受背景颜色、书籍颜色和三行文本颜色的参数。
\documentclass{article}
\usepackage{fontspec}
\setmainfont{dinregular.ttf}
\usepackage[inline]{asymptote}
\begin{asydef}
size(88,43);
import pstoedit;
void logo(pen bgPen=white,pen[] bookPen=new pen[]{black}, pen[] textPen=bookPen){
filldraw(box((0,0),(89,43)),bgPen,bgPen);
textpen=textPen[0];
textpen += fontsize(7.84581);
label(baseline("language"),(56.229,33),align,textpen);
textpen=textPen[1%textPen.length];
textpen += fontsize(8.02011);
label(baseline("science"),(56.229,23.5),align,textpen);
textpen=textPen[2%textPen.length];
textpen += fontsize(8.02011);
label(baseline("press"),(56.229,14),align,textpen);
currentpen += 0.5bp;
currentpen += squarecap;
currentpen += miterjoin;
currentpen += linetype(" ",false);
fill((14.0195,42.5195)--(0,2.47656)--(7.07031,0)
--(21.0898,40.043)--cycle,bookPen[0%bookPen.length]);
fill((21.0859,42.4258)--(21.0859,0)--(28.5781,0)
--(28.5781,42.4258)--cycle,bookPen[1%bookPen.length]);
fill((29.5742,42.4258)--(29.5742,0)--(37.0664,0)
--(37.0664,42.4258)--cycle,bookPen[2%bookPen.length]);
fill((38.0625,33.9648)--(38.0625,0)--(45.5547,0)
--(45.5547,33.9648)--cycle,bookPen[3%bookPen.length]);
fill((46.5508,42.4258)--(46.5508,0)--(54.043,0)
--(54.043,42.4258)--cycle,bookPen[4%bookPen.length]);
}
\end{asydef}
\begin{document}
\begin{minipage}{88bp}
\begin{asy}
logo();
\end{asy}
\end{minipage}
\begin{minipage}{88bp}
\begin{asy}
logo(bgPen=gray,bookPen=new pen[]{white},textPen=new pen[]{black});
\end{asy}
\end{minipage}
%
\begin{minipage}{88bp}
\begin{asy}
logo(bgPen=lightblue+opacity(0.3),bookPen=new pen[]{green,orange});
\end{asy}
\end{minipage}
%
\begin{minipage}{88bp}
\begin{asy}
logo(bgPen=lightgreen+opacity(0.3),bookPen=new pen[]{red,green,darkblue,orange,yellow}
,textPen=new pen[]{red,green,blue});
\end{asy}
\end{minipage}
\end{document}
要使用 处理它xelatex
,请运行:
xelatex Logob.tex
asy -f pdf -tex=xelatex Logob-*.asy
xelatex Logob.tex