通过 PSTricks 或 Tikz 实现凸版印刷效果

通过 PSTricks 或 Tikz 实现凸版印刷效果

我已经在META网站部分中输入了一篇文章,回答了如何实现网站标题中的凸版印刷(或类似雕刻)效果的问题。我知道可以使用矢量图形 GUI 驱动软件(例如 Inkscape 或 Adob​​e Illustrator 及其同类软件)来实现。我一点也不鄙视这些应用程序(恰恰相反),但我使用或PSTricksTikz甚至Asymptote)进行图形工作的原因与我使用基于 TeX 的排版系统(而不是其他高质量系统,例如 Adob​​e InDesign 或 Quark)的原因完全相同。

有人META建议我也许应该在本节中询问这一点,所以我就在这里。有人可以说是否有办法用我们喜爱的软件包(我上面提到的那些)来实现这种效果?当然,可以在 PostScript 级别上实现,但我问的是一种更直接的、已经可用的方法。

编辑:艾伦的以下回答很好。我们确实得到了凸版印刷效果,但我相信它与标题中实现的效果不同。Caramdir在部分中回答说它META不是在 TeX 上完成的——我理解他的意思是它是用一些 GUI 驱动的应用程序完成的。有人知道如何使用基于 或 的代码来做到这PSTricks一点TikzAsymptote

答案1

这是纯 TikZ/PGF 版本。需要做一些工作才能获得与原始图像一样好的效果。它使用了TeX-SX 启动板:字母形状包和阴影模糊包(注意:与pgf-blur(CTAN 上的包)

这个想法是给字母添加阴影,但阴影绘制在字母上方而不是下方,这样会给人一种阴影是由周围的纸张而不是字母造成的效果。shapes.letter需要 tikzlibrary 来定义与字母对应的路径,而pgf-blur库用于模糊阴影。

有了这两个包,下面就是产生效果的代码:

\documentclass{article}
%\url{http://tex.stackexchange.com/q/62570/86}
\usepackage{tikz}
\usetikzlibrary{shapes.letters,shadows.blur}

\pgfkeys{
  /pgf/letter/.cd,
  load font={stikz}{normal},
  size=4,
  load encoding=char,
}

\makeatletter
\tikzset{
  use letter path/.code={%
    \pgfscope
    \pgftransformscale{\letter@size}%
    \letter@path{\letter@encode{#1}}%
    \endpgfscope
  }
}
\makeatother
\begin{document}
\begin{tikzpicture}
\begin{scope}
\fill[red!70!black,use letter path=T];
\path[blur shadow,shadow blur base colour=white,use letter path=T];
\begin{scope}[shift={(2cm,-.8cm)}]
\fill[red!70!black,use letter path=E];
\path[blur shadow,shadow blur base colour=white,use letter path=E];
\end{scope}
\begin{scope}[shift={(4.1cm,0)}]
\fill[red!70!black,use letter path=X];
\path[blur shadow,shadow blur base colour=white,use letter path=X];
\end{scope}
\path (current bounding box.north west) ++(-1,1)  (current bounding
box.south east) ++(1,-1);
\clip[use letter path=T] (current bounding box.north west) rectangle
(current bounding box.south east);
\clip[shift={(2cm,-.8cm)},use letter path=E] (current bounding
box.north west) rectangle (current bounding box.south east);
\clip[shift={(4.1cm,0cm)},use letter path=X] (current bounding
box.north west) rectangle (current bounding box.south east);
\fill[blue,rounded corners] (current bounding box.north west)
rectangle (current bounding box.south east);
\end{scope}
\end{tikzpicture}
\end{document}

结果如下(我没有花任何时间来调整颜色):

伪凹陷字母

答案2

需要pdflatex -shell-escapelatex->dvips->ps2pdf

\documentclass{article}
\usepackage{auto-pst-pdf}% for running it with pdflatex -shell-escape
\usepackage{pst-light3d}
\DeclareFixedFont{\Sf}{T1}{fxb}{b}{n}{2cm}
\begin{document}

\psframebox[framesep=5mm,fillcolor=black!20,fillstyle=solid]{%
  \PstLightThreeDText[fillstyle=solid,fillcolor=white,linestyle=none,
    LightThreeDYLength=0.1]{\Sf \rule[-0.75cm]{0pt}{2.5cm}Letterpress}}

\psframebox[framesep=5mm,fillcolor=black!20,fillstyle=solid]{%
  \PstLightThreeDText[fillstyle=solid,fillcolor=black!70,linestyle=none,
    LightThreeDYLength=-0.07,LightThreeDColorPsCommand=pop 1 setgray,
    LightThreeDXLength=0]{\Sf \rule[-0.75cm]{0pt}{2.5cm}Letterpress}}

\end{document}

在此处输入图片描述

答案3

通过在适当颜色的背景上使用带有轻微阴影的文本,您可以实现穷人的凸版印刷效果。这是在 CSS 中实现效果的方式。在此示例中,我仅使用 TikZ 来制作背景。阴影是使用 niceshadowbox包生成的,该包首次在此问题中公布:

如何创建带有阴影的文本?

\documentclass{article}
\usepackage[svgnames]{xcolor}
\usepackage{shadowtext}
\usepackage{tikz}
% fontspec requires LuaLaTeX or XeLaTeX
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\newcommand\HUGE{\fontsize{2cm}{2cm}\selectfont}
% The regular shadowtext command to set colours is \shadowcolor
% but the command allows input only in rgb triples
% The following command allows for xcolor named values to be used
% and is much more convenient
\makeatletter
\newcommand\setshadowcolor[1]{\colorlet{st@shadowcolor}{#1}}
\makeatother
\begin{document}
\shadowoffsety{1pt}
\shadowoffsetx{0pt}

\begin{tikzpicture}
\node[fill=black!50,minimum height=3cm] 
     {\setshadowcolor{black!30}\shadowtext{\bfseries\HUGE Letterpress}};
\begin{scope}[yshift=3cm]
\node[fill=black!40,minimum height=3cm] 
     {\setshadowcolor{black}\shadowtext{\color{white}\bfseries\HUGE Letterpress}};
\end{scope}
\end{tikzpicture}
\end{document}

(由于转换为,图像看起来不太好看.png。)

代码输出

相关内容