201

I'm making a calendar. The calendar will be for TUG, 2015. Last year I also made a calendar but because of time constraints most examples were graphics.

Since this is a lot of work, I need your help.

If you can/want to help out, the following are the requirements for contributions:

  • Your contribution should not exceed 1 page of A4 size, in landscape or A5 size, portrait orientation.
  • You should post your TeX solution as an answer to this question.
  • If possible, please provide a hyperlink to the pdf output document.
  • If you want to make your submission available for the calendar, you should make sure the document can be made available in a single page pdf that has a size that does not exceed A4/landscape. I will ask you for the pdf if I need it.
  • Your submission may use user-defined packages and proprietary fonts. There is no need to make these available.
  • Your submission should include a short description and a screenshot of the output.

The following template may be useful to get started.

% save this document as example.tex
% compile this document with: pdflatex -shell-escape example.tex
\documentclass{article}

% Needed to make sure your page dimensions
% are the same as that of the calendar.
\usepackage[landscape,a4paper]{geometry}

\usepackage{tikz}
\usetikzlibrary{external}

\pagestyle{empty}

\begin{document}

\begin{tikzpicture}
\node[scale=10]{Your Art Here.};
\end{tikzpicture}

\end{document}

Example of Output

  • On 4 October, 2013 I decided to relax my question and also accept showcases of typography.
  • On 12 November, I once more relaxed my question because I definitely don't have the time to make a tasty looking calendar on my own. There may be a prize for one or two submissions.
  • Springer are kindly donating two copies of LaTeX and Friends.
  • If there are enough submissions, I'll compile a calendar. Otherwise, I may have to cancel the project.
  • There have been too few submissions so I am cancelling the calendar for 2014. Peter Wilson has already implemented a TeX-based calendar so I don't see any real problem.
  • Nicholas Hamilton and ChrisS have won a copy of the book.

When the calendar is finished, I will post the code as an answer to this question. Hopefully, this will help people who want to do similar things.

FWIW I decided not to award my bounty (500) today (2014-02-14) as I'd like to raise the standard a bit.

23
  • 5
    Many cool things are shown in tex.stackexchange.com/questions/1319/…. Maybe you can ask some of the contributors there. Commented Sep 24, 2013 at 22:33
  • 8
    Can I submit this? Commented Oct 4, 2013 at 19:39
  • 3
    +1 for the template. LaTeX newbies like me appreciate it. Commented Oct 31, 2013 at 19:27
  • 2
    @all Please note that Peter Wilson has made a nice calendar for 2014 available.
    – user10274
    Commented Dec 9, 2013 at 12:39
  • 2
    @MarcvanDongen: The info from the last two sentences is new to me. I just wanted to give more examples with good, no, great typography.
    – Speravir
    Commented Feb 17, 2014 at 20:34

24 Answers 24

146
+1000

Well someone has to go first.... !

Output

I have partially completed my PhD, and, use this on the inside cover of my submissions to add some 'artistic-flair', however, the source for the word-cloud is actually my BibTeX Database, so the cloud is relevant to each document, and, the sample above is effectively the last one that I produced.

In terms of methodology, the cloud itself was produced in R, via custom package, which I have written for this purpose. This custom package is more-or-less a convenience wrapper to the wordcloud package which is freely available.

To integrate it with LaTeX, I used knitr, however, this is simply to call the R package, which I have instructed to produce the result in .tikz format.

So here is the code to my solution:

\documentclass[a4paper,landscape,12pt]{article}
\usepackage[margin=0cm]{geometry}

%SETUP
\usepackage{fancyhdr,xcolor,tikz,helvet}
\renewcommand{\familydefault}{\sfdefault}
\pagestyle{empty}
\pagecolor{black!75}

\begin{document}
    %CREATE THE CLOUD
    <<MakeCloud,echo=FALSE,eval=TRUE>>=
      set.seed(1)
      suppressMessages(library(bibcloud))
      suppressMessages(library(tikzDevice))
      options(tikzDocumentDeclaration   = '\\documentclass[12pt]{article}\\usepackage{helvet}\\renewcommand{\\familydefault}{\\sfdefault}\n')
      suppressMessages(cloud(pattern    = "phd.bib",
                             dev        = "tikz",
                             output     = "WordCloud",
                             col.outer  = "#404040",
                             col.inner  = "#FFFFFF",
                             width      = 8,
                             height     = 8,
                             scale.small= 0.25,
                             scale.large= 4,
                             stem       = FALSE,
                             max.words  = 300))
    @

  %TYPESET THE CLOUD
  \begin{figure}[p]
    \centering
    \input{WordCloud.tikz}
  \end{figure}

\end{document}

The tikz file WordCloud.tikz, and the resulting pdf, can be found HERE.

11
  • 4
    "Flair", not "Flare", unless it involves some phosphorus, of coarse [sic]. Commented Dec 5, 2013 at 0:24
  • 6
    @StevenB.Segletes BTW its course, not coarse... Commented Dec 6, 2013 at 10:08
  • 3
    Indeed. It was a [sic] joke on my part. Cheers on a fine calendar entry! Commented Dec 6, 2013 at 13:12
  • 2
    Congratulations. You've won a copy of the book. If you forward me your snail mail address, I'll send you a copy. Do you want me to sign it?
    – user10274
    Commented Dec 16, 2013 at 9:57
  • 1
    The above .Rnw file depends on the custom R package as stated in my competition submission. I have made the package available too : app.box.com/s/rqcxvpyghqb1yx3zg2ys Commented Oct 26, 2014 at 21:17
103
+500

Here's a nineteenth century-style advertisement for TeX, demonstrating XeTeX's OpenType support and the power of OpenType fonts. A single font, Phaeton, was used to produce this file: all the text, the abbreviations, the banners, the ornaments used in the background and the image of the man on the horse are glyphs in the font.

Preview of Phaeton

% save this document as example.tex
% compile this document with: xelatex -shell-escape example.tex
\documentclass{article}

% Needed to make sure your page dimensions
% are the same as that of the calendar.
\usepackage[landscape,a4paper,margin=0pt]{geometry}
\parindent=0pt

\usepackage[svgnames]{xcolor}
\usepackage{tikz}

\usepackage{microtype}

\usepackage{fontspec}
\setmainfont[Mapping=tex-text]{Phaeton}

\def\swash#1{{\addfontfeatures{RawFeature=+swsh}#1}}
\def\nfrac#1{{\addfontfeatures{RawFeature=+frac}#1}}
\def\cword#1{{\addfontfeatures{RawFeature=+dlig}#1}}
\def\cwrdb#1{{\addfontfeatures{RawFeature={+dlig,+ss01}}#1}}
\def\baner#1{{\addfontfeatures{RawFeature=+ss02}#1}}

\def\orn{\char"E047\char"E048\hspace{-2pt}\raisebox{20.5pt}{\rotatebox{180}{\char"E047\char"E048}}\hspace{-2pt}}
\def\Orn{\orn\orn\orn\orn\orn\orn\orn\orn}
\def\ORn{\Orn\Orn\Orn\Orn\Orn\Orn\Orn\Orn}
\def\ORN{\ORn\ORn\ORn\ORn\ORn\ORn\Orn\Orn}

\definecolor{bgcolour}{gray}{0.9}

\pagestyle{empty}

