133

I'm trying to convert some friends to LaTeX and have come up against a (to me) unexpected objection: there are too few packages that support "fun" (really), to which I responded:

enter image description here

I know there are examples of clever and creative (and a bit silly) output coaxed out of otherwise quite sertious packages like TikZ, but I also wonder: Are there other packages, like Hanno Rein's coffee package, that demonstrate LaTeX's lighter side?

orome
  • 10,459
  • 10
    You sure know: http://tex.stackexchange.com/questions/29402/how-do-i-make-my-document-look-like-it-was-written-by-a-cthulhu-worshipping-madm – topskip Aug 18 '12 at 07:49
  • 15
  • 28
    The nicest thing about LaTeX is that you don't have to see the actual Comic Sans text until you compile. – percusse Aug 18 '12 at 20:22
  • 2
    Does games count as fun? There are several packages for typesetting games such as chess and othello, as well as cross words. See the TeX catalogue: http://texcatalogue.sarovar.org/bytopic.html#games Edit: Also, bbcard for bullshit bingo and baseball cards. – Torbjørn T. Aug 18 '12 at 20:42
  • 1
    Good question, but I'd like a bit of clarification as to what counts as "fun". To me, "fun" is interactive. It's hard to imagine any document preparation system where "fun" can be an integral part of creating a document. So I'm guessing that's not what you mean. Then you get things that I'd classify as between "clever" and "witty". That's more likely with TeX and is demonstrated in some of the answers below. But that still doesn't quite feel like "fun". Can you point to some things in some other system that would give us examples of what your friends are looking for? – Andrew Stacey Aug 22 '12 at 08:19
  • 1
    The coffee package is actually perfect for marking draft documents (OK, it is a little too manual and uses too much colored ink). I'd love if there were more options for that use case. – Benjamin Bannier Dec 18 '13 at 09:48
  • 2
    "Text Fireworks": http://tex.stackexchange.com/questions/219349/make-fireworks-with-only-text/219362#219362 – Steven B. Segletes Mar 17 '15 at 16:20
  • 1
    Sliding puzzles are quite interactive: https://tex.stackexchange.com/a/444956 – AlexG Sep 18 '18 at 09:07

17 Answers17

68

Not a package, but could be packaged pretty easily: beamerduck!

The following presentation will show a progress by having a duck walk from left side of the screen to the right side, saying annoying things every once a while. You can of course replace the duck picture by any other animal (I am thinking about a man carrying a sack on his back. On specific slides, the ones I plan to spend more time on, I want to have him drop the sack to the ground and rest).

\documentclass{beamer}
\usepackage{tikz}
\usepackage{lipsum}

% Duck stuff

\usetikzlibrary{shapes.callouts, calc}

