7

I want to create sheets of playing cards for a game. There isn't a known package for this, however stealing from a previous answer and deleting things until it made sense got me this far:

\documentclass{article}
\usepackage[margin=2cm]{geometry}

\newlength\cardheight
\newlength\cardwidth

\setlength\cardheight{0.25\textheight}
\setlength\cardwidth{0.4\textwidth}

\newcommand\cards[1]{%
\par\noindent
\fbox{\begin{minipage}[t][\cardheight][t]{\dimexpr\cardwidth-2\fboxsep-2\fboxrule\relax} 
\vspace{\baselineskip}
\LARGE ~ #1 
\vfill
\small ~ Cards Against Humanity %I should insert the CAH logo in my final version
\end{minipage}} %\par\bigskip%
} %


\pagestyle{empty}

\begin{document}
\centering
\cards{%
Classicist undertones.
}
\cards{%
A windmill full of corpses.
}
\cards{%
A tiny horse.
}

\end{document}

However, this gets me three cards stacked on top of one another. How can I get them to tile automatically (So it goes something like card:card:card, newrow card:card:card)? The exact number of cards that each page has horizontally and vertically doesn't matter; I just want each card to sit next to each other instead of each new one appearing on a new line.

(Feel free to abandon my code if there is a better way to do this: As I said, I just copied it from an example that was only sort of related.)

Canageek
  • 17,935

1 Answers1

8

Simply removing \par\noindent should be OK. Also, there is a spurious space in the line

\end{minipage}} %\par\bigskip%

Complete code

\documentclass{article}
\usepackage[margin=2cm]{geometry}

\newlength\cardheight
\newlength\cardwidth

\setlength\cardheight{0.25\textheight}
\setlength\cardwidth{0.4\textwidth}

\newcommand\cards[1]{%
\fbox{\begin{minipage}[t][\cardheight][t]{\dimexpr\cardwidth-2\fboxsep-2\fboxrule\relax}
\vspace{\baselineskip}
\LARGE ~ #1
\vfill
\small ~ Cards Against Humanity %I should insert the CAH logo in my final version
\end{minipage}}% there was a space here
}


\pagestyle{empty}

\begin{document}
\centering
\cards{%
Classicist undertones.
}
\cards{%
A windmill full of corpses.
}
\cards{%
A tiny horse.
}
\cards{%
One more card.
}

\end{document} 

Output:

enter image description here

You might also want a very little horizontal space between them. To achieve it, you can add \hspace{1pt} after the end of the \fbox and put a % after each \cards:

\documentclass{article}
\usepackage[margin=2cm]{geometry}

\newlength\cardheight
\newlength\cardwidth

\setlength\cardheight{0.25\textheight}
\setlength\cardwidth{0.4\textwidth}

\newcommand\cards[1]{%
\fbox{\begin{minipage}[t][\cardheight][t]{\dimexpr\cardwidth-2\fboxsep-2\fboxrule\relax}
\vspace{\baselineskip}
\LARGE ~ #1
\vfill
\small ~ Cards Against Humanity %I should insert the CAH logo in my final version
\end{minipage}}% there was a space here
\hspace{1pt}}


\pagestyle{empty}

\begin{document}
\centering
\cards{%
Classicist undertones.
}%
\cards{%
A windmill full of corpses.
}%
\cards{%
A tiny horse.
}%
\cards{%
One more card.
}%

\end{document} 

Output:

enter image description here

karlkoeller
  • 124,410