\begin{document}
\null\vfill
\centering\begin{tikzpicture}
  % Clipping
  \clip (-0.5\textwidth+1cm,-0.5\textheight) rectangle (0.5\textwidth-1cm,0.5\textheight-2cm) ;
  % Background.
  \draw (0,0) node {\fontsize{48}{20.5}\selectfont\begin{minipage}{1.5\textwidth}\color{bgcolour}\ORN\ORN\end{minipage}} ;
  % Logo.
  \draw (0,0) node {\fontsize{120}{120}\selectfont\baner{6=======6}} ;
  \draw (0,0) node {\fontsize{48}{48}\selectfont\TeX\ \cword{AND} Friends} ;
  \draw (0,1.8) node {PROFESSOR DONALD KNUTH'S WORLD FAMOUS} ;
  \draw (0,4.5) node {\fontsize{120}{120}\selectfont\char"E00E} ;
  \draw (-4,4.5) node {\begin{minipage}{3cm}\fontsize{14}{16}\selectfont\centering\hrule\medskip\swash{\strut THE MOST POWERFUL\strut\ PROGRAM\strut}\medskip\hrule\end{minipage}} ;
  \draw (4,4.5) node {\begin{minipage}{3cm}\fontsize{14}{16}\selectfont\centering\hrule\medskip\swash{\strut OF ITS KIND AVAILABLE\strut\ TODAY\strut}\medskip\hrule\end{minipage}} ;
  \draw (0,-1.5) node {\fontsize{16}{16}\selectfont\swash{Available for all major operating systems.}} ;
  \draw (0,-5) node {\begin{minipage}{13cm}\fontsize{16}{20}\selectfont\cword{with} SUPPORT \cword{for} UNICODE \cword{and} OPENTYPE FONTS, \TeX\ \cword{and} ITS DERIVATIVES ARE \cword{the} IDEAL SOLUTION \cword{for} ALL YOUR TWENTY-FIRST CENTURY TYPESETTING NEEDS. \cword{the} IN-BUILT MACRO LANGUAGE ALLOWS YOU TO CUSTOMISE IT TO YOUR NEEDS. \cword{with} AUTOMATIC INDEXING \cword{and} REFERENCING, \cword{and} UNPARALLELED MATHEMATICS SUPPORT, THERE'S NO REASON NOT TO SWITCH TODAY.\end{minipage}} ;
  \draw (0,-9) node {\fontsize{120}{120}\selectfont\baner{1====1}} ;
  \draw (0,-8.7) node {ESTABLISHED 1978} ;
\end{tikzpicture}\par
\vfill\null
\end{document}

The source code and output are available here.

8
  • 1
    How to get the different font features of a font? Not all otf fonts have all the features. Anyway this is a retro but nice style.
    – s__C
    Commented Dec 14, 2013 at 9:20
  • 1
    @s__C Many rich (such as Phaeton) come with documentation that list the OpenType features. There are font programs that can show you every character and OT features; I use FontMatrix, which is for Linux and Windows. The Adobe Font Development Kit can also tell you about OT features.
    – ChrisS
    Commented Dec 14, 2013 at 9:24
  • 1
    @s__C See tex.stackexchange.com/questions/75720/… and the first question linked in there. ChrisS – FontMatrix might be another answer to that question of mine there? If so, your writing up an answer would be appreciated!
    – doncherry
    Commented Dec 14, 2013 at 11:49
  • Where can one can the Phaeton font for installation on Debian Linux? Commented Dec 14, 2013 at 12:44
  • @doncherry FontMatrix doesn't give you a glyph-by-glyph list of substitutions for each feature, as the question asks; it only allows you to apply different combinations of features to a block of text, so I don't think it provides enough detail for that question.
    – ChrisS
    Commented Dec 15, 2013 at 6:37
96
+1000

A very simple demonstration of using LaTeX fonts with pdfLaTeX.

A pamphlet with a powerful message from George Orwell.

enter image description here

Code

\documentclass{article}
\usepackage[landscape,a4paper,hmargin=1.5cm,vmargin=1.5cm]{geometry}
\usepackage[osf]{garamondx}
\usepackage[T1]{fontenc}
\usepackage[cmyk,dvipsnames]{xcolor}
\usepackage{tikz}
\usepackage{multicol}
\setlength{\columnsep}{2cm}
\usepackage{lettrine}
%\setlength{\DefaultNindent}{0em}
\setcounter{DefaultLines}{4}
\input Zallman.fd
\newcommand*\initfamily{\usefont{U}{Zallman}{xl}{n}}
\renewcommand{\LettrineFontHook}{\initfamily}
\usepackage{bbding}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}[remember picture,overlay]
  \shade[outer color=gray!15,inner color=white] (current page.south west) rectangle (current page.north east);
  \draw[gray!45,dashed] (current page.south) -- node[pos=.01,rotate=90] {\ScissorRight} (current page.north);
\end{tikzpicture}
\begin{multicols}{2}
  \newcommand{\pamphlet}{%
    {\Huge\hfill\textsc{\textcolor{RoyalBlue}{T}he
        \textcolor{RoyalBlue}{F}reedom} \textit{of} \textsc{the
        \textcolor{RoyalBlue}{P}ress}\hfill} \vspace{\baselineskip}

    \lettrine{\textcolor{RoyalBlue}{I}}{} am well acquainted with all
    the arguments against freedom of thought and speech ---the
    arguments which claim that it cannot exist, and the arguments
    which claim that it ought not to.  I answer simply that they don't
    convince me and that our civilization over a period of four
    hundred years has been founded on the opposite notice.  For quite
    a decade past I have believed that the existing Russian
    \textit{r\'egime} is a mainly evil thing, and I claim the right to
    say so, in spite of the fact that we are allies with the USSR in a
    war which I want to see won.  If I had to choose a text to justify
    myself, I should choose the line from Milton:

    \begin{quote}
      \itshape By the known rules of ancient liberty.
    \end{quote}

    The word \textit{ancient} emphasizes the fact that intellectual
    freedom is a deep--rooted tradition without which our
    characteristic western culture could only doubtfully exist.  From
    that tradition many of our intellectuals are visibly turning away.
    They have accepted the principle that a book should be published
    or suppressed, praised or damned, not on its merits but according
    to political expediency.  And others who do not actually hold this
    view assent to it from sheer cowardice.  An example of this is the
    failure of the numerous and vocal English pacifists to raise their
    voices against the prevalent worship of Russian militarism.
    According to those pacifists, all violence is evil, and they have
    urged us at every stage of the war to give in or at least to make
    a compromise peace.  But how many of them have ever suggested that
    war is also evil when it is waged by the Red Army?  Apparently the
    Russians have a right to defend themselves, whereas for us to do
    [\textit{so}] is a deadly sin.  One can only explain this
    contradiction in one way: that is, by a cowardly desire to keep in
    with the bulk of the intelligentsia, whose patriotism is directed
    towards the USSR rather than towards Britain.  I know that the
    English intelligentsia have plenty of reason for their timidity
    and dishonesty, indeed I know by heart the arguments by which they
    justify themselves.  But at least let us have no more nonsense
    about defending liberty against Fascism.  If liberty means
    anything at all it means the right to tell people what they do not
    want to hear.  The common people still vaguely subscribe to that
    doctrine and act on it.  In our country ---it is not the same in
    all countries: it was not so in republican France, and
    it is not so in the USA today--- it is the liberals who fear
    liberty and the intellectuals who want to do dirt on the
    intellect: it is to draw attention to that fact that I have
    written this preface.

    \vspace{\baselineskip}
    \noindent\textit{Extract from}
    \textsc{The Freedom of the Press}\textit{, by
      \textcolor{RoyalBlue}{George Orwell}.
      Proposed Preface to `Animal Farm', 1945.
      First published: The Times Literary Supplement,
      September 15, 1972.}\par
  } \pamphlet \columnbreak \pamphlet
\end{multicols}
\end{document}

Update

Fixed an typing error inside text. Thanks Benjamin McKay! Here's the PDF output.

13
  • 3
    Nice, especially the use of colour and the subtle background.
    – ChrisS
    Commented Dec 17, 2013 at 3:36
  • Nice, though in my opinion the left and right margin is a bit too narrow.
    – maetra
    Commented Dec 17, 2013 at 9:08
  • Thanks. Could you provide a hyperlink to a pdf version as well please?
    – user10274
    Commented Dec 17, 2013 at 10:07
  • 1
    @Aradnix It can be done in various ways, I have defined a command to store the text, then use it whenever I need it.
    – osjerick
    Commented Oct 13, 2014 at 20:26
  • 1
    @Aradnix No, the command is \pamphlet.
    – osjerick
    Commented Oct 13, 2014 at 21:37
79
+500

Well, it is Christmas:

Output

% save this document as example.tex
% compile this document with: xelatex example.tex on a machine which has the Zapfino Extra LT Pro font (or edit the font declaration) --- you'll also need a background graphic, or comment it out
\documentclass{article}

% Needed to make sure your page dimensions
% are the same as that of the calendar.
\usepackage[landscape,a4paper,
lmargin=10mm,
rmargin=10mm,
tmargin=10mm,
bmargin=10mm]
{geometry}

\setlength{\unitlength}{1mm}

\pagestyle{empty}
\parindent=0sp
\setlength{\topskip}{0pt}

\usepackage{fontspec}
\usepackage{xltxtra}
\newICUfeature{Ornaments}{Pi}{+ornm}

\setmainfont[Numbers={Proportional,OldStyle},Ligatures={Common, Rare}]{Zapfino Extra LT Pro}
\pagestyle{empty}

\newcommand{\rgb}[2]{\bgroup\addfontfeature{Color=#1}#2\egroup}
\newcommand{\orn}[1]{\bgroup\addfontfeature{Ornaments=Pi,Color=77777777}#1\egroup}
\newcommand{\alt}[2]{\bgroup\addfontfeature{Variant=#1}#2\egroup}
\begin{document}
\begin{picture}(0,0)
\put(-10,-200)
{\includegraphics{Pergamenata-RGB-A4.pdf}}
\end{picture}

\fontsize{18bp}{24bp}\selectfont
\rgb{99000099}{Paix sur terre Bonne entente entre toutes et tous} \orn{A}
\rgb{3D3D5A99}{Friede auf Erden und den Menschen ein Wohlgefallen} \orn{K}
\rgb{447D8E99}{In terra pax hominibus bonæ voluntatis} \orn{C}
\rgb{2C345299}{Vrede op aarde aan de mensen van goede wil} \orn{E}
\rgb{94BF8299}{Frede op ierde ûnder minsken fen it wolbehagen} \orn{B}
\rgb{00669999}{Frid på jorden, till människorna ett gott behag} \orn{F}
\rgb{8F98AF99}{Rauha Maassa Ja Ihmisillä Hyvä Tahto} \orn{J}
\rgb{33660099}{Pace in terra agli uomini di buona volontà} \orn{H}
\rgb{00003399}{Paz en la tierra a los hombres de buena voluntad} \orn{I}
\rgb{99663399}{Paz na terra entre os homens de boa vontade.} \orn{D}
\rgb{FFCC6699}{Fred til mennesker med Guds velbehag!}

\begin{centering}
\fontsize{108}{120}%
\rgb{CC333399}{%
\alt{4}{P}eace on \lower3bp\hbox\alt{3}{E}\kern3bp art\alt{3}{h}\\[36bp]
\hspace*{24bp}\alt{4}{G}oo\alt{4}{d} \alt{3}{W}ill \alt{4}{T}owar\alt{4}{d} \alt{3}{M}e\alt{7}{n}}
\end{centering}

\vfill

\fontsize{16.8bp}{24bp}\selectfont
This card was typeset using the \XeTeX\ variant of Dr.\ Donald Knuth’s \TeX\ system
created by Jonathan Kew in the typeface Zapfino created by Prof.\ Hermann Zapf
with David Siegel and Gino Lee.
It is modeled on Jean-Yee Wong’s famous polyglot card for \textsc{unicef}.
\rgb{99000099}{The French translation was provided by Jef Tombeur,}
\rgb{3D3D5A99}{the traditional German, also used for Händel’s \textsc{Messiah}, by David Kastrup,} 
\rgb{447D8E99}{the Latin by DK, Bruno Voisin and John McChesney-Young,}
\rgb{2C345299}{the Dutch by Henk Gianotten,} 
\rgb{94BF8299}{the Frysian by Gerben Wierda,}
\rgb{00669999}{the Swedish by Fredrik Wallenberg,}
\rgb{8F98AF99}{the Finnish by Pekka Sorjonen,}
\rgb{33660099}{the Italian by Giuseppe Bilotta,} 
\rgb{00003399}{the Spanish by Jorge de Buen U.}
\rgb{99663399}{the Portuguese by Jorge N. R. Vilhena,} 
\smash{\&} 
\rgb{FFCC6699}{the Danish by~Mogens Lemvig Hansen.}

Translations for other languages would be gratefully received. 
\hfill\alt{2}{C}reated by \alt{4}{W}illiam \alt{3}{F}. \alt{4}{A}\alt{1}{d}ams for the \TeX\ Showcase and updated for \textsc{tug}’s 2014 Calen\alt{8}{d}ar.

\end{document}
11
  • 2
    Please fix the first comment because it has to be compiled with XeTeX.
    – marczellm
    Commented Dec 4, 2013 at 18:46
  • 1
    Thanks. I made two (minor/pedantic) changes in the source code. Could you provide a link to the output pdf please? (I cannot read the text in the picture.)
    – user10274
    Commented Dec 6, 2013 at 11:12
  • 3
    This is a coincidence. I had a look at your website and I noticed something that had caught my eye before. Would you considering submitting the cover of The Book of Tea? I think it would be an excellent example of what I am looking for.
    – user10274
    Commented Dec 6, 2013 at 11:57
  • Not sure how I could work that portrait format into a landscape. Also, I'm afraid that the cover was drawn up in Altsys Virtuoso if memory serves --- I guess I could (should) re-create it in XeLaTeX --- I'll keep that in mind when it surfaces again as a project. Currently really busy w/ documentation for the ShapeOko 2 and trying to get a book re-print off the ground. My apologies.
    – WillAdams
    Commented Dec 10, 2013 at 16:58
  • Toward men? What about women?
    – jub0bs
    Commented Dec 19, 2013 at 22:27
76

I'm not a type designer or a typographer, but I thought use TikZ to illustrate a type design. Here is my idea:

Output

I add a text to right side to complement the figure and show typography with a Sans Serif font, the numbers can be used in a pretty good cover :). The output can be downloaded here.

Code

\documentclass{article}
\usepackage[landscape,a4paper,hmargin=1.5cm,vmargin=1.5cm]{geometry}
\usepackage[defaultsans]{droidsans}
\usepackage{epigrafica}
\usepackage[LGR,OT1]{fontenc}
\usepackage{microtype}
\parskip .5\baselineskip
\usepackage[cmyk,dvipsnames]{xcolor}
\usepackage{tikz}
    \usetikzlibrary{calc,through,intersections,shadings}
\usepackage{multicol}
    \setlength{\columnsep}{3cm}
\usepackage{lettrine}
    \setcounter{DefaultLines}{4}
    \renewcommand{\DefaultLoversize}{0.2}
\usepackage[colorlinks=true,urlcolor={yellow!50},bookmarks=false]{hyperref}
\pagestyle{empty}
\color{white}  
\begin{document}
    \begin{tikzpicture}[remember picture,overlay]
        \shade[inner color=RoyalBlue!70,outer color=RoyalBlue] (current page.south west) rectangle (current page.north east);
        \shade[left color=Black,right color=transparent!0,opacity=.20] (current page.south) rectangle (current page.north east);
    \end{tikzpicture}
    \newcommand{\YearTypography}[1]{
        \ifnum#1=1
            \def\opacityF{.6}\def\opacityS{0}
        \else
            \ifnum#1=2
                \def\opacityF{.6}\def\opacityS{1}
            \else
                \ifnum#1=3 \def\opacityF{0}\def\opacityS{1}
                \else
                    \def\opacityF{.6}\def\opacityS{1}
                \fi
            \fi
        \fi
        \begin{tikzpicture}[x=.9cm,y=.9cm,white]
            \pgfmathsetmacro{\nthick}{.3};
            \pgfmathsetmacro{\nwidth}{2};
            \begin{scope}[opacity=\opacityF]
                \foreach [count=\yi] \y in {0,...,4}{
                    \pgfmathifthenelse{mod(\y,2) == 0}{"solid"}{"dashed"};
                    \draw[name path global/.expanded=hline\yi,\pgfmathresult] (0.5,\y) -- +(11.5,0);
                }
                %\foreach [count=\xi] \x in {1,3,4,6,7,9,10,12}{%Normal space between 4 and 1
                %    \draw[name path global/.expanded=vline\xi] (\x,-0.5) -- (\x,4.5);
                %}
                %\foreach [count=\xi] \x in {2,5,8,11}{
                %    \draw[name path global/.expanded=auxvline\xi,dashed] (\x,-0.3) -- (\x,4.3);
                %}
                \foreach [count=\xi] \x in {1,3,4,6,7,9,9.5,11.5}{%Number 4 closer to 1
                    \draw[name path global/.expanded=vline\xi] (\x,-0.5) -- (\x,4.5);
                }
                \foreach [count=\xi] \x in {2,5,8,10.5}{
                    \draw[name path global/.expanded=auxvline\xi,dashed] (\x,-0.3) -- (\x,4.3);
                }

                %Number 2
                \path[name intersections={of=auxvline1 and hline4,by=c12}];
                \draw[name path=circle12] (c12) circle (\nwidth/2);
                \draw[name path=circle22] (c12) circle (\nwidth/2-\nthick);
                \path[name intersections={of=vline1 and hline5,by=a1}];
                \path[name intersections={of=vline2 and hline3,by=a2}];
                \draw[name path=d1,dashed] ($(a1)+(-.2,.2)$) -- ($(a2)+(.2,-.2)$);
                \path[name intersections={of=vline1 and hline3,by=a3}];
                \path[name intersections={of=vline2 and hline1,by=a4}];
                \draw[name path=d2,dashed] ($(a3)+(-.2,.2)$) -- ($(a4)+(.2,-.2)$);
                \path[name intersections={of=d1 and circle12,by={s11,s12}}];
                \path[name intersections={of=d1 and circle22,by={s21,s22}}];
                \draw[name path=d3] ($(s22)+(.5,.5)$) -- +(-2,-2);
                \draw[name path=d4] ($(s12)+(.3,.3)$) -- +(-2,-2);
                \draw[name path=hbase2] (1,\nthick) -- +(2,0);
                \path[name intersections={of=d2 and hbase2,by=auxc}];
                \path[name intersections={of=d2 and d4,by=ic1}];
                \path[name intersections={of=d2 and d3,by=ic2}];
                \path[name intersections={of=vline1 and hline1,by=o}];
                \begin{scope}
                    \path[clip] (o) rectangle +(2,2);
                    \node [draw] at (auxc) [circle through={(ic1)}] {};
                    \node [draw] at (auxc) [circle through={(ic2)}] {};
                \end{scope}
                \path[name intersections={of=vline1 and hline4,by=i21}];
                \path[name intersections={of=vline2 and hline1,by=i22}];

                %Number 0
                \path[name intersections={of=auxvline2 and hline4,by=c10}];
                \path[name intersections={of=auxvline2 and hline2,by=c20}];
                \path[name intersections={of=vline3 and hline4,by=i01}];
                \path[name intersections={of=vline4 and hline2,by=i02}];
                \draw[name path=circle10] (c10) circle (\nwidth/2);
                \draw[name path=circle20] (c10) circle (\nwidth/2-\nthick);
                \draw[name path=circle30] (c20) circle (\nwidth/2);
                \draw[name path=circle40] (c20) circle (\nwidth/2-\nthick);
                \path[name intersections={of=circle20 and hline4,by={o11,o12}}];
                \path[name intersections={of=circle40 and hline2,by={o21,o22}}];
                \draw ($(o11)+(0,1)$) -- ($(o21)+(0,-1)$);
                \draw ($(o12)+(0,1)$) -- ($(o22)+(0,-1)$);

                %Number 1
                \path[name intersections={of=vline5 and hline4,by=i10}];
                \path[name intersections={of=auxvline3 and hline5,by=i11}];
                \path[name intersections={of=auxvline3 and hline1,by=i12}];
                \draw[name path=v11] ($(i11)-(\nthick/2,0)$) -- ($(i12)-(\nthick/2,0)$);
                \draw[name path=v12] ($(i11)+(\nthick/2,0)$) -- ($(i12)+(\nthick/2,0)$);
                \draw ($(i10)+(0,\nthick/2)$) -- ($(i11)-(\nthick/2,0)$);
                \draw[name path=d11] ($(i10)-(0,\nthick/2)$) -- ($(i11)+(\nthick/2,0)$);
                \draw[name path=d12,dashed] ($(i10)+(0,\nthick/2)+(-.2,.2)$) -- +(2.4,-2.4);
                \path[name intersections={of=d11 and d12,by=i13}];
                \path[name intersections={of=d11 and v11,by=i14}];
                \draw[name path=hbase1] (7,\nthick) -- +(2,0);
                \path[name intersections={of=vline6 and hbase1,by=i15}];
                \path[name intersections={of=vline5 and hline1,by=i16}];
                \path[name intersections={of=v11 and hbase1,by=i17}];

                %Number 4 (replace this with code for number 5)
                \path[name intersections={of=vline8 and hline1,by=i41}];
                \path[name intersections={of=vline8 and hline5,by=i42}];
                \path[name intersections={of=vline7 and hline3,by=i43}];
                \draw[name path=v41] ($(i41)+(-\nthick,0)$) -- ($(i42)+(-\nthick,0)$);
                \draw[name path=d41] (i43) -- (i42);
                \draw ($(i43)+(0,\nthick)$) -- ($(i42)+(-\nthick,0)$);
                \draw[name path=h41] ($(i43)+(0,\nthick)$) -- +(2,0);
                \path[name intersections={of=d41 and v41,by=i44}];
                \path[name intersections={of=d41 and h41,by=i45}];
                \path[name intersections={of=h41 and v41,by=i46}];
                \path[name intersections={of=vline8 and hline3,by=i47}];
            \end{scope}
            
            \begin{scope}[opacity=\opacityS]
                %Number 2
                \fill (i21) arc(180:-45:\nwidth/2) -- (ic1) let \p1=($(ic1)-(auxc)$), \n1={veclen(\x1,\y1)} in arc(135:180:\n1) -| (i22) -| (1,\nthick) let \p2=($(ic2)-(auxc)$), \n2={veclen(\x2,\y2)} in arc(180:135:\n2) -- (s22) arc(-45:180:\nwidth/2-\nthick) -- cycle;

                %Number 0
                \fill[even odd rule] (i01) arc(180:0:\nwidth/2) -- (i02) arc(0:-180:\nwidth/2) -- cycle (o11) arc(180:0:\nwidth/2-\nthick) -- (o22) arc(0:-180:\nwidth/2-\nthick) -- cycle;

                %Number 1
                \fill ($(i10)+(0,\nthick/2)$) -- ($(i11)-(\nthick/2,0)$) -- ($(i11)+(\nthick/2,0)$) |- (i15) |- (i16) |- (i17) -- (i14) -- (i13) -- cycle;

                %Number 4 (replace this with code for number 5)
                \fill[even odd rule] ($(i43)+(0,\nthick)$) -- ($(i42)+(-\nthick,0)$) -| (i41) -| ($(i47)+(-\nthick,0)$) -- (i43) -- cycle (i44) -- (i45) -- (i46) -- cycle;
            \end{scope}
        \end{tikzpicture}
    }
    
    \begin{multicols}{2}
        \vspace*{2em}
        \begin{center}
            \YearTypography{1}\par
            \YearTypography{2}\par
            \YearTypography{3}
        \end{center}
        \columnbreak
        
        \vspace*{2em}
        \lettrine{\textcolor{yellow!70}{A}}{lthough} the technology of printing text using movable type was invented in China, and despite the esteem which calligraphy held in that civilization, the vast number of Chinese characters meant that few distinctive, complete fonts could be afforded by Chinese printers. For many centuries, creating type started with cutting punches, which acted as the masters. The material that was cut formed a prototype of the character from which type was cast by various means from an alloy usually containing lead. Type design accounted for the limitations of the printing process, such as the splashing properties of ink or the wear on the type itself. In many countries, though not the United States of America, type design could be copyrighted typeface by typeface. The USA offered and continues to offer design patents as an option for typeface design protection.
        
        For the American Type Founders Corporation, and a few others using their technology, each character was drawn in a very large size, over a foot (30 cm) high. The outline was then traced by a Benton pantograph-based engraving machine with a pointer at the hand-held vertex and a cutting tool at the opposite vertex down to a size usually less than a quarter-inch (6 mm). The pantographic engraver was first used to cut punches, and later to directly create matrices.
        
        With the coming of computers, especially those on artists' desktops, type design eventually became a subdivision of computer graphics, employing a drafting program of some sort. Today, visual animators can create complex movies using just fonts. This style is called kinetic typography. Each character design can be traced by a stylus on a digitizing board, or modified from a scanned drawing of somewhat smaller size than that once used for the pantograph, or composed entirely within the computer graphics program itself. Each character is then made into a digitized form to be reconstructed within the graphics display program of a display screen or printer. Copyright was extended to this form. Although a given digitization of a typeface can all too easily be modified by another type designer, such a modified font is usually considered a derivative work, and is covered by the copyright of the original font software.
        
        \noindent History of \textit{`Type design'}, from \textit{Wikipedia, the free encyclopedia}. Available at \url{http://en.wikipedia.org/wiki/Type_design#History}.
    \end{multicols}
\end{document}

Maybe I worked over than necessary, any comment is welcome.

Update

Because Marc changed the calendar for 2015, Speravir asked me a solution for this year. Can be downloaded here.

enter image description here

This can be obtained replacing the code for the number 4 with (at first scope):

%Number 5
\path[name intersections={of=vline7 and hline1,by=i51}];
\path[name intersections={of=vline7 and hline5,by=i52}];
\path[name intersections={of=vline8 and hline1,by=i53}];
\path[name intersections={of=vline8 and hline5,by=i54}];
\path[name intersections={of=vline7 and hline3,by=i55}];
\path[name intersections={of=vline8 and hline3,by=i56}];
\path[name intersections={of=auxvline4 and hline2,by=c15}];
\draw[name path=circle15] (c15) circle (\nwidth/2);
\draw[name path=circle25] (c15) circle (\nwidth/2-\nthick);
\coordinate (c25) at ($(c15)+(0,2*\nthick)$);
\draw[name path=auxhline1,dashed] ($(c25)-(1,0)$) -- ($(c25)+(1,0)$);
\draw[name path=circle35,dashed] (c25) circle (\nwidth/2);
\draw[name path=circle45,dashed] (c25) circle (\nwidth/2-\nthick);
\draw[name path=line51] ($(i51)+(\nthick,0)$) -- ($(i52)+(\nthick,0)$);
\draw[name path=line52] ($(i53)-(\nthick,0)$) -- ($(i54)-(\nthick,0)$);
\draw[name path=line53] ($(i52)-(0,\nthick)$) -- ($(i54)-(0,\nthick)$);
\draw[name path=line54] ($(i55)+(0,2*\nthick)$) -- ($(i56)+(0,2*\nthick)$);
\draw[name path=line55] ($(i55)+(0,\nthick)$) -- ($(i56)+(0,\nthick)$);
\path[name intersections={of=auxvline4 and line54,by=i57}];
\path[name intersections={of=vline8 and hline2,by=i58}];
\path[name intersections={of=line51 and hline2,by=i59}];
\path[name intersections={of=auxhline1 and line52,by=i510}];

and this (at second scope):

%Number 5
\fill (i54) -- ($(i54)-(0,\nthick)$) -- ($(i52)+(\nthick,-\nthick)$) -- ($(i55)+(\nthick,2*\nthick)$) -- (i57) arc (90:0:\nwidth/2) -- (i58) arc(0:-180:\nwidth/2) -- (i59) arc (-180:0:\nwidth/2-\nthick) -- (i510) arc(0:90:\nwidth/2-\nthick) -- ($(i55)+(0,\nthick)$) -- (i52) -- cycle;
6
  • Thanks. Looks nice. Would you mind providing a hyperlink to a pdf version please?
    – user10274
    Commented Dec 20, 2013 at 12:02
  • 1
    @MarcvanDongen Yeah, sure! Here's again: docs.google.com/file/d/0BxFKCIz7VScITjZXb29FbHdLX3M/edit
    – osjerick
    Commented Dec 24, 2013 at 22:28
  • Marc changed his plan and wants to produce the calendar for 2015, now. Is a version for this year possible, as well? (But do not delete the original version, please!)
    – Speravir
    Commented Dec 27, 2013 at 21:39
  • @Speravir Yes, no problem.
    – osjerick
    Commented Dec 28, 2013 at 18:18
  • @Speravir Done! Greetings. :)
    – osjerick
    Commented Jan 20, 2014 at 18:11
67
+2000

Here's a demonstration of TeX's hyphenation and justification algorithm. Apart from changing a few \sfcodes and using character protrusion with microtype, this is TeX's default output with no manual line breaks or hyphenation points.

Preview of The Crystal Goblet

% save this document as example.tex
% compile this document with: xelatex -shell-escape example.tex
\documentclass{article}

% Needed to make sure your page dimensions
% are the same as that of the calendar.
\usepackage[landscape,a4paper,hmargin=9pc,vmargin=8pc]{geometry}

\usepackage{calc}
\usepackage{multicol}
\columnsep=15pt
\multicolsep=15pt
\usepackage{fontspec}
\setmainfont[Mapping=tex-text,RawFeature={+onum,+pnum}]{Garamond Premier Pro Medium}
\def\normalsize{\fontsize{10}{15}\selectfont}
\usepackage{soul}
\sfcode`;=3000
\sfcode`?=3000
\sfcode`:=3000
\parskip=0pt
\usepackage{graphicx}
\usepackage{xltxtra}
\usepackage{microtype}

\pagestyle{empty}

\begin{document}
{\fontsize{24}{30}\selectfont\centering\so{THE CRYSTAL GOBLET}\par}
\vspace{\baselineskip}
{\centering\emph{by} \so{BEATRICE WARDE}\par}
\begin{multicols}{3}\noindent
Imagine that you have before you a flagon of wine.  You may choose
your own favourite vintage for this imaginary demonstration, so that
it be a deep shimmering crimson in colour.  You have two goblets
before you.  One is of solid gold, wrought in the most exquisite
patterns.  The other is of crystal-clear glass, thin as a bubble, and
as transparent.  Pour and drink; and according to your choice of
goblet, I shall know whether or not you are a connoisseur of wine.

For if you have no feelings about wine one way or the other, you will
want the sensation of drinking the stuff out of a vessel that may have
cost thousands of pounds; but if you are a member of that vanishing
tribe, the amateurs of fine vintages, you will choose the crystal,
because everything about it is calculated to reveal rather than to
hide the beautiful thing which it was meant to contain.

Bear with me in this long-winded and fragrant metaphor; for you will
find that almost all the virtues of the perfect wine-glass have a
parallel in typography.  There is the long, thin stem that obviates
fingerprints on the bowl.  Why? Because no cloud must come between
your eyes and the fiery hearth of the liquid.  Are not the margins on
book pages similarly meant to obviate the necessity of fingering the
type-pages? Again: The glass is colourless or at the most only faintly
tinged in the bowl, because the connoisseur judges wine partly by its
colour and is impatient of anything that alters it.

There are a thousand mannerisms in typography that are as impudent and
arbitrary as putting port in tumblers of red or green glass! When a
goblet has a base that looks too small for security, it does not
matter how cleverly it is weighted; you feel nervous lest it should
tip over.  There are ways of setting lines of type which may work well
enough, and yet keep the reader subconsciously worried by the fear of
`doubling' lines, reading three words as one, and so forth.

Printing demands a humility of mind, for the lack of which many of the
fine arts are even now floundering in self-conscious and maudlin
experiments.  There is nothing simple or dull in achieving the
transparent page.  Vulgar ostentation is twice as easy as discipline.
When you realise that ugly typography never effaces itself, you will
be able to capture beauty as the wise men capture happiness by aiming
at something else.

The `stunt typographer' learns the fickleness of rich men who hate to
read.  Not for them are long breaths held over serif and kern, they
will not appreciate your splitting of hair-spaces.  Nobody (save the
other craftsmen) will appreciate half your skill.  But you may spend
endless years of happy experiment in devising that crystalline goblet
which is worthy to hold the vintage of the human
mind.%\hfill\reflectbox{\XeTeXglyph352}
\end{multicols}
\begin{multicols}{4}\noindent\fontsize{8}{15}\selectfont
\textsc{Beatrice Warde} (1900--1969) was an American-English
communicator of typography.  Her essay, `The Crystal Goblet',
first delivered as a speech, `Printing Should Be Invisible', to
the British Typographers' Guild, in 1930, is one of her most
famous works.  It was published as a pamphlet in 1932 and again in
1937, and in 1955 appeared in a book entitled \emph{The Crystal
Goblet:\ Sixteen Essays on Typography}.  The abbreviated text
reproduced above was taken from \emph{Typography Online}
(nenne.com/typography).  It is set here by \XeLaTeX\ in ten point
Garamond Premier Pro, which was designed by \textsc{Robert
Slimbach} (1956--\hspace*{0.5em}) in imitation of the types of
\textsc{Claude Garamond} (\emph{ca.}\,1490--1561).
\end{multicols}
\end{document}

The text is Beatrice Warde's The Crystal Goblet, an essay that praises simplicity in typography; the precise text is an abbreviated version that appears here. The typeface, a Garamond, is considered by some to be the closest thing we have to such a crystal goblet.

The source code and output are available here. Also available is a version with manual kerning at the top of the third column of the main text.

6
  • Is there a missing blank space after "fear of" at the top line of the third column?
    – jonalv
    Commented Dec 11, 2013 at 15:33
  • @jonalv I did notice this when I was compiling: the space is not missing, but it looks like it is, because: 1) that line is set quite tightly; 2) the ascender on the 'f' hangs over the space; and 3) the open quote does the same.
    – ChrisS
    Commented Dec 11, 2013 at 22:04
  • @ChrisS Isn't this a kerning problem? At least I will add some manual space to improve readability.
    – TeXtnik
    Commented Dec 13, 2013 at 11:34
  • @ChrisS Otherwise looks very nice.
    – TeXtnik
    Commented Dec 13, 2013 at 11:34
  • Congratulations. You've won a copy of the book. If you forward me your snail mail address, I'll send you a copy. Do you want me to sign it?
    – user10274
    Commented Dec 20, 2013 at 13:04
61
+500

For February, there are many possibilities at Can we make a love heart with LaTeX? Here’s my heart with one of the few poems I could stand seeing every day for a month:

% Compile with lualatex
\documentclass[svgnames,12pt]{article}
\usepackage{fontspec,microtype,shapepar,xcolor}
\setmainfont[Contextuals=Alternate,Ligatures={Historic,Rare},ItalicFeatures={Ligatures=Contextual,Style=Swash}]{EB Garamond}
\usepackage[landscape,a4paper,hmargin=1.3in,vmargin=.65in]{geometry}
\pagestyle{empty}
\begin{document}
\color{Crimson}
\Large
\heartpar{\itshape
Only name the day, and we’ll fly away
  In the face of old traditions,
To a sheltered spot, by the world forgot,
  Where we’ll park our inhibitions.
Come and gaze in eyes where the lovelight lies
  As it psychoanalyzes,
And when once you glean what your fantasies mean
  Life will hold no more surprises.
When you’ve told your love what you’re thinking of
  Things will be much more informal;
Through a sunlit land we’ll go hand-in-hand,
  Drifting gently back to normal.
%
While the pale moon gleams, we will dream sweet dreams,
  And I’ll win your admiration,
For it’s only fair to admit I’m there
  With a mean interpretation.
In the sunrise glow we will whisper low
  Of the scenes our dreams have painted,
And when you’re advised what they symbolized
  We’ll begin to feel acquainted.
So we’ll gaily float in a slumber boat
  Where subconscious waves dash wildly;
In the stars’ soft light, we will say good-night—
  And “good-night!” will put it mildly.
%
Our desires shall be from repressions free—
  As it’s only right to treat them.
To your ego’s whims I will sing sweet hymns,
  And ad libido repeat them.
With your hand in mine, idly we’ll recline
  Amid bowers of neuroses,
While the sun seeks rest in the great red west
  We will sit and match psychoses.
So come dwell a while on that distant isle
  In the brilliant tropic weather;
Where a Freud in need is a Freud indeed,
  We’ll always be Jung together.}

\vspace{-8pt}
\footnotesize\noindent Dorothy Parker\hfill\itshape The Passionate Freudian to His Love
\end{document}

enter image description here

The PDF output is here.

0
57
+500

Last summer I taught a cryptography course. Next summer I will again, but I'll use PythonTex! The example below shows off PythonTex, TeX, and a little bit of tikz.

Good for March?

% save this document as example.tex
% compile this document with: pdflatex -shell-escape example.tex
\documentclass[11pt]{article}

\usepackage{tikz}
\usepackage{pythontex}

%Needed to make sure your page dimensions are the same as that of the calendar.
\usepackage[landscape,a4paper]{geometry}
%For plainciphertextweave
\usepackage{setspace,xcolor}% http://ctan.org/pkg/{setspace,xcolor}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%       Cryptography       %%%%%%%%%%%%%%  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\makeatletter
% \plainciphertextweave[<num chars>]{<plain text>}{<cipher text>}
\newcommand{\plainciphertextweave}[4][10]{%
  \settowidth{\dimen0}{\ttfamily A}%
  \settoheight{\dimen1}{\ttfamily\strut}%
  \setlength{\dimen0}{\dimexpr#1\dimen0}%
  \leavevmode\rlap{\parbox[t]{\the\dimen0}{\setstretch{2}\scan{#3}\scan{#2}\ttfamily\strut\\[\dimexpr-1.7\baselineskip+\dimen1]\color{black!75}\@tempa\strut}}% Plain text
  \parbox[t]{\the\dimen0}{\setstretch{2}\scan{#3}\ttfamily\strut\\[\dimexpr-1.2\baselineskip+\dimen1]\@tempa\strut}% Cipher text
}

% \stacktext[<num chars>]{<text>}
\newcommand{\stacktext}[2][10]{%
  \settowidth{\dimen0}{\ttfamily A}%
  \setlength{\dimen0}{\dimexpr#1\dimen0}%
  \parbox[t]{\the\dimen0}{\scan{#2}\ttfamily\strut\@tempa\strut}%
}
%\def\scanfunction#1{#1}
\def\scan@letters#1#2{%
  \g@addto@macro{\@tempa}{#1\hskip 0pt}%
  \ifx#2\@empty\else 
    \expandafter\scan@letters
  \fi
  #2}
\def\scan#1{\let\@tempa\@empty\scan@letters #1\@empty}
\makeatother

\newcommand{\ptext}{}
\newcommand{\ctext}{}

\newcommand{\pcweave}[3][50]{
\renewcommand{\ptext}{#2}
\renewcommand{\ctext}{#3}
\plainciphertextweave[#1]{\ptext{}}{\ctext{}}
}

\pagestyle{empty}

\begin{document}
\frenchspacing
\large

\begin{pycode}
alphabet = "abcdefghijklmnopqrstuvwxyz"
def caesar_shift(ptext):
    shift = 3
    ctext = ""
    for pchar in ptext:
        if pchar not in alphabet:
            cchar = pchar
        else:
            pnum = alphabet.index(pchar)
            cnum = (pnum + shift) % len(alphabet)
            cchar = alphabet[cnum]
        ctext = ctext + cchar
    return print(ctext.upper())
\end{pycode}

\begin{pycode}
description = "If he had anything confidential to say, he wrote it in cipher, that is, by so changing the order of the letters of the alphabet, that not a word could be made out. If anyone wishes to decipher these, and get at their meaning, he must substitute the fourth letter of the alphabet, namely D, for A, and so with the others. \ ---Suetonius, Life of Julius Caesar 56"
description = description.lower()
\end{pycode}

    \begin{center}
    \section*{Caesar Shift}
    \pcweave[75]{\pyc{print(description)}}{\pyc{caesar_shift(description)}}

    \end{center}

    \vspace{0.33in}

    \begin{minipage}[t]{0.5\linewidth}
    \begin{pyconsole}
    alphabet = "abcdefghijklmnopqrstuvwxyz"
    def caesar_shift(ptext):
        shift = 3
        ctext = ""
        for pchar in ptext:
            if pchar not in alphabet:
                cchar = pchar
            else:
                pnum = alphabet.index(pchar)
                cnum = (pnum + shift) % len(alphabet)
                cchar = alphabet[cnum]
            ctext = ctext + cchar
        print(ctext.upper())

    caesar_shift("hello, caesar")
    \end{pyconsole}
    \end{minipage}
    \begin{minipage}[t]{0.5\linewidth}
    \vspace{12pt} 
    \begin{center}
    \begin{tikzpicture}
    \pgfmathsetmacro{\Ra}{2};
    \pgfmathsetmacro{\Rb}{2.66};
    \pgfmathsetmacro{\angle}{360/26};
    \fill[fill=black!20] (0,0) circle (1.15*\Rb cm);
    \fill[fill=black!0] (0,0) circle (1.15*\Ra cm);
    \foreach \K/\char in {0/a,1/b,2/c,3/d,4/e,5/f,6/g,7/h,8/i,9/j,10/k,11/l,12/m,13/n,14/o,15/p,16/q,17/r,18/s,19/t,20/u,21/v,22/w,23/x,24/y,25/z}
        \node[rotate=-\K*\angle] at (90-\K*\angle:\Ra) {\tt \char};
    \foreach \K/\char in {0/D,1/E,2/F,3/G,4/H,5/I,6/J,7/K,8/L,9/M,10/N,11/O,12/P,13/Q,14/R,15/S,16/T,17/U,18/V,19/W,20/X,21/Y,22/Z,23/A,24/B,25/C}
        \node[rotate=-\K*\angle] at (90-\K*\angle:\Rb) {\tt \char};
    \end{tikzpicture}
    \end{center}
    \end{minipage}

    \end{document}

enter image description here

Here's the pdf output

3
  • Thanks. Would you mind including a hyperlink to the output pdf document please?
    – user10274
    Commented Dec 22, 2013 at 10:21
  • 3
    I like that! Shameless plug: you might be interested in my Enigma package for Luatex: ctan.org/pkg/enigma Commented Dec 28, 2013 at 17:02
  • I'd give a second up if I could. Looks super nice!
    – Teck-freak
    Commented Sep 7, 2018 at 19:44
46

The following solution is from Peter Wilson, who couldn't post this himself. A pdf of Peter's contribution may be found here.

As I don't want to get reputation for his work, I promise I'll translate all reputation credited to bounties.

% calconc.tex  A Concrete poem typeset in Palatino by Peter Wilson
\documentclass[a5paper]{memoir}
\usepackage{fixltx2e}
\usepackage{comment}
\usepackage{mempalatino} 
\usepackage{graphicx}

%%%%%%%%%%% set text layout
\setlrmarginsandblock{1.25in}{*}{*}
\setlrmarginsandblock{1.0in}{*}{*}
\setulmarginsandblock{1.5in}{1.4in}{*}
\checkandfixthelayout

%%%%%%%%%%%%%%%%end of preamble%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\pagestyle{empty}

\OnehalfSpacing % more attractive spacing for this case
\newlength{\lline} % length of longest line
\newlength{\dline} % vertical shift for left lines
\newlength{\uline} % vertical shift for top lines
\newlength{\uinset} % unit of left shift for top lines

\settowidth{\lline}{With wood and weathered stone }
\setlength{\dline}{0.5\lline}
\setlength{\uline}{0.57\lline}
\setlength{\uinset}{1.5em}
\newcommand{\frot}{42} % rotation angle for front lines
\newlength{\fline} % vertical shift for front lines
\setlength{\fline}{1.25\dline}
\setlength{\fline}{1.23\dline} \renewcommand{\frot}{38} % almost there
\setlength{\fline}{1.11\dline} \renewcommand{\frot}{35} %

\newsavebox{\topleft} \newsavebox{\front} % boxes to save poem parts

\savebox{\topleft}{
\begin{minipage}{4in}
\hspace*{8\uinset}\rotatebox{-30}{\parbox{\lline}{What is a Concrete poem?\linebreak}} \\[-\uline]
\hspace*{7\uinset}\rotatebox{-30}{\parbox{\lline}{It doesn't sound quite right,\linebreak}} \\[-\uline]
\hspace*{6\uinset}\rotatebox{-30}{\parbox{\lline}{For concrete's rather heavy\linebreak}} \\[-\uline]
\hspace*{5\uinset}\rotatebox{-30}{\parbox{\lline}{And words are rather light.\linebreak}} \\[-\uline]
\hspace*{4\uinset}\rotatebox{-30}{\parbox{\lline}{Let's say you write a poem ---\linebreak}} \\[-0.95\uline]
\hspace*{3\uinset}\rotatebox{-30}{\parbox{\lline}{\hspace*{-0.6em}{`}Ode to a concrete slab' ---\linebreak}} \\[-1.2\uline]
\hspace*{2\uinset}\rotatebox{-30}{\parbox{\lline}{A subject none too pretty,\linebreak}} \\[-\uline]
\hspace*{1\uinset}\rotatebox{-30}{\parbox{\lline}{Which many would call drab.\linebreak}} \\[-\uline]
\rotatebox{-30}{\parbox{\lline}{Perhaps you could describe it\linebreak}} \\[-\dline]
\rotatebox{-30}{\parbox{\lline}{As full of strength and grace\linebreak}} \\[-\dline]
\rotatebox{-30}{\parbox{\lline}{And muse on what high tower\linebreak}} \\[-\dline]
\rotatebox{-30}{\parbox{\lline}{Might rest upon that base.\linebreak}} \\[-\dline]
\rotatebox{-30}{\parbox{\lline}{You may contrast its texture\linebreak}} \\[-\dline]
\rotatebox{-30}{\parbox{\lline}{With wood and weathered stone\linebreak}} \\[-\dline]
\rotatebox{-30}{\parbox{\lline}{And wonder if it will some day\linebreak}} \\[-\dline]
\rotatebox{-30}{\parbox{\lline}{Be mellowed, creeper grown.\linebreak}}
\end{minipage}
} % end topleft box

\newlength{\flline} % desired length of front lines
\setlength{\flline}{\lline} \addtolength{\flline}{-0.5em}

\savebox{\front}{
\begin{minipage}{3in}
\rotatebox{\frot}{\parbox{\flline}{What if you set the words out\linebreak}} \\[-\fline]
\rotatebox{\frot}{\parbox{\flline}{And shape your poem, too,\linebreak}} \\[-\fline]
\rotatebox{\frot}{\parbox{\flline}{To be the slab's three faces\linebreak}} \\[-\fline]
\rotatebox{\frot}{\parbox{\flline}{With each face seen askew,\linebreak}} \\[-\fline]
\rotatebox{\frot}{\parbox{\flline}{So that the poem's reader\linebreak}} \\[-\fline]
\rotatebox{\frot}{\parbox{\flline}{Can look as well as hear,\linebreak}} \\[-\fline]
\rotatebox{\frot}{\parbox{\flline}{Why then, your final poem\linebreak}} \\[-\fline]
\rotatebox{\frot}{\parbox{\flline}{Is Concrete --- is that clear?\linebreak}} \\[-\fline]
\end{minipage}
} % end front box

\begin{center}
\bfseries \hspace*{1em}The Concrete Poem
\end{center}

\begin{minipage}[b]{\textwidth}
\begin{center}
%%% use picture environment to position the pieces of the poem
\setlength{\unitlength}{1mm}
\begin{picture}(100,110)
%\put(0,0){\framebox(100,110){}}
\put(0,51){\usebox{\topleft}}
\put(52,50){\usebox{\front}}
\end{picture}
\end{center}
\end{minipage}
\par

{\footnotesize Noel Petty in E.O.Parrot (ed), \textit{How to be Well Versed in Poetry,} 1990}


\end{document}

Image of Poem

2
  • 3
    Beautiful work!
    – Yossi Gil
    Commented Aug 19, 2014 at 11:31
  • @Marc van Dongen: Beautiful. I couldn't find any information about \usepackage{mempalatino} ?
    – PatrickT
    Commented Dec 20, 2014 at 13:56
39
+500

This is a wine bottle label originally from Showcase of beautiful wine bottle labels made with LaTeX/TikZ and friends:

% save this document as example.tex
% compile this document with: pdflatex -shell-escape example.tex
\documentclass{article}

% Needed to make sure your page dimensions
% are the same as that of the calendar.
\usepackage[landscape,a4paper]{geometry}

\usepackage{fontspec}
    \setmainfont{Quattrocento}
    \newfontfamily\gilliusfont{Gillius ADF}
\usepackage{tikz}
    \usetikzlibrary{positioning,shapes,calc}

\pagestyle{empty}

\definecolor{coolblack}{rgb}{0.10,0.10,0.10}


\begin{document}
\centering
\begin{tikzpicture}[
    tnode/.style={font=\fontsize{40}{47}\selectfont},
    unode/.style={font=\gilliusfont\footnotesize}
]

\node(cont)[text width=6cm, text height=9cm,left color=coolblack!70,right color=coolblack,shading angle=30]{};

\node (k)[tnode,white,anchor=west,xshift=2em,yshift=2em]at(cont.west){K};
\node (i)[tnode,above=1em of k.east,white,anchor=center,xshift=.3em]{I};
\node (r)[tnode,above=1em of i.east,xshift=.8em,yshift=.4em,white,anchor=center]{R};
\node [tnode,below=.1em of r.south,white,anchor=north,rotate=30]{I};

\node (c1)[circle,fill=white,above=3em of k.north,inner sep=.075em]{};
\node [thick,draw,circle,draw=white,inner sep=.2em] at(c1.center){};
\node [thick,draw,circle,draw=white,inner sep=.4em] at(c1.center){};
\node [thick,draw,circle,draw=white,inner sep=.6em] at(c1.center){};
\node (c5)[circle,inner sep=.7em] at(c1.center){};
\node (c6)[circle,inner sep=1.4em] at(c1.center){};

\foreach \x in {12,24,...,360}
    \node[thin,fill=white,ellipse,minimum width=1em,anchor=west,inner sep=.001em,rotate=\x] at(c5.\x){};

\foreach \y in {6,18,...,366}
    \node at(c6.\y)[inner sep=.1mm,circle,fill=white]{};

\node(t1)[unode,below=6em of k.west,white,anchor=west]{C~A~N~N~O~N~A~U};
\node(t2)[unode,below=1.5em of t1.west,white,anchor=west]{D~I~~~S~A~R~D~E~G~N~A};
\node(t3)[unode,below=1.5em of t2.west,white,anchor=west]{D~O~C};

\node [white,anchor=south,font=\gilliusfont\scriptsize]at(cont.south){C~A~N~T~I~N~A\qquad V~E~R~M~E~N~T~I~N~O\qquad M~O~N~T~I};
\node [anchor=south east]at($(cont.south east)+(-1.2,.4)$){\includegraphics[scale=.075]{ctan_lion}};
\end{tikzpicture}
\end{document}

enter image description here

a4-landscape pdf

standalone pdf

38

Birthday card

About a month ago it was my boyfriend's 22nd birthday. I bought him the absolutely cutest stuffed bear evur and made a childish birthday card with gimp/inkscape. I know it's not a masterpiece, but he liked it anyway, so please don't be mean. I decided to replicate it with lualatex for this challenge. No real reason for lualatex over xelatex, but some parts of this are easier to program in lua than they are in tex.

To compile it you must:

  • have futura, zapfino and scriptina fonts installed in your system
  • download the cats
  • run lualatex twice and wait, it's rather complex and it will take quite some time

It's not an exact replica. Here's why:

  • first of all, my card was in italian and this one is in english
  • the actual card wasn't completely vector: e.g. I created that hearts "flow" with a brush in gimp, and to do it I rasterized my vectors for a5 paper at 300dpi
  • I changed the font from segoe ui to futura and fitted it better to the canvas
  • I always wanted to edit it and put those "ILOVEYOU" behind everything
  • I could have exported my vectors to tikz from inkscape, that would have been faster but where's the fun? I decided to do it all by hand (thus lots of positions are slightly changed)
  • the hearts flow is randomly generated, similarly to what I did with gimp but of course, it's random so it's never the same
  • in the actual card I used vector hearts from internet (don't tell my bf about this)

However, I think it's close enough. I'm totally not a pro at tikz, and the result is beyond my expectations. I may even have learned something new from doing this.

This is the code:

\documentclass[a4paper,landscape,12pt]{article}
\usepackage[margin=0cm]{geometry}
\usepackage{fontspec}
\setmainfont[Scale=2.973]{Futura LT Book}
\usepackage{tikz}
\usetikzlibrary{fadings}
\usepackage{ifthen}
\definecolor{BgColor}{RGB}{236,195,203}
\definecolor{TextColor}{RGB}{236,123,165}
\definecolor{TextOutlineColor}{RGB}{236,69,140}
\definecolor{FirstPurple}{RGB}{225,87,183}
\definecolor{SecondPurple}{RGB}{225,157,218}
\definecolor{ThirdPurple}{RGB}{217,130,180}
\definecolor{BigHeartColor}{RGB}{255,0,152}
\definecolor{SmallerHeartColor}{RGB}{255,0,255}
\definecolor{SmallestHeartColor}{RGB}{255,0,102}
\definecolor{LastILOVEYOUColor}{RGB}{236,0,88}
\definecolor{LastILOVEYOUOutlineColor}{RGB}{145,42,86}
\definecolor{GoldenStrip}{RGB}{251,255,120}
\usepackage{luacode}
\newfontfamily\Zapfino[Scale=3]{LTZapfino One}
\newfontfamily\Scriptina[Scale=3]{Scriptina}
\newcommand{\FillWithLove}{\luaexec{for i=1,100 do tex.print('ILOVEYOU') end}}
\usepackage[outline]{contour}

\tikzfading [name=radialfade, inner color=transparent!0, outer color=transparent!100]

\newcommand\heart[5]{%geogebra rocks
\begin{scope}[shift={#1},rotate={#2},xscale={#3},yscale={#3},opacity={#4}]
\draw[draw=none,fill=#5](0,-3.12) -- (2.06,-1.06) to[out=45,in=-45]
(2.06,1.06)to[out=135,in=45](0,1.12)to[out=135,in=45](-2.06,1.06)to[out=225,in=135]
(-2.06,-1.06)--cycle;
\end{scope}
}
\newcommand\bubble[4]{
\begin{scope}[shift={#1},xscale={#2},yscale={#2},opacity={#3}]
\fill [#4,path fading=radialfade] circle (1);
\end{scope}
}

\begin{document}
\luadirect{
math.randomseed(os.time());
function SomewhereCloseTo(x,y,width)
  return x+(math.random(100)-50)*width,y+(math.random(100)-50)*width;
end
function HeartsOnPath(x1,y1,x2,y2,width,quantity)
  for i=1,quantity do
    x,y=SomewhereCloseTo(x1+i*(x2-x1)/100,y1+i*(y2-y1)/100,width);
    scale=math.random(50,100)/400;
    tex.print('\string\\definecolor{CurrentColor}{RGB}{'
    ..tostring(math.random(256)-1)..','
    ..tostring(math.random(256)-1)..','
    ..tostring(math.random(256)-1)..'}')
    tex.print('\string\\heart{('..tostring(x)..','..tostring(y)..')}{'
    ..tostring(math.random(360))..'}{'..tostring(scale)..'}{'
    ..tostring(math.random(70)/100+0.3)..'}{CurrentColor!80!pink}');
  end
end
function LightsOnPath(x1,y1,x2,y2,width,quantity)
  for i=1,quantity do
    x,y=SomewhereCloseTo(x1+i*(x2-x1)/100,y1+i*(y2-y1)/100,width);
    scale=math.random(50,100)/400;
    tex.print('\string\\bubble{('..tostring(x)..','..tostring(y)..')}{'
    ..tostring(scale)..'}{'..tostring(math.random(70)/100+0.3)..
    '}{yellow!'..tostring(math.random(20,100)-20)..'!white}');
  end
end
}
\pagecolor{BgColor}
\topskip0pt
\color{TextColor}
\fontdimen2\font=0pt
\noindent\begin{minipage}{\textwidth}{\FillWithLove}\end{minipage}
\begin{tikzpicture}[remember picture,overlay,shift={(current page.center)}]
%\draw[step=1cm,gray] (-15,-11) grid (15,11);%grid for testing purposes
%heartsflow, 0.3 minimum opacity
\luadirect{
HeartsOnPath(-15,-5,-10,-4.5,0.07,100);
HeartsOnPath(-10,-4.5,0,-3.5,0.07,100);
HeartsOnPath(0,-3.5,2,-5,0.07,50);
HeartsOnPath(2,-5,5,-3,0.07,70);
HeartsOnPath(5,-3,8,0,0.1,70);
HeartsOnPath(8,0,11,3.5,0.1,70);
HeartsOnPath(11,3.5,10,7,0.1,70);
HeartsOnPath(10,7,13,10,0.07,70);
HeartsOnPath(-9,-1.5,-8,4,0.1,70);
HeartsOnPath(-8,4,0,5,0.1,50);
HeartsOnPath(0,3,10,8,0.1,50);
}
%stripes
\draw [draw=none,fill=ThirdPurple]
(-15,-6) to[out=20,in=170] (-5,-5) to[out=350,in=330] (3,-1)
to[out=150,in=210] (2,2)
to[out=30,in=180] (15,11) -- (15,9)
to[out=180,in=30] (3,1)
to[out=210,in=150] (4,-1)
to[out=330,in=350] (-5,-6.2)
to[out=170,in=20] (-15,-7) -- cycle;
\draw [draw=none,fill=SecondPurple]
(-15,-4) to[out=20,in=170] (-5,-4)
to[out=350,in=330] (3,0)
to[out=150,in=210] (2,3)
to[out=30,in=180] (15,12) -- (15,10)
to[out=180,in=30] (3,2)
to[out=210,in=150] (4,0)
to[out=330,in=350] (-5,-5)
to[out=170,in=20] (-15,-6) -- cycle;
\draw [draw=none,fill=FirstPurple]
(-15,-4) to[out=20,in=170] (-5,-3) to[out=350,in=330] (3,1) to[out=150,in=210] (2,4)
to[out=30,in=180] (13,11) -- (14,11) to[out=180,in=30] (3,3) to[out=210,in=150] (4,1)
to[out=330,in=350] (-5,-4) to[out=170,in=20] (-15,-5.3) -- cycle;
%bigger hearts
\heart{(5.5,1.5)}{0}{2.4}{1}{BigHeartColor}
\heart{(-1.5,2)}{20}{1}{1}{SmallerHeartColor}
\heart{(9.5,4)}{-20}{0.8}{1}{SmallestHeartColor}
%light strip
\draw[draw=none,fill=GoldenStrip,path fading=radialfade,opacity=0.7]
(-16,7) to[out=-10,in=170]
(1,0) to[out=-10,in=200]
(9,1) to[out=20,in=-20]
(6,3) to[out=160,in=-80]
(2,8) to[out=100,in=100]
(3,9) to[out=-80,in=100]
(4,6) to[out=-80,in=-90]
(17,-4) --
(17,-3.7) to[out=-90,in=-80]
(4,6.3) to[out=100,in=-80]
(3,9.3) to[out=100,in=100]
(2,8.3) to[out=-80,in=160]
(6,3.3) to[out=-20,in=20]
(9,1.3) to[out=200,in=-10]
(1,0.3) to[out=170,in=-10]
(-16,7.3) -- cycle;
%cats
\node [xshift=5.5cm] {\includegraphics{kittenz.pdf}};
%Mau
\color{white}\Scriptina
\begin{scope}[shift={(1,0.8)}]
\contourlength{0.01em}
\node [xscale=6,yscale=6] at (-9,-0.5) {\contour{TextOutlineColor}{M}};
\contourlength{0.02em}
\node [xscale=3,yscale=3] at (-4,-2.55) {\contour{TextOutlineColor}{a}};
\node [xscale=3,yscale=3] at (-1.7,-2.5) {\contour{TextOutlineColor}{u}};
%restore Ma 'ligature'
\draw [draw=none,fill=white,rotate around={55:(-4.75,-2.77)},shift={(-4.83,-2.79)}]
(0,0) rectangle (0.2,0.08);
\end{scope}
%Happy Birthday
\Zapfino
\contourlength{0.02em}
\node [xscale=3,yscale=3] at (-3,4.5) {\contour{TextOutlineColor}{Happy Birthday}};
\color{LastILOVEYOUColor}\rmfamily
\node at (0,-2.64) {\contour{LastILOVEYOUOutlineColor}{ILOVEYOU}};
%light bubbles, 20% more white, 0.3 minimum opacity
\luadirect{
LightsOnPath(-15,5,15,-5,0.07,200);
}
\end{tikzpicture}
\end{document}

Aaaaaaaaaaaand this is the result: result

Yes, it's pink. I like pink.

Here's the pdf.

Top reasons you should upvote this entry

  • pink
  • hearts
  • cats
  • love
  • extras (see below)

Top reasons you should downvote this entry

  • you're evil
  • multiple grammarr errors in this very post

Free extras!

  • the actual card I made for him
  • the kittenz, aka the only part I was too lazy to fully redraw in tikz: pdf svg
  • totally unrelated: some toy shops have DIY stuffed bear kits... well it's more like a Customize-it-yourself since they will stuff it with a machine. You can choose the color, the t-shirt, the smell, the sound, you can even print images/text on his t-shirt. My gift was soooooooo adorable. Go buy one.
5
  • Very nice card! Could you fix the kittenz pdf link?
    – mvkorpel
    Commented Jul 10, 2014 at 10:29
  • 1
    @mvkorpel Fixed, sorry. I just copy-pasted that link from imgur without realizing they converted my picture to .png when I uploaded it.
    – izabera
    Commented Jul 10, 2014 at 11:44
  • The TeX version needs more sparkles and glitter. Commented Jul 10, 2014 at 11:50
  • Awesome piece of work! Not my style, but definitely well carried out :-)
    – Daniel
    Commented Oct 9, 2014 at 7:51
  • 1
    @izabera This is real love, how lucky boy ;-)
    – Aradnix
    Commented Oct 13, 2014 at 6:50
31

LaTeX has some nice title page designs but we need some tools to produce them. The following is a case study to see what is needed to build title pages from some basic building blocks. I improved the first submission by adding coordinate transformations.

An on line pdf may be found here.

The following is the source code. Compiling it may take a while. The document requires the TikZ library external, so the best thing to do is saving the document as name.tex and compiling it with: pdflatex -shell-escape name.tex

\documentclass{article}

% Based on a titlepage design in the top left picture on Page 159 of
% @BOOK{de:Jong:Type:2,
%   title     = {Type
%                \emph{A Visual History of Typefaces and Graphic Styles
%                \emph{1901\thinspace\textemdash\thinspace1938}}},
%   volume    = {2},
%   editor    = {de Jong, Cees W.},
%   publisher = {Taschen},
%   isbn      = {978-3-8365-1514-6},
% }
% The typeface in the original design is _Eine Neue Groteske, 1911,_
%  by Schriftgie{\ss}erei Ludwig \&~Mayer, Frankfurt am Main.

% Author: M.\,R.\,C. van Dongen

\usepackage[a4paper]{geometry}

% incude tikz and tikz libraries.
\usepackage{tikz}
\usetikzlibrary{shapes}
\usetikzlibrary{intersections}
\usetikzlibrary{calc}
% The following may be omitted---they're only useful if you
% want to create a stand alone version of the title page.
\usetikzlibrary{external}
\tikzexternalize

% distance commands
\newcommand*\Separation{0.05}
\newcommand*\TotalHeight{17.5}
\newcommand*\Rows{14}
\newcommand*\MidRows{10}
\newcommand*\PredMidRows{9}
\newcommand*\SuccMidRows{11}
\newcommand*\Cols{11}
\newcommand*\PredMidCols{5}
\newcommand*\SuccMidCols{7}
\newcommand*\MidCols{6}
\newcommand*\PredCols{10}
\newcommand*\PredRows{13}
% colour commands
\colorlet{FillBackground}{yellow!30}
\colorlet{FillInnerSquare}{orange!50}
\colorlet{DrawOuter}{black!80!blue}
% line width commands
\newcommand*\LineWidth{0.05}

% auxiliary dimensions for positions of ornaments
\newdimen\centrexpos
\newdimen\centreypos
% draw fancy ornamental shape (much simpler than the original shape)
\newcommand*\DrawOrnament[2]{%
    \centrexpos=\TotalHeight cm%
    \divide\centrexpos by \Rows%
    \centreypos=\centrexpos%
    \multiply\centrexpos by #2%
    \multiply\centreypos by #1%
    \foreach \a/\b/\c/\d in {1/0/0/1,-1/0/0/1,1/0/0/-1,-1/0/0/-1} {
          \begin{scope}%
          \pgftransformcm{\a}{\b}{\c}{\d}{\pgfpoint{\centrexpos}{\centreypos}}%
          \DrawOrnamentHelper%
          \end{scope}%
    }%
}

% some style
\tikzset{draw style/.style={line cap=round,line join=round,draw=DrawOuter,line width=\LineWidth cm}}

% helper macro for \DrawOrnament
\newcommand*\DrawOrnamentHelper{%
    \draw[name path=big spiral,draw style]
         let \n{wd}={\TotalHeight/\Rows},
             \n{dx}={\n{wd}},
             \n{dy}={\n{wd}},
             \n{first step}={0},
             \n{last step}={99},
             \n{windings}={2.75},
             \n{angle increment}={360*\n{windings}/(\n{last step}-\n{first step}+1)},
             \n{sep}={0.5*(\Separation+\LineWidth)},
             \n{sepx}={\n{sep}},
             \n{sepy}={\n{sep}},
             \n{rad}={(\n{wd}-2*\n{sep})*\n{windings}/(2*\n{windings}-0.5)},
             \n{voffset}={\n{rad}*(\n{windings}-0.5)/\n{windings}},
             \n{hoffset}={(0.5*\LineWidth)+(\n{rad}*(\n{windings}-0.25)/\n{windings}},
             \n{radx}={\n{rad}},
             \n{rady}={\n{rad}}
         in
            (0,0) + (2*\n{dx},0)      coordinate (outer lr)
                  + (2*\n{dx},\n{dy}) coordinate (outer ur)
                  + (0,\n{dy})        coordinate (outer ul)
                  + (0,0)             coordinate (outer ll)
              (outer lr) + (-\n{sepx},\n{sepy}) coordinate (inner lr)
              (outer ur) + (-\n{sepx},-\n{sepy}) coordinate (inner ur)
              (outer ul) + (0,-\n{sepy})  coordinate (inner ul)
              (outer ll) + (0,\n{sepy})   coordinate (inner ll)
              (inner ll) + (\n{hoffset},\n{voffset}) coordinate (fst centre)
              ($(inner lr)!0.2!(inner ll)$) coordinate (start)
              ($(inner ur)!0.35!(inner ul)$) coordinate (end)
              (start) -- (inner lr) -- (inner ur) -- (end)
              \foreach \num in {\n{first step},...,\n{last step}} {
                  let \n{rd0}={(\n{rad}*\num)/\n{last step}},
                      \n{rd2}={(\n{rad}*(\num+1))/\n{last step}},
                      \n{a0}={\num*\n{angle increment}},
                      \n{a1}={\n{a0}-0.01},
                      \n{a3}={(\num+1)*\n{angle increment}},
                      \n{a2}={\n{a3}+0.01}
                  in ($(fst centre)+(-\n{a0}:\n{rd0})$) coordinate(\num@0)
                     ($(fst centre)+(-\n{a1}:\n{rd0})$) coordinate(\num@1)
                     ($(fst centre)+(-\n{a2}:\n{rd2})$) coordinate(\num@2)
                     ($(fst centre)+(-\n{a3}:\n{rd2})$) coordinate(\num@3)
                     (\num@0) .. controls (\num@1) and (\num@2) .. (\num@3)
              }
              (\n{last step}@3) coordinate (p1)
              (p1) + (1.2*\n{radx},0) coordinate (p2)
              (start) + (-0.65*\n{radx},1.3*\n{rady}) coordinate (p3)
              (p1) .. controls (p2) and (p3) .. (start)
              ($(end)+(-\n{dx},-\n{dy})$) coordinate (aux) ;
    \draw[name path=small spiral,draw style]
         ($(inner ll)!0.675!(inner lr)$) coordinate (temp1)
         ($(inner lr)!0.115!(inner ur)$) coordinate (temp2)
         (temp1 |- temp2) coordinate (snd centre)
              \foreach \num in {8,...,45} {
                  let \n{rad}={0.75*(\Separation+\LineWidth)},
                      \n{rd0}={(\n{rad}*\num)/20},
                      \n{rd2}={(\n{rad}*(\num+1))/20},
                      \n{a0}={\num*10},
                      \n{a1}={\n{a0}-0.01},
                      \n{a3}={(\num+1)*10},
                      \n{a2}={\n{a3}+0.01}
                  in  ($(snd centre)+(\n{a0}:\n{rd0})$) coordinate(\num@0)
                     ($(snd centre)+(\n{a1}:\n{rd0})$) coordinate(\num@1)
                     ($(snd centre)+(\n{a2}:\n{rd2})$) coordinate(\num@2)
                     ($(snd centre)+(\n{a3}:\n{rd2})$) coordinate(\num@3)
                     (\num@0) .. controls (\num@1) and (\num@2) .. (\num@3)
              };
    \draw[draw style]
         let \n{dx}={\TotalHeight/\Rows} in
             (fst centre |- inner ll) coordinate (join point)
             (45@3) .. controls ($(45@3)+(-0.40*\n{dx},0)$) and ($(join point)+(0.30*\n{dx},0)$) .. (join point);
    \path[name path=first]
         (p1) .. controls (p2) and (p3) .. (start);
    \path[name path=second]
         (end) -- (aux);
    \draw[draw style,name intersections={of=first and second, by=inter}]
         (end) -- (inter);
    \foreach \pos/\offy in {inner ul/-0.20,inner ll/0.20} {
        \path[name path=third]
             let \n{dx}={\TotalHeight/\Rows} in
             (\pos) -- +(0.20*\n{dx},\offy*\n{dx});
        \draw[draw style,name intersections={of=big spiral and third, by=inter}]
              (\pos) -- (inter);
    }
}

% draw and fill a square
\newcommand*\FillDrawSquare[3]{%
    \draw[line cap=round,line join=round,draw=DrawOuter,line width=\LineWidth cm]
         let \n{width}={\TotalHeight/\Rows},
             \n{outerxpos}={#2*\n{width}},
             \n{outerypos}={#1*\n{width}},
             \n{outerdrawxpos}={\n{outerxpos}+(0.5*(\Separation+\LineWidth))},
             \n{outerdrawypos}={\n{outerypos}+(0.5*(\Separation+\LineWidth))},
             \n{outerwidth}={\n{width}-(\Separation+\LineWidth)}
          in (\n{outerdrawxpos},\n{outerdrawypos})
                 rectangle + (\n{outerwidth},\n{outerwidth})
    ;
    \path[line cap=round,line join=round,#3,fill=FillInnerSquare,line width=\LineWidth cm]
         let \n{width}={\TotalHeight/\Rows},
             \n{outerxpos}={#2*\n{width}},
             \n{outerypos}={#1*\n{width}},
             \n{outerdrawxpos}={\n{outerxpos}+(1.5*(\Separation+\LineWidth))},
             \n{outerdrawypos}={\n{outerypos}+(1.5*(\Separation+\LineWidth))},
             \n{outerwidth}={\n{width}-(3*(\Separation+\LineWidth))}
          in (\n{outerdrawxpos},\n{outerdrawypos})
                 rectangle + (\n{outerwidth},\n{outerwidth})
    ;
}

% draw a square
\newcommand*\DrawSquare[2]{%
    \FillDrawSquare{#1}{#2}{}%
}

% draw a compound square
\newcommand*\DrawCompoundSquare[2]{%
    \FillDrawSquare{#1}{#2}{,draw=DrawOuter}%
}

% draw the title
\newcommand*\DrawTitle[0]{%
    \draw
          let \n{width}={\TotalHeight/\Rows},
              \n{xpos}={(\MidCols+0.5)*\n{width}},
              \n{ypos}={((0.5*(1+\MidRows+\Rows))*\n{width}},
              \p{pos}=(\n{xpos},\n{ypos}) in
          (\p{pos}) node[scale=1.5,shape=rectangle split,rectangle split parts=2]
              {\bfseries\Huge \LaTeX\ is Fun\nodepart{two}\bfseries\LARGE \emph{Innit?}}
    ;
}

\begin{document}
% Here we go.
\begin{tikzpicture}[outer sep=0pt]
    \fill[FillBackground]
         let \n{width}={\TotalHeight/\Rows},
             \p{offset}=(1.5*\n{width},1.5*\n{width})
         in (0.5*\n{width},0.5*\n{width}) rectangle
            ($(\p{offset})+(\Cols*\n{width},\Rows*\n{width})$) ;
    \foreach \row/\col in {
             1/1,1/\MidCols,1/\Cols,
             \MidRows/1,\MidRows/\MidCols,\MidRows/\Cols,
             \Rows/1,\Rows/\Cols} {
        \DrawCompoundSquare{\row}{\col}
    }
    \DrawCompoundSquare{\Rows}{\MidCols}
    \foreach \col in {1,\Cols} {
        \foreach \row in {2,...,\PredMidRows} {
            \DrawSquare{\row}{\col}
        }
        \foreach \row in {\SuccMidRows,...,\Rows} {
            \DrawSquare{\row}{\col}
        }
    }
    \foreach \row in {2,...,\PredMidRows} {
        \DrawSquare{\row}{\MidCols}
    }
    \foreach \row in {1,\MidRows,\Rows} {
        \foreach \col in {2,...,\PredMidCols} {
            \DrawSquare{\row}{\col}
        }
        \foreach \col in {\SuccMidCols,...,\PredCols} {
            \DrawSquare{\row}{\col}
        }
    }
    \foreach \row in {3,5,7,9} {
        \foreach \col in {4,9} {
            \DrawOrnament{\row}{\col}
        }
    }
    \DrawTitle
\end{tikzpicture}

\end{document}

sample output

2
  • 2
    I thought you wanted submissions in typography not graphics ;)
    – user11232
    Commented May 19, 2014 at 0:30
  • @HarishKumar Not sure if I did. Anyway, a good book needs a good cover.
    – user10274
    Commented May 19, 2014 at 12:24
30
+500

A typography sample with the free ebgaramond font, lettrine, and the venerable tikzmark.

The text is a poem called Black March by Stevie Smith; the original text is available here. Complete .tex source for download is available here; compile with pdflatex twice to sync page locations. The .pdf output is available for download here.

\documentclass[14pt]{extarticle}
\usepackage[a4paper,landscape,margin=7pc]{geometry}
\usepackage{ebgaramond}
\usepackage{microtype}
\usepackage{verse}
\usepackage{lettrine}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\definecolor{MarchBlue}{HTML}{114466}
\definecolor{MarchLightBlue}{HTML}{339999}
\newcommand{\attrib}[1]{\raggedleft\scshape\lsstyle #1\par}
\renewcommand{\poemtitlefont}{\normalfont\itshape\Huge\centering}
\renewcommand{\LettrineFontHook}{\fontshape{it}\color{MarchBlue!80}}
\setlength{\stanzaskip}{\baselineskip}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}[remember picture,overlay]
  \shade[outer color=MarchLightBlue!35,inner color=MarchLightBlue!20] 
    (current page.south west) rectangle (current page.north east);
\end{tikzpicture}
\poemtitle{\textsw{B}lack March}
\settowidth{\versewidth}{Cambridge blue as cold as snow.)}
\begin{minipage}[b]{16pc}
\begin{verse}[\versewidth]
\lettrine[
  lines=4,
  loversize=0.5,
  findent=0.5em,
  nindent=-0.25em,
  slope=-0.24em,
  lhang=0.5
]{I}{ have a friend} \newline
At the end \newline
Of the world. \newline
His name is a breath

Of fresh air. \\
He is dressed in \\
Grey chiffon. At least \\
I think it is chiffon. \\
It has a \\
Peculiar look, like smoke.

It wraps him round \\
It blows out of place \\
It conceals him \\
I have not seen his face.
\end{verse}
\end{minipage}\hfill%
\begin{minipage}[b]{16pc}
\begin{verse}[\versewidth]
But I have seen his eyes, they are \\
As pretty and bright \\
As raindrops on black twigs \\
In March, and heard him say:

I am a breath \\
Of fresh air for you, a change \\
By and by.

\textsc{\lsstyle Black March} I call him \\
Because of his eyes \\
Being like March raindrops \\
On black twigs.
\end{verse}
\end{minipage}\hfill%
\begin{minipage}[b]{16pc}
\begin{verse}[\versewidth]
Such a pretty time when the sky \\
Behind black twigs can be seen \\
\tikzmark{paren}Stretched out in one \\
Uninterrupted \\
Cambridge blue as cold as snow.
\tikz[
  remember picture,
  overlay,
  xshift=0.488\versewidth,
  yshift=0.8ex
] \node at (pic cs:paren) 
  {\LettrineFontHook\fontsize{110}{112}\normalfont\selectfont [\hspace{0.85\versewidth}]};

But this friend \\
Whatever new names I give him \\
Is an old friend. He says:

Whatever names you give me \\
I am \\
A breath of fresh air, \\
A change for you.
\end{verse}
\end{minipage}%
\vfill
\attrib{stevie smith}
\vfill
\end{document}

enter image description here

26

This is an example of automated environment using stringstrings and parselines packages to separate plain contents and a complex format, so the first word and the second word are aligned in two parallel diagonals, whereas the remaining text is right-aligned, and the three parts of each line also are formatted distinctly with color gradients across the rows.

The last line is a bit different, and note that there are a hyphen in species name (that is deleted in the output) so that the binomial scientific name is treated as a single word.

Moreover, the code use the tcolorbox package but this tikz part does nothing odd with the text (excepting put all in a nice tcolortbox). So that, a nearly verbatim-like environment, where the settings is only one value of the indentation steps:

\begin{taxon}{1.1em}
Regio Eukaryota Chatton, 1925
Regnum  Protozoa (Goldfuss, 1818) R. Owen, 1858 
Subregnum  Biciliata  (Hatschek, 1888) Cavalier-Smith, 1983
Infraregnum Alveolata Cavalier-Smith, 1991
Phylum Ciliophora (Doflein, 1901) Copeland, 1956 
Subphylum Intramacronucleata Lynn, 1996
Classis Litostomatea Small y Lynn, 1981
Subclassis Trichostomatia Bütschli, 1889
Ordo Vestibuliferida de Puytorac et al., 1974
Familia Balantidiidae Reichenow, in Doflein y Reichenow, 1929
Genus Balantidium  Clapar\`ede y Lachmann, 1858
Species Balantidium-coli (Malmsten, 1857)
\end{taxon}

become this:

MWE

Source code:

\documentclass[10pt,varwidth=18cm,margin=5mm]{standalone}
% \usepackage[margin=2cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{stringstrings}
\usepackage{parselines}
\usepackage{xcolor} % ya definido
\usepackage{tcolorbox} % ya definido
\tcbuselibrary{skins}


\newenvironment{taxon}[1]
{%
\definecolorseries{serie}{rgb}{last}%{blue!50!gray}{blue!50!red}
{green!40!blue!70!white}{red!40!blue!70!black}
\definecolorseries{grises}{rgb}{last}{gray!70}{black!70}
\resetcolorseries[16]{serie}
\resetcolorseries[16]{grises}

\begin{tcolorbox}[
arc=8mm,
fontupper=\bfseries,
fuzzy shadow={.5mm}{-.5mm}{-.5mm}{.3mm}{black},
skin=beamer,%beamer,
no borderline,
colback=green!5!white,
colframe=green!20!gray!40,
coltitle=orange!50!black,
rounded corners=all,
fonttitle=\sffamily\bfseries\Large,
center title,
adjusted title=Taxonomy]
\noindent
\begin{parse lines}[\small\parindent=#1\par]{\noindent\hspace{\row\parindent}
\getargs{##1}
\makebox[7em][l]{{\color{grises!!+}\emph{\argi}}\hfill} \textbf{\color{serie!!+}\emph{
\convertchar[v]{\argii}{-}{ }}}% 
\ifthenelse{\narg>2}
{{\color{grises!!+}\hfill \removeword[e]{##1}\removeword[e]{\thestring}\retokenize[v]{\thestring}}}
{}\par}}
{%
\end{parse lines}
\end{tcolorbox} 
}

\begin{document}

\begin{taxon}{1.1em}
Regio Eukaryota Chatton, 1925
Regnum  Protozoa (Goldfuss, 1818) R. Owen, 1858 
Subregnum  Biciliata  (Hatschek, 1888) Cavalier-Smith, 1983
Infraregnum Alveolata Cavalier-Smith, 1991
Phylum Ciliophora (Doflein, 1901) Copeland, 1956 
Subphylum Intramacronucleata Lynn, 1996
Classis Litostomatea Small y Lynn, 1981
Subclassis Trichostomatia Bütschli, 1889
Ordo Vestibuliferida de Puytorac et al., 1974
Familia Balantidiidae Reichenow, in Doflein y Reichenow, 1929
Genus Balantidium  Clapar\`ede y Lachmann, 1858
Species Balantidium-coli (Malmsten, 1857)
\end{taxon}

\end{document}

Note: egreg's answer in Suggestions for an automatic taxonomy environment also show how obtain diagonal alignments in parallel, but using a completely different approach.

4
  • 1
    Thanks. It looks it should also be possible to do this on top of TikZ. You draw the left two columns as a tree (without lines) and align the rightmost column by computing the positions using the intersections coordinate system and aligning the nodes with anchors to the east.
    – user10274
    Commented Jan 20, 2014 at 10:29
  • @MarcvanDongen Probably, but here not only matter the final result. The main idea was (re)use already made plain text and maintain it readadable for humans (me). I use often this kind of classifications, thus working with a source code as simple as possible was a must.
    – Fran
    Commented Jan 20, 2014 at 11:11
  • This example is not more available :( Commented Oct 8, 2014 at 22:14
  • @Goldnass I added a source code in the answer.
    – Fran
    Commented Oct 14, 2014 at 0:33
24
+500

Just a small last-minute entry. I find XeLaTeX exceedingly well-suited for East Asian characters and their attendant phonetic descriptions. I realize this entry is quite elementary, but the clean, crisp presentation of vector glyphs, simply & portably executed, is what drew me to TeX in the first place. And so I celebrate that here.

(In a (pathetic) last ditch attempt to attain contemporary artistic relevance, I added to the preamble:

\usepackage[angle=30,opacity=0.1]{background}
\SetBgContents{兔}
\SetBgScale{90}
\S‌​etBgColor{orange}

It looked pretty cool, but I struck it. Sticking to my guns: content is king.)

Here is a link to the output.

enter image description here

%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode

\documentclass[14pt]{extarticle}

\usepackage[margin=1.3cm,a5paper]{geometry}
\usepackage{fontspec}
\setromanfont{STKaiti}

\renewcommand{\arraystretch}{1.8}
\renewcommand{\tabcolsep}{0.5em}
\usepackage{ruby}
\renewcommand\rubysep{-3.2ex}

\begin{document}
\thispagestyle{empty}
\Huge

\begin{center}
兔子的汉字\\
\raisebox{1ex}{{\small(Rabbity Characters)}}

\begin{tabular}{ccccc}
\ruby{兔}{\ruby{tù}{(rabbit)}} & $+$ & & $=$ & \ruby{兔}{\ruby{tù}{(rabbit)}}\\
\ruby{兔}{\ruby{tù}{(rabbit)}} & $+$ & \ruby{卄}{\ruby{niàn}{(twenty)}}& $=$ & \ruby{菟}{\ruby{tù}{(dodder)}}\\
\ruby{兔}{\ruby{tù}{(rabbit)}} & $+$ & \ruby{⼟}{\ruby{tǔ}{(soil)}}& $=$ & \ruby{堍}{\ruby{tù}{(side of bridge)}}\\
\ruby{兔}{\ruby{tù}{(rabbit)}} & $+$ & \ruby{鳥}{\ruby{niǎo}{(bird)}}& $=$ & \ruby{鵵}{\ruby{tù}{(scops owl)}}\\
\ruby{兔}{\ruby{tù}{(rabbit)}} & $+$ & \raisebox{0.69ex}{\ruby{⼍}{\ruby{mì}{(cover)}}}& $=$ & \ruby{冤}{\ruby{yuān}{(grievance)}}\\
\ruby{兔}{\ruby{tù}{(rabbit)}} & $+$ & \ruby{辶}{\ruby{chuò}{(walk)}}& $=$ & \ruby{逸}{\ruby{yì}{(flee)}}\\
\end{tabular}
\end{center}

\end{document}
2
  • I really like this! The English translations are a little small to see at this resolution; if you added a link to the full size image it would be easier to see.
    – ChrisS
    Commented Oct 13, 2014 at 7:41
  • @ChrisS: tweaked size & added link to PDF. Thanks.
    – commonhare
    Commented Oct 13, 2014 at 14:21
23
+500

Here's a few dictionary entries (accuracy unknown) for uncommon words as listed in this AskReddit thread. The text is typeset in Baskerville Ten Pro and Baskerville 120 Pro by Štorm František of the Storm Type Foundry.

Definitions of uncommon words.

% save this document as example.tex
% compile this document with: xelalatex -shell-escape example.tex
\documentclass{article}

% Needed to make sure your page dimensions
% are the same as that of the calendar.
\usepackage[landscape,a4paper,margin=2cm]{geometry}

\usepackage{fontspec}
\setmainfont[Mapping=tex-text,RawFeature={+onum,+pnum,+dlig}]{Baskerville Ten Pro}
\setsansfont[Mapping=tex-text,RawFeature={+onum,+pnum,+dlig}]{Baskerville 120 Pro}

\usepackage{multicol}

\pagestyle{empty}
\parindent=0pt
\def\normalsize{\fontsize{12}{17}\selectfont}
\parskip=12pt
\columnsep=17pt
\multicolsep=14pt
\def\quad{\hskip13pt plus 2pt minus 3pt}

\def\word#1#2#3{\textsc{#1}\hspace{4pt}(\emph{#2}.)\quad#3\par}

\begin{document}
{\sffamily\itshape\addfontfeatures{RawFeature=+salt}\fontsize{28}{36}\selectfont What uncommon word do you think everybody should know?\par}
\vspace{\baselineskip}
\begin{multicols}{4}
\word{agastopia}n{An admiration of a particular part of someone's body.}
\word{apricity}n{The warmth of the sun on a cold winter's day.}
\word{besmirch}v{To cause harm or damage to (the reputation of someone or something).}
\word{bloviate}v{To talk at great length, particularly in a pompous way.}
\word{borborygmus}n{The sound of a stomach rumbling.}
\word{brobdingnagian}a{Enormous, huge, much bigger than is normal for such a thing.}
\word{cockalorum}n{A self-important little man.}
\word{crepuscular}a{Of or relating to twilight.}
\word{cwm}n{Valley.}
\word{ereyesterday}n{The day before yesterday.}
\word{extirpate}v{To destroy or remove completely.}
\word{galeanthropy}n{A mental condition of thinking that one has become a cat.}
\word{gloaming}n{Twilight or dusk.}
\word{gruntled}a{Happy or contented.}
\word{ineffable}a{Incapable of being explained through words.}
\word{latibule}n{A hiding place; somewhere no one could find you.}
\word{lethologica}n{The inability to think of the correct word.}
\word{lugubrious}a{Looking sad or dismal.}
\word{magnanimous}a{Very generous or forgiving, especially toward a rival or someone less powerful than oneself.}
\word{milquetoast}n{A person who is timid or submissive.}
\word{nugatory}a{Of no value, importance or consequence; trifling; useless.}
\word{nyctophilia}n{The love of darkness or night.}
\word{omphaloskepsis}n{Contemplation of one's navel as part of a mystical exercise.}
\word{overmorrow}n{The day after tomorrow.}
\word{petrichor}n{A pleasant smell that frequently accompanies the first rain after a long period of warm, dry weather.}
\word{serendipity}n{A pleasant surprise.}
\word{tmesis}n{The interjection of one word into another.}
\word{verisimilitude}n{The appearance of being true or real.}
\word{zyzzyva}n{A South American weevil.}
\end{multicols}
\vfill
\textsc{source}\quad reddit (\emph{http://redd.it/2a1ubh})\hfill\textsc{typefaces}\quad Baskerville Ten Pro \emph{\&} Baskerville 120 Pro
\end{document}

The source code and output are available here.

EDIT: Spacing adjusted as suggested by Manuel and Marc van Dongen in the comments below.

4
  • 2
    Is there a reason for not tracking the small caps? Commented Jul 9, 2014 at 5:56
  • 2
    I think the spacing is “very” loose: large interword spaces, very large space after the \word{…}, apparently large \baselineskip and no so different of the spacing between definitions. At first sight, it seems like those are words put on a paper randomly, without a clear order. I would try to reduce the spacing here and there, leaving it a bit more compact.
    – Manuel
    Commented Jul 10, 2014 at 9:56
  • Thanks for the effort. Such applications are exactly what I'm looking for. I agree with @Manuel. If it was just the words that were spaced in different entries, it probably wouldn't have mattered much. What I don't like is the different amounts of space before the parenthesized letters.
    – user10274
    Commented Jul 10, 2014 at 10:43
  • 2
    'cwm' is not an uncommon word at all. It just isn't English. I realise this is content rather than presentation but I suggest sticking to words which are uncommon in the languages they belong to. Otherwise, almost anything could be counted as 'uncommon'.
    – cfr
    Commented Jul 22, 2014 at 15:07
21
+500

The TeX family evolved and adapted over the years. The image produced below with pdfLaTeX represents where I would like to see (all)TeX evolve one day.

page spread with LaTeX

Some of my new year wishes:

  • Output routines that enable two page grid typesetting.
  • Output routines that are easily accessed via LuaTeX or LaTeX3.

The image is typeset with custom code. The 35 lines of code and pdf is at github. You might want to change the picture to suit the calendar theme and to avoid being sued by the Chinese government. The text has one hyphen. The little boxes are the page parameters and dimensions (a bit hard to see on a reduced image).

Here is an adaptation with a Ralf Goings painting from Wikipedia, which is in the public domain. The pdf is also at github.

enter image description here

4
  • Looks nice. Is the picture in the public domain? (I'm asking because TUG wouldn't want to be sued...) Could you provide a direct link to the pdf output file please?
    – user10274
    Commented Oct 14, 2014 at 9:10
  • @MarcvanDongen I will replace the picture over the next day or so, as I am not too sure. The github link is pdf output.
    – yannisl
    Commented Oct 14, 2014 at 9:19
  • Any chance you could have a look at this soon?
    – user10274
    Commented Dec 11, 2014 at 16:26
  • @MarcvanDongen My apologies forgot all about it.
    – yannisl
    Commented Dec 12, 2014 at 16:31
20

A CD design for a friend. This design was never used.

\documentclass[article]{article}
\usepackage{euler}
\usepackage{beton}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{decorations}
\usetikzlibrary{decorations.text}
\usetikzlibrary{external}
\tikzexternalize

\newcommand{\CdOuterRadius}[0]{6.0cm}
\newcommand{\CdInnerRadius}[0]{1.6cm}
\newcommand{\CdHoleRadius}[0]{0.75cm}
\newcommand{\CdBasicTextOuterColour}{blue!25!white}
\newcommand{\CdBasicTextInnerColour}{blue!15!white}
\newcommand{\CdLargeTextOuterColour}{blue!80!white}
\newcommand{\CdLargeTextInnerColour}{blue!50!white}
\newcommand{\CdBackgroundColour}{white}
\newcommand{\BasicTextInnerScale}{2}
\newcommand{\BasicTextOuterScale}{2.2}
\newcommand{\BasicText}{$1$}
\newcommand{\LargeText}{$1$}
\newcommand{\LargeTextXOffset}{3.5cm}
\newcommand{\LargeTextYOffset}{-0.5cm}
\newcommand{\EdgeText}{Anear Production. Recorded Live at St Finbarre's Cathedral, Cork, 2009.}

\def\MakeCd[large text=#1,%
            large text outer scale=#2,%
            large text inner scale=#3,%
            large text xoffset=#4,%
            large text yoffset=#5,%
            probability=#6] {%
\def\LargeText{#1}
\def\LargeTextInnerScale{#2}
\def\LargeTextOuterScale{#3}
\def\LargeTextXOffset{#4}
\def\LargeTextYOffset{#5}
\def\Probability{#6}
\begin{tikzpicture}
   \path (0,0) coordinate (origin);
   \clip (origin) circle (\CdOuterRadius);
   \fill[\CdBackgroundColour]
        (origin) +(-\CdOuterRadius,-\CdOuterRadius)
       rectangle +(\CdOuterRadius,\CdOuterRadius);
   \foreach \row in {-10,...,10} {
   \foreach \col in {-15,-14,...,15} {
       \draw let \p{pos} = (\CdOuterRadius*\col*0.06666,\row*0.65),
                 \n{prob} = {random(1,\Probability)}
             in (origin) + (\p{pos})
                node[color=\CdBasicTextOuterColour,scale=\BasicTextOuterScale]
                {$\pgfmathparse{\n{prob} == 1 ? 1 : 0}\pgfmathresult$}
                (origin) + (\p{pos})
                node[color=\CdBasicTextInnerColour,scale=\BasicTextInnerScale]
                {$\pgfmathparse{\n{prob} == 1 ? 1 : 0}\pgfmathresult$};
   }}
   \draw (origin) + (\LargeTextXOffset,\LargeTextYOffset)
         node[color=\CdLargeTextOuterColour,scale=\LargeTextOuterScale]
         {\LargeText}
         (origin) + (\LargeTextXOffset,\LargeTextYOffset)
         node[color=\CdLargeTextInnerColour,scale=\LargeTextInnerScale]
         {\LargeText};
   \filldraw[thick,draw=black,fill=transparent!7]
        (origin) circle (\CdInnerRadius);
   \fill[white] (origin) circle (\CdHoleRadius);
   \draw[ultra thick] (origin) circle (\CdOuterRadius);
   \draw[thick] (origin) circle (\CdHoleRadius);

   \path[rotate=200,decorate,decoration={text along path,text=\EdgeText}]
        (origin) circle (\CdOuterRadius-3.5);
\end{tikzpicture}
\clearpage
}

\def\MAKECD[large text=#1,%
            large text outer scale=#2,%
            large text inner scale=#3,%
            use probability=#4] {%
\def\LargeTextA{#1}
\def\LargeTextInnerScale{#2}
\def\LargeTextOuterScale{#3}
\def\Probability{#1}
\begin{tikzpicture}
   \path (0,0) coordinate (origin);
   \clip (origin) circle (\CdOuterRadius);
   \fill[\CdBackgroundColour]
        (origin) +(-\CdOuterRadius,-\CdOuterRadius)
       rectangle +(\CdOuterRadius,\CdOuterRadius);
   \csname if#4\endcsname
   \foreach \row in {-10,...,10} {
   \foreach \col in {-15,-14,...,15} {
       \draw let \p{pos} = (\CdOuterRadius*\col*0.06666,\row*0.65),
                 \n{prob} = {random(1,\Probability)}
             in (origin) + (\p{pos})
                node[color=\CdBasicTextOuterColour,scale=\BasicTextOuterScale]
                {$\pgfmathparse{\n{prob} == 1 ? 1 : 0}\pgfmathresult$}
                (origin) + (\p{pos})
                node[color=\CdBasicTextInnerColour,scale=\BasicTextInnerScale]
                {$\pgfmathparse{\n{prob} == 1 ? 1 : 0}\pgfmathresult$};
   }}
   \fi
   \draw %(origin) + (0.55*\CdOuterRadius,0.5 |- 0,-\CdInnerRadius)
         %node[baseline,scale=1.75*\LargeTextOuterScale,inner sep=0pt]
         %{$\LargeTextA$\strut}
         (origin) + (0.60*\CdOuterRadius,0.5 |- 0,-\CdInnerRadius)
         node[anchor=base,color=\CdLargeTextInnerColour,scale=1.75*\LargeTextInnerScale,inner sep=0pt]
         {$\LargeTextA$\strut};
   \filldraw[thick,draw=black,fill=transparent!7]
        (origin) circle (\CdInnerRadius);
   \fill[white] (origin) circle (\CdHoleRadius);
   \draw[ultra thick] (origin) circle (\CdOuterRadius);
   \draw[thick] (origin) circle (\CdHoleRadius);

   \path[rotate=200,decorate,decoration={text along path,text=\EdgeText}]
        (origin) circle (\CdOuterRadius-3.5);
\end{tikzpicture}
\clearpage
}

\begin{document}

\MakeCd[large text=$1$,%
        large text outer scale=34.4,%
        large text inner scale=33.4,%
        large text xoffset=+3.0,%
        large text yoffset=-0.1,%
        probability=1]

\MakeCd[large text=$2$,%
        large text outer scale=34.4,%
        large text inner scale=33.4,%
        large text xoffset=+2.10,%
        large text yoffset=+0.3,%
        probability=2]

\MakeCd[large text=$3$,%
        large text outer scale=32.4,%
        large text inner scale=31.4,%
        large text xoffset=+3.30,%
        large text yoffset=-0.1,%
        probability=3]

\MakeCd[large text=$4$,%
        large text outer scale=32.4,%
        large text inner scale=31.4,%
        large text xoffset=+3.30,%
        large text yoffset=-0.1,%
        probability=4]

\MakeCd[large text=$4$,%
        large text outer scale=40.4,%
        large text inner scale=39.4,%
        large text xoffset=+1.30,%
        large text yoffset=-0.1,%
        probability=4]

\end{document}

First CD Screenshot Second CD Screenshot Third CD Screenshot Fourth CD Screenshot

20

I wanted to play with the new(ish) package for drawing celtic knots and thought the Mabinogion (y Mabinogi), a collection of stories from middle Welsh manuscripts, would make a good subject. Although the Mabinogion itself is a nineteenth century creation, the original manuscripts are medieval - around the twelfth century.

The image below shows the beginning of each of the 'four branches', one of the sub-groups of stories included in the collection. The text is from the Internet Archive with slight changes to standardise the names etc. The text is not the original middle Welsh but a modernised version. For example, the original manuscripts include letters such as 'k' and 'v' which no longer exist.

As well as demonstrating an application of tikz, this demonstrates the capacity of (pdf)LaTeX to use different fonts and non-standard font styling commands, the ability of TeX to hyphenate languages other than English (babel is used with Welsh hyphenation rules), and the ability to input accented characters directly. [Unfortunately, it also demonstrates the limitations of LaTeX in terms of support for accented characters. While many European languages are supported by utf8, Welsh is not. Hence the use of utf8x to handle 'ŷ'. 'ŵ' encounters similar problems but does not occur in the text included here. I couldn't avoid 'ŷ', though, as it is in the titles of two of the branches as well as the text itself.)

The main fonts are from Arkandis's Venturis families (Venturis Old and Venturis Titling). The font used for the 'branch text' (the heading for each of the four branches) is URW Zapf Chancery.

The resulting PDF is just shy of A4 in landscape mode (289 x 209 mm).

Y Mabinogi

\PassOptionsToPackage{rgb,pdftex,dvipsnames*,x11names}{xcolor}
\documentclass[tikz]{standalone}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[welsh]{babel}
\usepackage{venturisold}
\usetikzlibrary{celtic,calc,positioning,backgrounds,fadings}
\DeclareRobustCommand{\zapfstyle}{%
        \fontencoding{T1}%
        \fontseries{mb}%
        \fontshape{it}%
        \fontfamily{pzc}%
        \selectfont}
\DeclareTextFontCommand{\textzf}{\zapfstyle}
\tikzfading[% t. 345
  name=fade out,
  inner color=transparent!0,
  outer color=transparent!100]
\begin{document}
\pgfdeclarelayer{foreground}%
\pgfsetlayers{background,main,foreground}%
% adapted (simplified version) from tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex
\tikzset{%
  on foreground layer/.style={%
        execute at begin scope={%
          \pgfonlayer{foreground}%
          \tikzset{every on foreground layer/.try,#1}%
        },
        execute at end scope={\endpgfonlayer}
  },
}%
\altstyle
\begin{tikzpicture}
  [
    scale=1,
    celtic path/.style={
      double=ForestGreen,
      draw=Lime,
      double distance=5pt,
      line width=2.5pt,
      },
    celtic surround/.style ={
      line width=3.5mm,
      draw=MidnightBlue,
      double=Crimson,
      double distance=1.75mm,
    },
    cainc/.style={align=center, font=\Huge\zapfstyle, text=Lime, inner sep=0pt, outer sep=0pt, inner sep=10mm, path fading=fade out, fill=Crimson, anchor=center},
    cyflwyno/.style={align=left, font=\vtstyle\LARGE, text=Lime, outer sep=0pt, inner sep=0pt, text width=100mm},
    testun/.style={align=left, font=\large, text=Lime, outer sep=0pt, inner sep=0pt, text width=100mm},
    teitl/.style={align=center, font=\Huge\bfseries\vtstyle, scale=1.5, text=Silver, inner sep=0pt, outer sep=0pt, anchor=center},
    rhif/.style={align=center, font=\Huge\lstyle\bfseries, text=Lime, inner sep=10mm, inner color=Crimson, outer color=MidnightBlue, circle, anchor=center, path fading=fade out},
    show background rectangle,
    tight background,
    background rectangle/.style={inner color=Crimson, outer color=MidnightBlue, inner sep=0pt, outer sep=0pt},
  ]
  \begin{scope}[on foreground layer]
    \CelticDrawPath{
      symmetric crossings={
        5:11,2,-;
        5:11,3,-;
        3:11,4,-;
        3:11,5,-;
        3:11,6,-;
        3:11,7,-;
        3:9,8,-;
        2,5:8,|;
        4,3:8,|;
        6,3:8,|;
        8,3:8,|;
        10,3:8,|;
        12,3:6,|;
        14,3,|;
        14,5,-;
        1:3,4,-;
        3,5:7,|;
        1,10,-;
        3,10,-;
        5,10,|;
        7,10,|;
        9,10,-;
        13,8,|;
        },
      size={28,20},
      max steps=75,
    }
    \coordinate (p0) at (0,0);
    \coordinate (p1) at (28,20);
    \foreach \i [count=\ino] in {{2,16},{4,18},{12,14},{10,12}}
      {
        \coordinate (a\ino) at (\i);
        \coordinate (b\ino) at ($(p1 |- a\ino) - (a\ino) + (p0 |- a\ino)$);
        \coordinate (c\ino) at ($(p1 -| a\ino) - (a\ino) + (p0 -| a\ino)$);
        \coordinate (d\ino) at ($(p1 -| b\ino) - (b\ino) + (p0 -| b\ino)$);
      }
    \foreach \i in {a,b,c,d}
      {
        \coordinate (\i5) at ($(\i2)!1/2!(\i2 -| \i3)$);
        \coordinate (\i6) at ($(\i5 |- \i1)!1/2!(\i2 -| \i5)$);
        \coordinate (\i7) at ($(\i1 |- \i4)!1/2!(\i4)$);
        \coordinate (\i8) at ($(\i7 |- \i3)!1/2!(\i7)$);
      }
  \end{scope}
  \node [cainc] at (a6) {Pwyll Pendefig Dyfed};
  \node [cainc] at (b6) {Branwen ferch Llŷr};
  \node [cainc] at (c6) {Manawydan fab Llŷr};
  \node [cainc] at (d6) {Math fab Mathonwy};
  \node [teitl, yshift=-5pt] at (a8 |- a8) {Pedair Cainc};
  \node [teitl, yshift=-5pt] at (b8 |- b8) {Y Mabinogi};
  \node [teitl, yshift=5pt] at (d8 |- d8) {The Four Branches};
  \node [teitl, yshift=5pt] at (c8 |- c8) {The Mabinogion};
  % testun o https://archive.org/details/mabinogionolyfr00edwa (rhai newidiadau i wyrio camgymeriadau yn y ffurf destun); sillafu 'Manawydan' a 'Llŷr' yn ôl y BBC a gwefannau eraill
  \node (cyntaf) [cyflwyno, anchor=north west] at (a1) {Dyma Ddechreu Y Mabinogi.};
  \node [testun, below=10pt of cyntaf.south west, anchor=north west]  {\textvt{Pwyll}, pendefig Dyfed, a oedd yn arglwydd ar saith gantref Dyfed. Ar ei dro yr oedd yn Arberth, prif lys iddo, a daeth i'w fryd ac i'w feddwl fyned i hela. \dots};
  \node (ail) [cyflwyno, anchor=north east] at (b1) {Dyma yr Ail Gainc o'r Mabinogi.};
  \node [testun, below=10pt of ail.south east, anchor=north east]  {\textvt{Bendigaid} Fran, fab Llŷr, oedd frenin coronog ar yr ynys hon, a gwisgai goron ardderchog Llundain. Brynhawn-gwaith yr oedd yn Harlech yn Ardudwy, mewn llys iddo \dots};
  \node (trydedd) [testun, anchor=south west]  at (c1) {\textvt{Wedi} darfod i'r seith-wŷr ddywedasom ni uchod gladdu pen Bendigaid Fran yn y Gwynfryn, yn Llundain, a'i wyneb ar Ffrainc, edrych a wnaeth Manawydan \dots};
  \node [cyflwyno, above=10pt of trydedd.north west, anchor=south west] {Dyma y Drydedd Gainc o'r Mabinogi.};
  \node (pedwaredd) [testun, anchor=south east] at (d1)  {\textvt{Math} fab Mathonwy oedd arglwydd ar Wynedd, a Phryderi fab Pwyll oedd arglwydd ar un cantref ar hugain yn y Deheu, sef oedd y rhai hynny \dots};%
  \node [cyflwyno, above=10pt of pedwaredd.north east, anchor=south east] {Hon yw y Bedwaredd Gainc o'r Mabinogi.};
  \foreach \i [count=\ino] in {a,...,d}
    \node [rhif] at (\i1 |- \i2) {\ino};
\end{tikzpicture}
\end{document}

If preferred, this version demonstrates one way of enabling the long s in (pdf)LaTeX, setting it up as a ligature so that s+ produces the long s, while s produces the regular (for use at the end of words). I decided not to put this as the primary version because I'm not entirely sure I'm using the long s correctly...

long s

\PassOptionsToPackage{rgb,pdftex,dvipsnames*,x11names}{xcolor}
\documentclass[tikz]{standalone}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[welsh]{babel}
\usepackage{venturisold}
\usetikzlibrary{celtic,calc,positioning,backgrounds,fadings}
\DeclareRobustCommand{\zapfstyle}{%
        \fontencoding{T1}%
        \fontseries{mb}%
        \fontshape{it}%
        \fontfamily{pzc}%
        \selectfont}
\DeclareTextFontCommand{\textzf}{\zapfstyle}
\tikzfading[% t. 345
  name=fade out,
  inner color=transparent!0,
  outer color=transparent!100]
\begin{document}
\pgfdeclarelayer{foreground}%
\pgfsetlayers{background,main,foreground}%
% adapted (simplified version) from tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex
\tikzset{%
  on foreground layer/.style={%
        execute at begin scope={%
          \pgfonlayer{foreground}%
          \tikzset{every on foreground layer/.try,#1}%
        },
        execute at end scope={\endpgfonlayer}
  },
}%
\altstyle
\begin{tikzpicture}
  [
    scale=1,
    celtic path/.style={
      double=ForestGreen,
      draw=Lime,
      double distance=5pt,
      line width=2.5pt,
      },
    celtic surround/.style ={
      line width=3.5mm,
      draw=MidnightBlue,
      double=Crimson,
      double distance=1.75mm,
    },
    cainc/.style={align=center, font=\Huge\zapfstyle, text=Lime, inner sep=0pt, outer sep=0pt, inner sep=10mm, path fading=fade out, fill=Crimson, anchor=center},
    cyflwyno/.style={align=left, font=\vtstyle\LARGE, text=Lime, outer sep=0pt, inner sep=0pt, text width=100mm},
    testun/.style={align=left, font=\large, text=Lime, outer sep=0pt, inner sep=0pt, text width=100mm},
    teitl/.style={align=center, font=\Huge\bfseries\vtstyle, scale=1.5, text=Silver, inner sep=0pt, outer sep=0pt, anchor=center},
    rhif/.style={align=center, font=\Huge\lstyle\bfseries, text=Lime, inner sep=10mm, inner color=Crimson, outer color=MidnightBlue, circle, anchor=center, path fading=fade out},
    show background rectangle,
    tight background,
    background rectangle/.style={inner color=Crimson, outer color=MidnightBlue, inner sep=0pt, outer sep=0pt},
  ]
  \begin{scope}[on foreground layer]
    \CelticDrawPath{
      symmetric crossings={
        5:11,2,-;
        5:11,3,-;
        3:11,4,-;
        3:11,5,-;
        3:11,6,-;
        3:11,7,-;
        3:9,8,-;
        2,5:8,|;
        4,3:8,|;
        6,3:8,|;
        8,3:8,|;
        10,3:8,|;
        12,3:6,|;
        14,3,|;
        14,5,-;
        1:3,4,-;
        3,5:7,|;
        1,10,-;
        3,10,-;
        5,10,|;
        7,10,|;
        9,10,-;
        13,8,|;
        },
      size={28,20},
      max steps=75,
    }
    \coordinate (p0) at (0,0);
    \coordinate (p1) at (28,20);
    \foreach \i [count=\ino] in {{2,16},{4,18},{12,14},{10,12}}
      {
        \coordinate (a\ino) at (\i);
        \coordinate (b\ino) at ($(p1 |- a\ino) - (a\ino) + (p0 |- a\ino)$);
        \coordinate (c\ino) at ($(p1 -| a\ino) - (a\ino) + (p0 -| a\ino)$);
        \coordinate (d\ino) at ($(p1 -| b\ino) - (b\ino) + (p0 -| b\ino)$);
      }
    \foreach \i in {a,b,c,d}
      {
        \coordinate (\i5) at ($(\i2)!1/2!(\i2 -| \i3)$);
        \coordinate (\i6) at ($(\i5 |- \i1)!1/2!(\i2 -| \i5)$);
        \coordinate (\i7) at ($(\i1 |- \i4)!1/2!(\i4)$);
        \coordinate (\i8) at ($(\i7 |- \i3)!1/2!(\i7)$);
      }
  \end{scope}
  \node [cainc] at (a6) {Pwyll Pendefig Dyfed};
  \node [cainc] at (b6) {Branwen ferch Llŷr};
  \node [cainc] at (c6) {Manawydan fab Llŷr};
  \node [cainc] at (d6) {Math fab Mathonwy};
  \node [teitl, yshift=-5pt] at (a8 |- a8) {Pedair Cainc};
  \node [teitl, yshift=-5pt] at (b8 |- b8) {Y Mabinogi};
  \node [teitl, yshift=5pt] at (d8 |- d8) {The Four Branches};
  \node [teitl, yshift=5pt] at (c8 |- c8) {The Mabinogion};
  % testun o https://archive.org/details/mabinogionolyfr00edwa (rhai newidiadau i wyrio camgymeriadau yn y ffurf destun); sillafu 'Manawydan' a 'Llŷr' yn ôl y BBC a gwefannau eraill
  \node (cyntaf) [cyflwyno, anchor=north west] at (a1) {Dyma Ddechreu Y Mabinogi.};
  \node [testun, below=10pt of cyntaf.south west, anchor=north west]  {\textvt{Pwyll}, pendefig Dyfed, a oedd yn arglwydd ar s+aith gantref Dyfed. Ar ei dro yr oedd yn Arberth, prif lys iddo, a daeth i'w fryd ac i'w feddwl fyned i hela. \dots};
  \node (ail) [cyflwyno, anchor=north east] at (b1) {Dyma yr Ail Gainc o'r Mabinogi.};
  \node [testun, below=10pt of ail.south east, anchor=north east]  {\textvt{Bendigaid} Fran, fab Llŷr, oedd frenin coronog ar yr ynys hon, a gwis+gai goron ardderchog Llundain. Brynhawn-gwaith yr oedd yn Harlech yn Ardudwy, mewn llys iddo \dots};
  \node (trydedd) [testun, anchor=south west]  at (c1) {\textvt{Wedi} darfod i'r s+eith-wŷr ddywedas+om ni uchod gladdu pen Bendigaid Fran yn y Gwynfryn, yn Llundain, a'i wyneb ar Ffrainc, edrych a wnaeth Manawydan \dots};
  \node [cyflwyno, above=10pt of trydedd.north west, anchor=south west] {Dyma y Drydedd Gainc o'r Mabinogi.};
  \node (pedwaredd) [testun, anchor=south east] at (d1)  {\textvt{Math} fab Mathonwy oedd arglwydd ar Wynedd, a Phryderi fab Pwyll oedd arglwydd ar un cantref ar hugain yn y Deheu, s+ef oedd y rhai hynny \dots};%
  \node [cyflwyno, above=10pt of pedwaredd.north east, anchor=south east] {Hon yw y Bedwaredd Gainc o'r Mabinogi.};
  \foreach \i [count=\ino] in {a,...,d}
    \node [rhif] at (\i1 |- \i2) {\ino};
\end{tikzpicture}
\end{document}

Finally, here is a version designed to fill out the A4 page:

A4

\PassOptionsToPackage{rgb,pdftex,dvipsnames*,x11names}{xcolor}
\documentclass[tikz,crop=false,preview=false,a4paper,landscape]{standalone}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[welsh]{babel}
\usepackage{venturisold}
\usetikzlibrary{celtic,calc,positioning,backgrounds,fadings}
\usepackage[scale=1]{geometry}
\DeclareRobustCommand{\zapfstyle}{%
        \fontencoding{T1}%
        \fontseries{mb}%
        \fontshape{it}%
        \fontfamily{pzc}%
        \selectfont}
\DeclareTextFontCommand{\textzf}{\zapfstyle}
\tikzfading[% t. 345
  name=fade out,
  inner color=transparent!0,
  outer color=transparent!100]
\begin{document}
\pgfdeclarelayer{foreground}%
\pgfsetlayers{background,main,foreground}%
% adapted (simplified version) from tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex
\tikzset{%
  on foreground layer/.style={%
        execute at begin scope={%
          \pgfonlayer{foreground}%
          \tikzset{every on foreground layer/.try,#1}%
        },
        execute at end scope={\endpgfonlayer}
  },
}%
\altstyle
\noindent\begin{tikzpicture}
  [
    scale=1,
    celtic path/.style={
      double=ForestGreen,
      draw=Lime,
      double distance=5pt,
      line width=2.5pt,
      },
    celtic surround/.style ={
      line width=3.5mm,
      draw=MidnightBlue,
      double=Crimson,
      double distance=1.75mm,
    },
    cainc/.style={align=center, font=\Huge\zapfstyle, text=Lime, inner sep=0pt, outer sep=0pt, inner sep=10mm, path fading=fade out, fill=Crimson, anchor=center},
    cyflwyno/.style={align=left, font=\vtstyle\LARGE, text=Lime, outer sep=0pt, inner sep=0pt, text width=100mm},
    testun/.style={align=left, font=\large, text=Lime, outer sep=0pt, inner sep=0pt, text width=100mm},
    teitl/.style={align=center, font=\Huge\bfseries\vtstyle, scale=1.5, text=Silver, inner sep=0pt, outer sep=0pt, anchor=center},
    rhif/.style={align=center, font=\Huge\lstyle\bfseries, text=Lime, inner sep=10mm, inner color=Crimson, outer color=MidnightBlue, circle, anchor=center, path fading=fade out},
    show background rectangle,
    inner frame xsep=4mm,
    inner frame ysep=.5mm,
    background rectangle/.style={inner color=Crimson, outer color=MidnightBlue},
  ]
  \begin{scope}[on foreground layer]
    \CelticDrawPath{
      symmetric crossings={
        5:11,2,-;
        5:11,3,-;
        3:11,4,-;
        3:11,5,-;
        3:11,6,-;
        3:11,7,-;
        3:9,8,-;
        2,5:8,|;
        4,3:8,|;
        6,3:8,|;
        8,3:8,|;
        10,3:8,|;
        12,3:6,|;
        14,3,|;
        14,5,-;
        1:3,4,-;
        3,5:7,|;
        1,10,-;
        3,10,-;
        5,10,|;
        7,10,|;
        9,10,-;
        13,8,|;
        },
      size={28,20},
      max steps=75,
    }
    \coordinate (p0) at (0,0);
    \coordinate (p1) at (28,20);
    \foreach \i [count=\ino] in {{2,16},{4,18},{12,14},{10,12}}
      {
        \coordinate (a\ino) at (\i);
        \coordinate (b\ino) at ($(p1 |- a\ino) - (a\ino) + (p0 |- a\ino)$);
        \coordinate (c\ino) at ($(p1 -| a\ino) - (a\ino) + (p0 -| a\ino)$);
        \coordinate (d\ino) at ($(p1 -| b\ino) - (b\ino) + (p0 -| b\ino)$);
      }
    \foreach \i in {a,b,c,d}
      {
        \coordinate (\i5) at ($(\i2)!1/2!(\i2 -| \i3)$);
        \coordinate (\i6) at ($(\i5 |- \i1)!1/2!(\i2 -| \i5)$);
        \coordinate (\i7) at ($(\i1 |- \i4)!1/2!(\i4)$);
        \coordinate (\i8) at ($(\i7 |- \i3)!1/2!(\i7)$);
      }
  \end{scope}
  \node [cainc] at (a6) {Pwyll Pendefig Dyfed};
  \node [cainc] at (b6) {Branwen ferch Llŷr};
  \node [cainc] at (c6) {Manawydan fab Llŷr};
  \node [cainc] at (d6) {Math fab Mathonwy};
  \node [teitl, yshift=-5pt] at (a8 |- a8) {Pedair Cainc};
  \node [teitl, yshift=-5pt] at (b8 |- b8) {Y Mabinogi};
  \node [teitl, yshift=5pt] at (d8 |- d8) {The Four Branches};
  \node [teitl, yshift=5pt] at (c8 |- c8) {The Mabinogion};
  % testun o https://archive.org/details/mabinogionolyfr00edwa (rhai newidiadau i wyrio camgymeriadau yn y ffurf destun); sillafu 'Manawydan' a 'Llŷr' yn ôl y BBC a gwefannau eraill
  \node (cyntaf) [cyflwyno, anchor=north west] at (a1) {Dyma Ddechreu Y Mabinogi.};
  \node [testun, below=10pt of cyntaf.south west, anchor=north west]  {\textvt{Pwyll}, pendefig Dyfed, a oedd yn arglwydd ar saith gantref Dyfed. Ar ei dro yr oedd yn Arberth, prif lys iddo, a daeth i'w fryd ac i'w feddwl fyned i hela. \dots};
  \node (ail) [cyflwyno, anchor=north east] at (b1) {Dyma yr Ail Gainc o'r Mabinogi.};
  \node [testun, below=10pt of ail.south east, anchor=north east]  {\textvt{Bendigaid} Fran, fab Llŷr, oedd frenin coronog ar yr ynys hon, a gwisgai goron ardderchog Llundain. Brynhawn-gwaith yr oedd yn Harlech yn Ardudwy, mewn llys iddo \dots};
  \node (trydedd) [testun, anchor=south west]  at (c1) {\textvt{Wedi} darfod i'r seith-wŷr ddywedasom ni uchod gladdu pen Bendigaid Fran yn y Gwynfryn, yn Llundain, a'i wyneb ar Ffrainc, edrych a wnaeth Manawydan \dots};
  \node [cyflwyno, above=10pt of trydedd.north west, anchor=south west] {Dyma y Drydedd Gainc o'r Mabinogi.};
  \node (pedwaredd) [testun, anchor=south east] at (d1)  {\textvt{Math} fab Mathonwy oedd arglwydd ar Wynedd, a Phryderi fab Pwyll oedd arglwydd ar un cantref ar hugain yn y Deheu, sef oedd y rhai hynny \dots};%
  \node [cyflwyno, above=10pt of pedwaredd.north east, anchor=south east] {Hon yw y Bedwaredd Gainc o'r Mabinogi.};
  \foreach \i [count=\ino] in {a,...,d}
    \node [rhif] at (\i1 |- \i2) {\ino};
\end{tikzpicture}
\end{document}

Update

Here are two uncial versions. Both use Roman Uncial Modern for the main text, branch numbers and titles. The first, which I prefer, uses this also for the main titles. The second uses Uncial Animals for the main titles. These versions also emphasise the Welsh title by scaling it relative to the English.

Both fonts are the work of George Williams.

The truetype version of Roman Uncial Modern which I have may be distributed modified or unmodified in source or binary form. I'm using the truetype with pdfLaTeX directly. In the case of Uncial Animals, I have the original source for the font but am using a type1 version generated by FontForge from what may be a slightly modified version. According to FontSpace, this font is under the SIL licence. (Basically, I'm saying that I have made reasonable efforts to check and, as far as I can ascertain, it is neither illegal nor immoral to use the fonts here.)

uncial version 1

\PassOptionsToPackage{rgb,pdftex,dvipsnames*,x11names}{xcolor}
\documentclass[tikz,crop=false,preview=false,a4paper,landscape]{standalone}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[welsh]{babel}
\usepackage{RomanUncialModern}
\usetikzlibrary{celtic,calc,positioning,backgrounds,fadings}
\usepackage[scale=1]{geometry}
\tikzfading[% t. 345
  name=fade out,
  inner color=transparent!0,
  outer color=transparent!100]
\newcommand{\teitlymabinogi}{\rmuncial\Huge\bfseries}
\newcommand{\teitlcaincymabinogi}{\rmuncial\LARGE\bfseries}
\newcommand{\rhifauymabinogi}{\rmuncial\Huge\bfseries}
\newcommand{\cyflwynocainc}{\rmuncial\large\bfseries}
\newcommand{\testunymabinogi}{\rmuncial}
\newcommand*{\gaircyntaf}[1]{\rum{\uppercase{#1}}}
\begin{document}
\pgfdeclarelayer{foreground}%
\pgfsetlayers{background,main,foreground}%
% adapted (simplified version) from tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex
\tikzset{%
  on foreground layer/.style={%
        execute at begin scope={%
          \pgfonlayer{foreground}%
          \tikzset{every on foreground layer/.try,#1}%
        },
        execute at end scope={\endpgfonlayer}
  },
}%
\noindent\begin{tikzpicture}
  [
    scale=1,
    celtic path/.style={
      double=ForestGreen,
      draw=Lime,
      double distance=5pt,
      line width=2.5pt,
      },
    celtic surround/.style ={
      line width=3.5mm,
      draw=MidnightBlue,
      double=Crimson,
      double distance=1.75mm,
    },
    cainc/.style={align=center, font=\teitlcaincymabinogi, text=Lime, inner sep=0pt, outer sep=0pt, inner sep=10mm, path fading=fade out, fill=Crimson, anchor=center},
    cyflwyno/.style={align=left, font=\cyflwynocainc, text=Lime, outer sep=0pt, inner sep=0pt, text width=100mm},
    testun/.style={align=left, font=\testunymabinogi, text=Lime, outer sep=0pt, inner sep=0pt, text width=100mm},
    teitlen/.style={align=center, font=\teitlymabinogi, text=Silver, inner sep=0pt, outer sep=0pt, anchor=center},
    teitlcy/.style={align=center, font=\teitlymabinogi, text=Silver, scale=1.5, inner sep=0pt, outer sep=0pt, anchor=center},
    rhif/.style={align=center, font=\rhifauymabinogi, text=Lime, inner sep=10mm, inner color=Crimson, outer color=MidnightBlue, circle, anchor=center, path fading=fade out},
    show background rectangle,
    inner frame xsep=4mm,
    inner frame ysep=.5mm,
    background rectangle/.style={inner color=Crimson, outer color=MidnightBlue},
  ]
  \begin{scope}[on foreground layer]
    \CelticDrawPath{
      symmetric crossings={
        5:11,2,-;
        5:11,3,-;
        3:11,4,-;
        3:11,5,-;
        3:11,6,-;
        3:11,7,-;
        3:9,8,-;
        2,5:8,|;
        4,3:8,|;
        6,3:8,|;
        8,3:8,|;
        10,3:8,|;
        12,3:6,|;
        14,3,|;
        14,5,-;
        1:3,4,-;
        3,5:7,|;
        1,10,-;
        3,10,-;
        5,10,|;
        7,10,|;
        9,10,-;
        13,8,|;
        },
      size={28,20},
      max steps=75,
    }
    \coordinate (p0) at (0,0);
    \coordinate (p1) at (28,20);
    \foreach \i [count=\ino] in {{2,16},{4,18},{12,14},{10,12}}
      {
        \coordinate (a\ino) at (\i);
        \coordinate (b\ino) at ($(p1 |- a\ino) - (a\ino) + (p0 |- a\ino)$);
        \coordinate (c\ino) at ($(p1 -| a\ino) - (a\ino) + (p0 -| a\ino)$);
        \coordinate (d\ino) at ($(p1 -| b\ino) - (b\ino) + (p0 -| b\ino)$);
      }
    \foreach \i in {a,b,c,d}
      {
        \coordinate (\i5) at ($(\i2)!1/2!(\i2 -| \i3)$);
        \coordinate (\i6) at ($(\i5 |- \i1)!1/2!(\i2 -| \i5)$);
        \coordinate (\i7) at ($(\i1 |- \i4)!1/2!(\i4)$);
        \coordinate (\i8) at ($(\i7 |- \i3)!1/2!(\i7)$);
      }
  \end{scope}
  \node [cainc] at (a6) {Pwyll Pendefig Dyfed};
  \node [cainc] at (b6) {Branwen ferch Llŷr};
  \node [cainc] at (c6) {Manawydan fab Llŷr};
  \node [cainc] at (d6) {Math fab Mathonwy};
  \node [teitlcy, yshift=-5pt] at (a8 |- a8) {Pedair Cainc};
  \node [teitlcy, yshift=-5pt] at (b8 |- b8) {Y Mabinogi};
  \node [teitlen, yshift=5pt] at (d8 |- d8) {The Four Branches};
  \node [teitlen, yshift=5pt] at (c8 |- c8) {The Mabinogion};
  % testun o https://archive.org/details/mabinogionolyfr00edwa (rhai newidiadau i wyrio camgymeriadau yn y ffurf destun); sillafu 'Manawydan' a 'Llŷr' yn ôl y BBC a gwefannau eraill
  \node (cyntaf) [cyflwyno, anchor=north west] at (a1) {Dyma Ddechreu Y Mabinogi.};
  \node [testun, below=10pt of cyntaf.south west, anchor=north west]  {\gaircyntaf{Pwyll}, pendefig Dyfed, a oedd yn arglwydd ar saith gantref Dyfed. Ar ei dro yr oedd yn Arberth, prif lys iddo, a daeth i'w fryd ac i'w feddwl fyned i hela. \dots};
  \node (ail) [cyflwyno, anchor=north east] at (b1) {Dyma yr Ail Gainc o'r Mabinogi.};
  \node [testun, below=10pt of ail.south east, anchor=north east]  {\gaircyntaf{Bendigaid} Fran, fab Llŷr, oedd frenin coronog ar yr ynys hon, a gwisgai goron ardderchog Llundain. Brynhawn-gwaith yr oedd yn Harlech \dots};%yn Ardudwy, mewn llys iddo \dots};
  \node (trydedd) [testun, anchor=south west]  at (c1) {\gaircyntaf{Wedi} darfod i'r seith-wŷr ddywedasom ni uchod gladdu pen Bendigaid Fran yn y Gwynfryn, yn Llundain, a'i wyneb ar Ffrainc, edrych a wnaeth Manawydan \dots};
  \node [cyflwyno, above=10pt of trydedd.north west, anchor=south west] {Dyma y Drydedd Gainc o'r Mabinogi.};
  \node (pedwaredd) [testun, anchor=south east] at (d1)  {\gaircyntaf{Math} fab Mathonwy oedd arglwydd ar Wynedd, a Phryderi fab Pwyll oedd arglwydd ar un cantref ar hugain yn y Deheu, sef oedd y rhai hynny \dots};%
  \node [cyflwyno, above=10pt of pedwaredd.north east, anchor=south east] {Hon yw y Bedwaredd Gainc o'r Mabinogi.};
  \foreach \i [count=\ino] in {a,...,d}
    \node [rhif] at (\i1 |- \i2) {\ino};
\end{tikzpicture}
\end{document}

uncial version 2

Posting the code for the second version exceeds the character limit. However, here is a patch which turns the code for the first version into the code for the second. (It will apply with a slight 'fuzz' due to three comment lines at the top of my versions.)

--- mabinogi-a4-RomanUncialModern.tex   2014-09-09 00:26:48.594000092 +0100
+++ mabinogi-a4-RomanUncialModern-UncialAnimals.tex 2014-09-09 00:25:04.300809028 +0100
@@ -6,14 +6,14 @@
 \usepackage[utf8x]{inputenc}
 \usepackage[T1]{fontenc}
 \usepackage[welsh]{babel}
-\usepackage{RomanUncialModern}
+\usepackage{RomanUncialModern,UncialAnimals}
 \usetikzlibrary{celtic,calc,positioning,backgrounds,fadings}
 \usepackage[scale=1]{geometry}
 \tikzfading[% t. 345
   name=fade out,
   inner color=transparent!0,
   outer color=transparent!100]
-\newcommand{\teitlymabinogi}{\rmuncial\Huge\bfseries}
+\newcommand{\teitlymabinogi}{\uncialanimals\Huge\bfseries}
 \newcommand{\teitlcaincymabinogi}{\rmuncial\LARGE\bfseries}
 \newcommand{\rhifauymabinogi}{\rmuncial\Huge\bfseries}
 \newcommand{\cyflwynocainc}{\rmuncial\large\bfseries}

Note that both uncial versions rely on unpublished packages to support the fonts. [However, I wrote those so I probably have a moral and legal right to use them if anybody does.]

12
  • It would be awesome to have .pngs rather than .jpg :)
    – Manuel
    Commented Sep 7, 2014 at 16:32
  • @Manuel I was confused by this but you are right: they are .jpgs. But I don't know why. They were .pngs when I uploaded them. I just double-checked that I hadn't accidentally saved as .jpg, but I definitely didn't. $ ls mabinogi*.png mabinogi*.jpg gives me ls: cannot access mabinogi*.jpg: No such file or directory and mabinogi-a4.png mabinogi-longs.png mabinogi.png. Why would they get turned into .jpgs and how can I stop them?
    – cfr
    Commented Sep 7, 2014 at 17:56
  • @Manuel I've tried uploading slightly smaller .pngs in case that's why they were being turned into .jpgs. Any suggestions would be welcome!
    – cfr
    Commented Sep 7, 2014 at 18:16
  • 3
    I don't want to seem disgruntled but I would like to know why this got down-voted. I understand it may not be the most brilliant answer in the world, but it does answer @MarcvanDongen's question, as far as I can tell, and there are surely worse answers on this site. (As the author of many of them, I should surely know!) In any case, down-voting is one thing, but down-voting with no explanation is another. (Or is it the work of a confused supporter of the 'Better Together' campaign who doesn't realise this is not Gaelic?!)
    – cfr
    Commented Sep 15, 2014 at 20:54
  • 1
    cfr, I'm a completely impartial observer, but maybe the downvoting is due to a case of "TMI". You have 5 pictures, rather than just 1. It makes for a very complete answer but you might consider putting the intermediate steps on a separate page and then linking to that. I think this would show off your finished work better! Commented Oct 13, 2014 at 13:09
20

[I hope my contribution fits the format.]

One of the things I like most about LaTeX is the ability to typeset really pleasing bibliographies without much effort. The most customisable solution I encountered so far is the biblatex package and I use it in all my documents where I have to cite any references.

I hope you like my styling of the list of references. The 3em omission rule was chosen because of Bringhurst's advice. To have a uniform appearance of all authors in the list I switched to lastname, firstname initials for all of them.

Here is the link to a gzipped bundle of .tex and .pdf file.

% arara: pdflatex
% arara: biber
% arara: pdflatex
\documentclass{article}
\usepackage[a5paper,hmargin=2cm]{geometry}
\pagestyle{empty}

% % %
% % % Set up a nice font
% % %

\usepackage[utf8]{inputenx}
\usepackage[T1]{fontenc}
\PassOptionsToPackage{
  expansion=true,
  protrusion=true,
  tracking=smallcaps
}{microtype}
\usepackage[
fullfamily,
opticals,
mathlf,
minionint,
loosequotes,
footnotefigures,
]{Minion Pro}
% Use cfr-lm for typewriter
\renewcommand{\ttdefault}{clmjv}

% % %
% % % Load biblatex
% % %

\usepackage[ngerman]{babel}
\usepackage[
backend=biber,
style=verbose,
autocite=footnote,
firstinits=true,
]{biblatex}
\DefineBibliographyStrings{ngerman}{andothers={et\addabbrvspace al\adddot}}
\DeclareNameAlias{default}{last-first}
\DeclareNameAlias{sortname}{last-first}
\setlength\bibitemsep{1.5\itemsep}
\renewcommand*\bibnamedash{\rule[0.48ex]{3em}{0.14ex}\space}

% % %
% % % Get colourful links
% % %

\usepackage{xcolor}
\definecolor{cred}{rgb}{.6,0,0}
\usepackage[
  unicode,
  breaklinks=true,
  colorlinks=true,
  urlcolor=cred,
]{hyperref}

% % %
% % % Create bibliography
% % %

\begin{filecontents*}{\jobname.bib}
@book{haken2005Molekuelphysik,
  title = {Molekülphysik und Quantenchemie},
  publisher = {Springer Verlag},
  year = {2005},
  author = {Haken, Hermann and Wolf, Hans Christoph},
  edition = {5},
  month = {10},
  doi = {10.1007/3-540-30315-4},
  isbn = {3-540-30314-6},
  keywords = {Molekülphysik, Quantenchemie}
}

@book{haken2004atomphysik,
  title = {Atom- und Quantenphysik},
  publisher = {Springer Verlag},
  year = {2004},
  author = {Haken, Hermann and Wolf, Hans Christoph},
  edition = {8},
  isbn = {978-3-642-62142-0},
  doi = {10.1007/978-3-642-18519-9},
  keywords = {Atomphysik, Quantenphysik}
}

@book{kittel2013festkoerperphysik,
  title = {Einführung in die Festkörperphysik},
  author = {Kittel, C. and Hunklinger, S.},
  isbn = {978-3-486-59755-4},
  year = {2013},
  publisher = {Oldenbourg Wissenschaftsverlag}
}

@book{hunklinger2007festkoerperphysik,
  title = {Festkörperphysik},
  author = {Hunklinger, S.},
  isbn = {978-3-486-57562-0},
  year = {2007},
  publisher = {Oldenbourg Wissenschaftsverlag}
}

@book{demtroeder2010experimentalphysik,
  title = {Experimentalphysik 3: Atome, Molekule Und Festkörper},
  author = {Demtröder, Wolfgang},
  isbn = {978-3-642-03910-2},
  doi = {10.1007/978-3-642-03911-9},
  year = {2010},
  publisher = {Springer}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography[title={\mdseries\itshape Literatur}]
\end{document}

enter image description here

18
+500

RE your comment on my wine bottle showcase answer:


The blue text probably needs a bit more contrast; it's not the easiest to read.

\documentclass[dvipsnames]{article}
\usepackage[margin=3cm]{geometry}
\usepackage{pstricks,psvectorian,fontspec}

\setmainfont[Mapping=tex-text,Numbers=OldStyle,Ligatures={TeX,Common,Discretionary,Rare}]{Calluna}

\definecolor{background}{RGB}{85,68,51}
\definecolor{swoosh}{RGB}{124,99,75}
\definecolor{foreground}{RGB}{221,204,170}
\definecolor{text}{RGB}{99,130,161}

\begin{document}
\begin{pspicture*}(0,9)(6,0)%
\renewcommand*{\psvectorianDefaultColor}{foreground}%
\psframe[linewidth=0.4pt,fillstyle=solid,fillcolor=
background](-1,-1)(7,10)%
\pscustom[linestyle=none,fillstyle=solid,fillcolor=swoosh]{%
\pscurve[linestyle=none](0,9)(3,3)(7,0)
\psline[linestyle=none](3,0)(0,0)\closepath}
\rput(3,5.75){\psvectorian[width=4cm]{4}}
\rput[tl](0,8.75){\psvectorian[width=6cm]{89}}
\rput[bl](0,0.25){\psvectorian[width=6cm,flip]{89}}
\rput(3,3){\Huge\textcolor{text}{Helmsman}}
\rput(3,2.15){\large\textcolor{text}{2013}}
\rput(3,1.5){\LARGE\textcolor{text}{Fiano}}
\end{pspicture*}%
\begin{pspicture*}(0,9)(6,0)%
\renewcommand*{\psvectorianDefaultColor}{swoosh}%
\psframe[linewidth=0.4pt,fillstyle=solid,fillcolor=
background](-1,-1)(7,10)%
\psframe[linewidth=2pt,linecolor=swoosh](0.25,0.25)(5.75,8.75)%
\rput[tr](5.5,8.5){\large\textcolor{text}{Helmsman}}
\rput[tr](5.5,8){\small\textcolor{text}{A taste of freedom}}
\rput[r](2.3,5.95){\psvectorian[width=1cm]{11}}
\rput[l](3.7,5.95){\psvectorian[width=1cm]{14}}
\rput(3,6){\large\textcolor{foreground}{About}}
\rput(3,5){\footnotesize\textcolor{foreground}{A light, but rich, Fiano with hints of}}
\rput(3,4.5){\footnotesize\textcolor{foreground}{coffee on the nose and a
color}}
\rput(3,4){\footnotesize\textcolor{foreground}{inspired by crema.}}
\rput(3,3.5){\footnotesize\textcolor{foreground}{So good that it doesn't make sense.}}
\rput[bl](0.5,0.5){\psvectorian[width=5cm]{71}}
\end{pspicture*}%
\end{document}

Helmsman

17
+500

I post this answer here since Marc van Dongen kindly requested it in his comment to the original answer.

enter image description here

\documentclass[dvipsnames]{article}
\usepackage[margin=3cm]{geometry}
\usepackage{tikz}
\usepackage{fontspec}
\usepackage{pgfornament}
\setmainfont{Eccentric}

\newfontfamily\myfont[Numbers=OldStyle,Ligatures=TeX]{URW Chancery L}
\newfontfamily\myfonti[Numbers=OldStyle,Ligatures=TeX]{Charis SIL}
\newfontfamily\myfontii[Numbers=OldStyle,Ligatures=TeX]{Edwardian Script ITC}

\definecolor{mycream}{RGB}{248,240,201}

\begin{document}

\begin{tikzpicture}
\node[
  text width=6cm,
  text height=9cm,
  fill=mycream
] 
  (rect) {};
\draw[line width=5pt,line cap=rect,Maroon!80] 
  ([xshift=8pt,yshift=-8pt]rect.north west) -| 
  ([xshift=-8pt,yshift=8pt]rect.south east) -| 
  ([xshift=8pt,yshift=-8pt]rect.north west) -- cycle;
\node[
  font=\color{Maroon}\fontsize{36}{40}\selectfont,
  align=center
] 
  at ([yshift=-3cm]rect.north) {CUMBRE \\[-0.3ex] ROJA};
\node[
  font=\color{Maroon}\large,
  align=center
] 
  at ([yshift=-4.6cm]rect.north) {CABERNET SAUVIGNON \\[-0.3ex] 2013};
\node[
  align=center,
  font=\myfontii\Large,
  anchor=south
]
at ([yshift=1.5cm]rect.south)
 {Viñedos Medina \\[-0.6ex]
   Manizales, Colombia \\[-0.6ex]
   Producido y Envasado por \\[-0.6ex]
   M, L \& C};
\node[
  anchor=north west,
  font=\color{Maroon}
]
  at ([xshift=10pt,yshift=-10pt]rect.north west) {\pgfornament[width=1.75cm]{61}};
\node[
  anchor=north east,
  font=\color{Maroon}
]
  at ([xshift=-10pt,yshift=-10pt]rect.north east)
 {\pgfornament[width=1.75cm,symmetry=v]{61}};
\node[
  anchor=south west,
  font=\color{Maroon}
]
  at ([xshift=10pt,yshift=10pt]rect.south west) {\pgfornament[width=1.75cm,symmetry=h]{61}};
\node[
  anchor=south east,
  font=\color{Maroon}
]
  at ([xshift=-10pt,yshift=10pt]rect.south east) {\pgfornament[width=1.75cm,symmetry=c]{61}};
\end{tikzpicture}\qquad
%
\begin{tikzpicture}
\node[
  text width=6cm,
  text height=9cm,
  fill=mycream
] 
  (rect) {};
\draw[line width=2pt,line cap=rect,Maroon!80] 
  ([xshift=0.5\pgflinewidth,yshift=-0.5\pgflinewidth]rect.north west) -| 
  ([xshift=-0.5\pgflinewidth,yshift=0.5\pgflinewidth]rect.south east) -| 
  ([xshift=0.5\pgflinewidth,yshift=-0.5\pgflinewidth]rect.north west) -- cycle;
\node[
  font=\color{Maroon}\Large,
  align=center,
  anchor=north west
] 
  at ([xshift=5pt,yshift=-5pt]rect.north west) {CUMBRE ROJA};
\node[
  align=center,
 font=\myfont\selectfont\footnotesize,
  anchor=south,
  text width=5cm,
  align=center
]
at (rect.center)
 {Vino \\ carnoso y espeso.  \\ Produce un rica impresi\'on física \\ que evoca las montañas colombianas.};
\node[
 font=\myfonti\selectfont\footnotesize,
  anchor=north,
  text width=5cm,
  align=center
]
at ([yshift=-20pt]rect.center)
 {Ideal para complementar \\ estofados de carne y \\ platos basados en ganso};
\node[
  align=center,
  font=\myfonti\selectfont\footnotesize,
  anchor=south,
  text width=5cm,
  align=center
]
at ([yshift=2pt]rect.south)
 {750\,ml \\ GRADO ALCOHÓLICO \\ 15\% vol};
\end{tikzpicture}

\end{document}
16

https://gist.github.com/holtzermann17/34912a66cdfae3a28ca8

...using code from Sticky notes image. Compiles with pdflatex.

Dunno if this is quite within bounds for copyright reasons, or if submissions are still open, but I was pretty pleased with how it turned out.

enter image description here

2
  • Fix spelling of "Siting" ? Commented Oct 26, 2014 at 16:30
  • d'oh - it's now fixed in the Gist source code version. Commented Oct 26, 2014 at 20:08
11

I know I'm to late but since Marc asked for it I post my attempt of a wine bottle design:

enter image description here

\documentclass[a4paper]{memoir}
\usepackage[table,dvipsnames]{xcolor}
\usepackage[most]{tcolorbox}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{ragged2e}
\usepackage{mathpazo}
\usepackage{PTSansCaption} 
\usepackage{rotating}
\usepackage{multirow}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{soul}
\usepackage[]{graphicx}
\usepackage{array}
\usepackage{calc}
\usepackage{tipa}
\newlength{\bls}
\setlength{\bls}{\baselineskip-\doublerulesep}

\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

\sodef\an{}{.4em}{1em plus1em}{2em plus.1em minus.1em}

\tcbset{
    bgtable/.style={
        freelance,
        frame code={\draw[] (interior.north west) -- (interior.north east);}
        center title,
               fonttitle=\bfseries\sffamily,
               watermark graphics=#1,
               watermark stretch=1.00,
               watermark opacity=0.3,
               arc=0pt,
               outer arc=0pt,
               nobeforeafter}
}
\pagestyle{empty}

\begin{document}

\noindent\begin{tcolorbox}[
bgtable=papiro.png,
    tabularx*={}{C{20mm} | L{30mm} L{10mm} @{}C{1mm} @{}L{18mm} @{}C{1mm} @{}| L{20mm}},
    watermark stretch=1.00,
    width=10.8cm,
    watermark opacity=0.8,
    top=.51cm,
    bottom=.31cm,
    ]
    %erste Linie über Tabelle
    & \multicolumn{6}{c}{}  \\[-2\bls] \cline{2-6}

    %erste Zeile
    \multicolumn{1}{r|}{\multirow{6}{*}{\includegraphics[width=.9cm]{path2456.png}~~\,}} &
    %\multicolumn{5}{c|}{\raisebox{-.7pt}{\scshape\sffamily \bfseries \so{MET 8$\cdot$\&$\cdot$30}}} & 
    \multicolumn{5}{c|}{\raisebox{-.7pt}{\scshape\sffamily \bfseries \so{MET 8$\cdot$30}}} & 
    \multicolumn{1}{l}{\multirow{7}{*}{\begin{turn}{90}\ttfamily {\footnotesize Edition: trüb}\end{turn}}} \\
        \cline{2-6}

        %%zweite Zeile
        & \multicolumn{1}{c}{\multirow{5}{*}{\parbox{3cm}{\tiny
            \RaggedRight 
                \textbf{\sffamily Trübstoffe
                }{\sffamily\textipa{[{t}{\textscr}{y}{:}{p}{\textesh}{t}{\textopeno}{f}{\textschwa}]}:} \\
            (im Met) $\rightarrow$  {\textbf 1.} Authentizitätsmerkmal, da auch
                den alten Germanen Filter völlig unbekannt waren; {\textbf 2.} Folge eines
                Fehlers beim Abfüllen des Mets in Flaschen. | Wie dem auch sei: schmecken lassen!\vfill ~
        }} 
        }  
& \multicolumn{2}{l}{} 
& \multicolumn{2}{l|}{}    
&\\
        %
        %%dritte Zeile
        &    
        & \multicolumn{1}{l}{\tiny Charge:} 
        &    
        & \multicolumn{1}{l}{\tiny Flaschennummer:}    
        &
        &\\ \cline{3-3} \cline{5-5} 

        %%vierte Zeile
        & 
        & \multicolumn{1}{|l|}{\ttfamily 03\,/\,14} 
        & 
        & \multicolumn{1}{|c|}{\ttfamily 3\,/\,15} 
        &
        &\\ \cline{3-3} \cline{5-5} 

        %%%%%%%%%%%%%%%%%%%%%%%%%%
        %%leere ``Zeile``
        \cline{3-3} \cline{5-5}& \multicolumn{5}{c|}{} & \multicolumn{1}{c}{}  \\[-\bls] \cline{3-5}
        %%%%%%%%%%%%%%%%%%%%%%%%%%
        %%fünfte Zeile
        &
        & \multicolumn{3}{|l|}{{\tiny gebraut von:} \ttfamily Schmendrich}      
        & \\
            \cline{3-5} 
            & \multicolumn{5}{r|}{\miniscule \sffamily natürlich mit Schwefel} 
            & \multicolumn{1}{r}{}\\ \cline{2-6}
   \end{tcolorbox}
\end{document}

The resulting pdf (cropped): https://dl.dropboxusercontent.com/u/57816350/Met42014.pdf

The text on the label says:

Turbidities: (in mead): 1-> authenticity feature -- the teuatons didn't knew filtration methods too. 2-> consequence of a mistake while bottling the mead. However: to relish

0

You must log in to answer this question.