How to draw the cards of a deck?

The closest solution I found is the experimental package poker developed by Olaf Encke. This package is based on PSTricks (with all complications to run in pdflatex) further that this package is not standard and generally is not included in the Standard TeX Distributions (MaCTeX, TeXLive or MiKTeX) and it must be manually installed.

I recommend these steps:

  • Download and extract the package from MIT webpage.

  • Depending of your distribution Install manually the package. (For MiKTeX you must Create a local texmf tree, if you use a system as Linux read How do I install an individual package on a Linux system?, and read here for MaCTeX).

  • Run using the path latex->dvips->ps2pdf.

  • If you need the figures to include in others files .pdf (with pdflatex, xelatex or lualatex) then clip using

    pdfcrop --hires <file> <file.pdf>  
    

Code Example

\documentclass{article}
\usepackage{poker}
\pagestyle{empty} %No number in pages
\begin{document}

\begin{cards}
\crdAs\crdKh
\end{cards}

\begin{cards}
\crdpair{\crdKs}{\crdtenh}%
\crdflop{\crdsevd}{\crdsevc}{\crdQd}%
\crdKc\crdKd%
\end{cards}

\end{document}

Result

enter image description here


Depends what you want to do with them. If you going to enter them in a paper to describe probabilities etc, better to use a font. As of Unicode 7.0 there are codepoints for card suite. Use the Symbola free font of George Douros.

\documentclass{article}
\usepackage{fontspec}
\newfontfamily\symbola{Symbola.ttf}
\begin{document}
\Huge
\symbola
\char"1F0AB \char"1F0CF
\end{document}

Use XeLaTeX or LuaLaTeX.

enter image description here

With a unicode font you can just type "The drawn trump suit from the draw deck is a ♣ card (2♣)." and typeset the text easily.

enter image description here


Here is a solution using SVG-Cards, inkscape and PDFLaTEX/graphicx/TikZ.

I provide a Makefile :

  • to download and to extract the SVG-Cards archive (via wget and tar),

  • to extract each SVG card from svg-cards.svg (via inkscape)

  • to convert each SVG card into a PDF card (via inkscape)

  • to compile cards.tex (via pdflatex)

Steps:

  1. Copy the Makefile (note: the white spaces at beginning of lines are tabulations) and the cards.tex below.

  2. Run make to get cards.pdf

Note: if you can't use this Makefile, I provide cards.tgz. This archive contains all extracted PDF cards (needed to compile cards.tex).

enter image description here

The Makefile:

JOKERS = black_joker red_joker
LEVELS = 1 2 3 4 5 6 7 8 9 10 jack queen king
CLUBS = ${LEVELS:%=%_club}
DIAMONDS = ${LEVELS:%=%_diamond}
HEARTS = ${LEVELS:%=%_heart}
SPADES = ${LEVELS:%=%_spade}
CARDS = ${CLUBS} ${DIAMONDS} ${HEARTS} ${SPADES} ${JOKERS}
CARDS_PDF = ${CARDS:%=card-%.pdf}

all: cards.pdf

cards.pdf: cards.tex $(CARDS_PDF)
    latexmk -pdf cards.tex

card-%.pdf: card-%.svg
    inkscape --export-pdf=$@ $<

card-%.svg: SVG-cards-2.0.1/svg-cards.svg
    inkscape --export-plain-svg=$@ --export-id=${@:card-%.svg=%} --export-id-only $<

SVG-cards-2.0.1/svg-cards.svg:
    wget http://sourceforge.net/projects/svg-cards/files/SVG-cards-2.0.1.tar.gz
    tar zxvf SVG-cards-2.0.1.tar.gz

The cards.tex file:

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
  \foreach \col[count=\c] in {spade,heart,diamond,club}{
    \begin{scope}[shift={(\c*90:1.5cm)}]
      \foreach \level[count=\val] in {1,...,10,jack,queen,king}{
        \node[inner sep=0,anchor=south,rotate={40-(\val*6)}]
        at ({140-(\val*6)}:1cm)
        {\includegraphics[height=1cm]{card-\level_\col}};
      }    
    \end{scope}
  }
  \node at (-2,0) {\includegraphics[height=1cm]{card-red_joker}};
  \node at (2,0)  {\includegraphics[height=1cm]{card-black_joker}};
\end{tikzpicture}
\end{document}

Tags:

Tikz Pgf