% Parameters: file, number of pages, width
\newcommand\DuckSetup[3]{%
\foreach \n in {1,...,#2}{
\pgfdeclareimage[width=#3,page=\n]{duck\n}{#1}}
\def\ducknumberofpages{#2}}

\DuckSetup{duck}{2}{1cm} % "duck" is a pdf file with 2 pages that will 
                         % alternate as they move from slide to slide.

\newcommand\duck{%
\tikz[remember picture]{\node (duck) {%
\pgfmathparse{int(mod(\thepage-1,\ducknumberofpages)+1)}%
\pgfuseimage{duck\pgfmathresult}};}
}

\setbeamertemplate{footline}
{%
\pgfmathparse{(\thepage-1)*\paperwidth/\insertdocumentendpage}%
\hspace{\pgfmathresult pt}%
\duck
}

\setbeamertemplate{navigation symbols}{}

\newcommand<>{\ducksez}[1]{%
\uncover#2{\tikz[remember picture,overlay]{\node[ellipse callout, draw, fill=white, overlay,
callout absolute pointer={($ (duck.north east) + (1,0) $)}] at ($ (duck.north east) + (3,1)
$) {#1};}}}

\newcommand<>{\ducksezrev}[1]{%
\uncover#2{\tikz[remember picture,overlay]{\node[ellipse callout, draw, fill=white, overlay,
callout absolute pointer={(duck.north west)}] at ($ (duck.north west) + (-3,1) $) {#1};}}}
% End of duck stuff

\author{Egon Ipse}
\title{The Importance of Being a Duck}
\begin{document}
\begin{frame}
   \maketitle
   \ducksez<2>{Hello!}
\end{frame}
\begin{frame}
   \frametitle{Purpose}
   \begin{enumerate}[<+->]
      \item Purpose of Ducks
      \item Purpose of Duckweed
   \end{enumerate}
   \ducksez<3>{Quack!}
\end{frame}

\foreach \i in {1,...,10}{
\begin{frame}
   \frametitle{Frame \i}
   \lipsum[\i]
   \ifnum \i=5 \ducksez{Five!} \fi
   \ifnum \i=9 \ducksezrev{Nine!} \fi
\end{frame}
}

\begin{frame}
   \frametitle{The last frame}
   \ducksezrev{See Ya!}
\end{frame}

\end{document}

A "duck" presentation

Jan Hlavacek
  • 19,242
40

Hope this counts. Cow font anyone :-)? It's part of TL Contrib.

http://www.tug.org/TUGboat/tb27-1/tb86hoekwater-cows.pdf

Ingo
  • 20,035
  • 3
    So now, not only that you can make your documents coffe-stained, you can as well pretend you were pretty bored during your manipulation with the document, and you drew few cows on the paper margins... – yo' Aug 24 '12 at 11:11
  • 1
    My son loves cows, this is totally awesome! For all others which want to use it with LaTeX, you may find this: http://newsgroups.derkeiler.com/Archive/Comp/comp.text.tex/2009-06/msg00919.html helpful. – math Oct 04 '12 at 09:03
  • 1
    TE Question regarding installation issues – Carel Sep 14 '16 at 10:21
30

I like the chickenize package, which can do a lot of useless things, among others it can print in rainbowcolors. See yourself, works only with Lua(La)TeX.

enter image description here

Torbjørn T.
  • 206,688
Keks Dose
  • 30,892
29

The search "ducks are fun" yields 15,600,000 hits on google - so it seems evident that ducks are fun.

And latex can do ducks with the brand new tikzducks package (of which I am the author): https://github.com/samcarter/tikzducks and https://www.ctan.org/pkg/tikzducks

A small example:

\documentclass{article}
\usepackage{tikzducks}

\begin{document}
\begin{tikzpicture}
    \duck[body=yellow!50!brown!40!white,
        crazyhair=gray!50!white,
        eyebrow,
        glasses=brown!70!black,
        book=\scalebox{0.2}{$E=mc^2$},
        bookcolour=red!20!brown]
\end{tikzpicture}
\end{document}

enter image description here


There is also the younger sibling of the tikzducks, the tikzmarmots (https://github.com/samcarter/tikzmarmots and https://www.ctan.org/pkg/tikzmarmots)

enter image description here


And even more family members are on the way: the tikzlings (https://github.com/samcarter/tikzlings)

enter image description here

Skillmon
  • 60,462
26

What about Peter Wilson's sudokubundle? You can print, create and SOLVE! sudokus.

Tobi
  • 56,353
Ignasi
  • 136,588
26

Well, there's always the package skull, which makes available a skull symbol for you to use in math mode. Fun, and of course extremely useful!

Werner
  • 603,163
22

One of my students has taught himself TeX programming by developing:

In my opinion this is the most strange thing one can possibly do just for fun!

(But I am biased, of course :-)

From the package readme:

Let's say we want to program our document in C on top of TeX. Then there would be the need to interpret the C semantics. Basically we would have to write a compiler for C in TeX. Not a very promising future, if you start this. But, we can use a normal C compiler to compile the C code to some simple platform. Like AVRs Atmega. Since I have other things to do than writing an AVR Emulator in TeX, here it is!

Actually, I even considered using this (!). In one of my lectures, I present lots of small AVR programs on beamer slides together with their "output" on a specific device with some LEDs and a 7 seg display. I already have been using LaTeX macros to typeset the status of the LED array and the 7 seg display, so the interpreter could, given the binary code, automatically derive the parameters for these macros. A special listings environment could automatically invoke the C-compiler (via \write18) to generate the respective binary code. The result would be truly "self-contained" slides: Whenever I change the given example code, the typesetting of the "output" would automatically be updated.

However, other deadlines were approaching, so in the end I dropped the idea.

Daniel
  • 37,517
19

You can have fun drawing Feynman diagrams with the feyn package... or is that just me?

User 17670
  • 4,722
  • 3
    I think that this is more fun-ctional than fun. I think the aim here is "frivolous and playful". – Niel de Beaudrap Aug 18 '12 at 21:12
  • 1
    Can it not be both fun and functional? I also realised that my answer was, perhaps, not exactly what the OP was looking for, but I thought it was a useful addition (and so did someone else). – User 17670 Aug 18 '12 at 21:45
  • My rule of thumb is this: of the number of documents it's used for, how many are using it to accomplish anything more than decoration or nonsense? I would imagine, at least, that the functional:fun ratio of feyn is quite high. – Niel de Beaudrap Aug 18 '12 at 22:27
17

I like the Tower of Hanoi, classical algorithm problem, illustrated and computed, via LaTex.

Tower of Hanoi in LaTex

You can also have the Simpsons family Demo here

You know what would be cool? A package for torn paper!

14

run texdoc pst-fun, it shows some funny macros

13

Since @samcarter has mentioned her tikzducks package, I thought that, perhaps, I could cite my halloweenmath package as well.

GuM
  • 21,558
  • Please add some images from the package! I'll also add the package here: https://tex.meta.stackexchange.com/q/1721/101651! – CarLaTeX Aug 06 '17 at 06:36
13

With a lack of confidence, I present my own. However, it has not been bundled into a package. :-D

7

After @samcarter and @GuM presented their work, I present you my ducksay and duckuments packages:

\documentclass[border=2mm,preview]{standalone}

\usepackage{ducksay}[2018/09/21]
\DucksayOptions
  {
    ,arg=box
    ,vpad=1
  }

\usepackage{duckuments}
\usepackage{microtype}

\usepackage[]{graphicx}

\AddAnimal{marmot}
{  \
    \   %%% /////*%%%
     \  %///////////%
        //////////////
      /////%%////%%////
     .//((///(%%///((///
     ///((/,,(%%,,/((///
    //////,,%,,,(,,//////
    //////////*//////////
   .////////,,,,,/////////
   //%%#/,,,,,,,**/,//%%//
   /#%%%%,,.....,**/#%%%%/
   //%%%%/,.....,**(#%%%%/
   //(%%%(*,,,,,**/##%%%//
   ///,%%,/******///#%,///
    //,,,,,//////((,,,,///   %%
    ///,,,,,,,,,,,,,,,///%%%%%
     /////,,,,,,,,,*////%%%,
       ////////////////
     %%%%%%(//////(%%%%%} 

\begin{document}
\duckthink[marmot]{\includegraphics{example-image-duck}}
\ducksay[wd=20,msg-align=j,msg=\normalfont]{\blindduck}
\end{document}

enter image description here

Skillmon
  • 60,462
6

Well, as you can see in some of the other answers, there are a lot of font packages out there with what some may call a questionable amount of uses.

A lot of the fonts mentioned in the other answer, and some other "silly" fonts are grouped under the The font-novelty topic on CTAN.

Not all fonts that can be considered "just for fun" or "silly" are listed under font-novelty, though. Here is some "fun" stuff outside of font-novelty :

  • The font-invented topic on CTAN lists fonts for fictional/invented languages, it includes packages for Klingon and several of J.R.R. Tolkien's Middle-Earth alphabets. There are also typesetting support packages for some of these languages listed under the CTAN's lang-invented topic.

P.S. I intended to post more links while typing this up, but SX won't let me post more than two links because I'm still a greenhorn over here. I'm planning to update this answer once I rack up some more reputation :)

Blah.NET
  • 1
  • 1
  • 3
  • 1
    While the language/usage might be fictional but they are proper fonts. So it doesn't really classify as fun I would say. Besides they are also in TeX-SX logo so known to people here pretty much. – percusse Mar 17 '15 at 14:26
6

enter image description hereOne of my favourite "fun" packages is the typewriter package, the one mimicking a party working mechanical typewriter.

https://ctan.math.illinois.edu/macros/luatex/latex/typewriter/typewriter-guide.pdf

5

For lobsters fans:

LobLib is a TeX package for creating lobster themed documents and inserting a wide range of lobster images into papers.

https://github.com/bae43/LobLib/

gondolier
  • 243
2

Not really a fun package, because it's most likely the best ever invented drawing package for LaTeX, but here is pxpic:

\documentclass[border=3.14]{standalone}

\usepackage{pxpic}

\begin{document} \pxpic[colours=r=green!60!black,skip=.,size=3.14pt,t] { {.....rrrrrrr} {....rrrrrrrrr} {....rrrrrrrr} {....rrr} {....rrr} {....rrrrrrr.....r...r....r} {....rrrrrrrr...rrr.rrr..rrr..rr} {....rrrrrrr....rrr.rrr..rrrrrrrr} {....rrr........rrrrrrr..rrrrrrrrr} {....rrr........rrrrrrr..rrrrrrrrr} {....rrr.........rrrrr...rrr...rrr} {....rrr.................rrr...rrr} {.....r...................r....rrr} {...............................r} {} {..rrrrr......................r} {.rrrrrrr....................rrr} {rrrrrrrrr...................rrr} {rrr...rrrr..................rrr} {rrrrrrrrrr..................rrr} {rrrrrrrrr...................rrr} {rrrrrrrr....................rrr} {rrr.......rrrrr.......rrr...rrr...r.....rrrrrr.......rrr......rrrr} {rrr......rrrrrrr....rrrrrr..rrr.rrrr...rrrrrrrr.....rrrrr....rrrrrr} {rrr......rrrrrrr...rrrrrr...rrrrrrr....rrrrrrrr....rrrrrrr..rrrrrrrr} {rrr.....rrrr..rrr..rrr......rrrrrr.....rrr..rrr....rrr..rrr.rrr..rrr} {rrr.....rrr...rrr..rrr......rrrrrrr....rrr..rrrr...rrr..rrr.rrrrrrrr} {rrr.....rrr...rrr..rrr......rrr.rrrr...rrr.rrrrr...rrr..rrr.rrrrrrr} {rrrr....rrrrrrrrr..rrrrrr...rrr..rrrr..rrrrrrrrr...rrrrrrrr.rrrrrr} {.rr......rrrrrrrrr.rrrrrrr..rrr...rrr..rrrrrrrrr...rrrrrrrr.rrr} {..........rrrrrrrr..rrrrr...rrr....r....rrrr..rrr...rrrrrrr..rrrrr} {................r............r.................r.......rrr...rrrrrr} {.....................................................rrrrr....rrrrr} {...................................................rrrrrr........r} {..................................................rrrrrr} {...................................................rrr} } \llap {% Created with \pxpiclogo \raise1ex\pxpic [ colours= { 1=[HTML]{E4E4E4},2=[HTML]{C8C8C8},3=[HTML]{ADADAD} ,4=[HTML]{919191},5=[HTML]{767676},6=[HTML]{555555} ,7=[HTML]{373737},8=[HTML]{121212},9=[HTML]{000000} } ,skip=. ,size=0.05pt ] { {.................1235678765431} {..............1369999999999999742} {............14999999999999999999962} {...........49999974211....12359999951} {.........16999942.............13799983} {........2899951..................389994} {.......399972.....................169995} {......299971........................59994} {.....189961..........................49993} {.....69971.....233333333221...........59992} {....39992......499999999999841........17997} {...18994.......4999999999999993........29993} {...49971.......49999999999999993........49981} {..18993........499999999999999981.......19993} {..39981........49999.....14999993........4997} {..6994.........49999.......299995........29992} {.19992.........49999........79997.........7994} {.29991.........49999........59999.........4996} {.3997..........49999........59997.........29991} {.4995..........49999.......189995.........19991} {.5994..........49999.......499993.........19992} {.6993..........49999....12599996...........9992} {.7993..........49999999999999971...........9993} {.7993..........4999999999999961............9993} {.6993..........49999999999993..............9992} {.5994..........49999999999994.............19992} {.4995..........49999....599991............19991} {.3997..........49999....199995............29991} {.29991.........49999.....499992...........4997} {.19993.........49999.....189997...........6994} {..6995.........49999......399993.........19992} {..39991........49999.......799981........49991} {..19994........49999.......299995.......18994} {...49991.......49999........699992......49991} {...18995.......49999........299996.....29995} {....39993......49999.........599993...169981} {.....69992.....47777.........1777771..59993} {.....189982..........................49995} {......299982........................599961} {.......399993.....................1699961} {........2999962..................3999961} {.........16999952.............13799994} {..........149999974211....12359999972} {............15999999999999999999973} {..............1369999999999999952} {.................12356787654321} }% } \end{document}

enter image description here

(no real trademarks apply)

Skillmon
  • 60,462