26

How could I produce characters which are outlined when the character itself is in some color. A picture to illustrate what I'm after:
enter image description here

The problems with the above are that:

  • the outline is of no consistent width around the letter.
  • the way I've done it (using tikz with a upscaled black node below the colored one), there is no easy way to control the width of the outline.

Do you know of a way to accomplish this with TeX? I am using plain-format with XeTeX, but I'm interested in all ways to accomplish this.

16

The pst-text package can do this.

\documentclass{minimal}
\usepackage{pst-text}
\DeclareFixedFont{\RM}{T1}{ptm}{b}{n}{2cm}

\begin{document}
  \pscharpath[fillstyle=solid,fillcolor=magenta!50]{\RM TeXnik}
\end{document}

Perhaps you can migrate this to plain (Xe)TeX.


enter image description here

  • 1
    +1 but text-search will be no longer possible. :-) – xport Aug 8 '11 at 19:22
  • 1
    Since the OP used tikZ this should be no major problem. – Thorsten Donig Aug 8 '11 at 19:34
  • 7
    I don't get the same output (no color) with the example. – morbusg Aug 18 '11 at 15:16
  • I don't get the effect show in the image either! – Paulo Ney Dec 17 '16 at 1:31
22

The contour package can do this, too. You'll need to use Type 1 fonts (check the documentation); here is sample code

\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{pslatex}
\usepackage{contour}
\usepackage{color}
\pagestyle{empty}
\begin{document}
\contourlength{2pt} %how thick each copy is
\contournumber{20}  %number of copies
\contour{red}{\Huge \textcolor{green}{This is the text.}}\\
\end{document}

The output is: enter image description here Changing the contourlength to 1pt will give a less pronounced outline.

  • What did the log file say was the problem? – DJP Aug 11 '11 at 4:33
  • With a minimal: \input eplain \beginpackages\usepackage{contour}\endpackages bar\bye, I get: Undefined control sequence. \newlength – morbusg Aug 11 '11 at 5:05
  • When I put "minimal" into the documentclass, instead of "article" I get an "Undefined control sequence" error. It was fixed by removing "\Huge" from the code. If that doesn't work, maybe try to find a minimal example that doesn't work and repost as question? – DJP Aug 11 '11 at 5:35
  • Oh, right, so... There is the language TeX, and then there are macro-packages which build up on the primitives provided by the language: plain-tex, latex, and context, for example. I am using the plain-tex macro-package, for which there exists a macro-collection called eplain which allows loading some macro-packages designed to work with latex, to be loaded in plain-tex. I didn't realize you could load eplain with latex. – morbusg Aug 11 '11 at 6:04
  • You should specify \textcolor{}{} outside the contour, at least in Beamer. See tex.stackexchange.com/questions/78386/…. – Mechanical snail Oct 23 '12 at 2:03
9

Some years later, in a file I found called “Practical use of special commands in DVIPDFMx” by Jin-Hwan Cho (TUG2005), I found information on the low-level PDF command for use with dvipdfmx:

\special{pdf:bcolor [.8 0 .8] [0]} % two arrays: first defines fill, second the stroke.
% If array has one entry, it's meaning grayscale, if three: RGB, if four: CMYK.
\special{pdf:literal direct .4 w 2 Tr} % .4 here is the stroke width
F
\bye

enter image description here

  • Do you know any good resources where I can learn more about these PDF literals? – Henri Menke Jan 30 '15 at 13:45
  • 1
    @Henri: You can find the document I'm talking about in the answer here, and for the PDF reference, you can see here. I think I also remember some talks related to PStricks which also cover some of the PDF subset, but I don't have any links for you now; sorry. – morbusg Jan 30 '15 at 17:38
8

Package pdfrender for pdfTeX or LuaTeX (newer versions require package luatex85) allows to configure the outline with many parameters as fill color, stroke color, or line width for stroking.

Because of pdfTeX's colorstacks, page breaks are supported as for color settings.

Example:

\documentclass[12pt]{article}
% \usepackage{luatex85} % for LuaTeX
\usepackage{xcolor}
\usepackage{pdfrender}
\definecolor{CharFillColor}{rgb}{1,.8,.8}
\begin{document}
  \sffamily
  \textpdfrender{
    TextRenderingMode=FillStroke,
    LineWidth=.2pt,
    FillColor=CharFillColor,
  }{Lorem ipsum.}
\end{document}

Result

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.