What's the best way to make a lot of foldable place cards like the following in LaTeX:
I want to be able to specify the size of the card. They should be printed in a space saving way, such that I can cut them out easily after printing.
cards
What's the best way to make a lot of foldable place cards like the following in LaTeX:
I want to be able to specify the size of the card. They should be printed in a space saving way, such that I can cut them out easily after printing.
How about this 15-minute mockup (it's far from perfect, but quite ready to be turned into a reusable command):
\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}
\usepackage{pifont}
\begin{document}
\pgfmathsetmacro{\cardwidth}{5}
\pgfmathsetmacro{\cardheight}{8}
\newcommand{\stripcolor}{lime}
\pgfmathsetmacro{\stripwidth}{0.7}
\pgfmathsetmacro{\strippadding}{0.1}
\newcommand{\striptext}{INTER ARMA \ding{74}}
\pgfmathsetmacro{\textpadding}{0.3}
\newcommand{\topcaption}{LATIN}
\newcommand{\topcontent}{\textit{''Inter Arma Enim Silent Leges''}}
\newcommand{\bottomcaption}{Inter Arma}
\newcommand{\bottomcontent}{In times of war, the law falls silent.\\ \tikz{\fill[even odd rule] (0,0) circle (0.3) (-0.2,-0.2) rectangle (0.2,0.2);}}
\pgfmathsetmacro{\ruleheight}{0.3}
\begin{tikzpicture}
\draw[rounded corners=0.2cm] (0,0) rectangle (\cardwidth,\cardheight);
\fill[\stripcolor,rounded corners=0.1cm] (\strippadding,\strippadding) rectangle (\strippadding+\stripwidth,\cardheight-\strippadding) node[rotate=90,above left,black,font=\LARGE] {\striptext};
\node[text width=(\cardwidth-\strippadding-\stripwidth-2*\textpadding)*1cm,below right] at (\strippadding+\stripwidth+\textpadding,\cardheight-\textpadding)
{\LARGE \topcaption}\\
\topcontent\\
\tikz{\fill (0,0) rectangle (\cardwidth-\strippadding-\stripwidth-2*\textpadding,\ruleheight);}\\
{\LARGE \bottomcaption}\\
\bottomcontent\\
};
\end{tikzpicture}
\end{document}
I used the pifont
package for the star symbol (\ding{74}
). It has also the other symbols depicted in your photograph, have a look here.
Edit 1: Now with a rotated symbol, and more options are set with keys:
\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}
\usepackage{pifont}
\usepackage{graphicx}
\begin{document}
\pgfmathsetmacro{\cardroundingradius}{4mm}
\pgfmathsetmacro{\striproundingradius}{3mm}
\pgfmathsetmacro{\cardwidth}{5}
\pgfmathsetmacro{\cardheight}{8}
\newcommand{\stripcolor}{cyan}
\pgfmathsetmacro{\stripwidth}{1.2}
\pgfmathsetmacro{\strippadding}{0.1}
\newcommand{\striptext}{INTER ARMA \rotatebox[origin=c]{-90}{\ding{49}}}
\pgfmathsetmacro{\textpadding}{0.3}
\newcommand{\topcaption}{LATIN}
\newcommand{\topcontent}{\textit{''Inter Arma Enim Silent Leges''}}
\newcommand{\bottomcaption}{Inter Arma}
\newcommand{\bottomcontent}{In times of war, the law falls silent.\\ \tikz{\fill[even odd rule] (0,0) circle (0.3) (-0.2,-0.2) rectangle (0.2,0.2);}}
\pgfmathsetmacro{\ruleheight}{0.1}
\newcommand{\stripfontsize}{\Huge}
\newcommand{\captionfontsize}{\LARGE}
\newcommand{\textfontsize}{\large}
\begin{tikzpicture}
\draw[rounded corners=\cardroundingradius] (0,0) rectangle (\cardwidth,\cardheight);
\fill[\stripcolor,rounded corners=\striproundingradius] (\strippadding,\strippadding) rectangle (\strippadding+\stripwidth,\cardheight-\strippadding) node[rotate=90,above left,black,font=\stripfontsize] {\striptext};
\node[text width=(\cardwidth-\strippadding-\stripwidth-2*\textpadding)*1cm,below right,inner sep=0] at (\strippadding+\stripwidth+\textpadding,\cardheight-\textpadding)
{ {\captionfontsize \topcaption}\\
{\textfontsize \topcontent}\\
\tikz{\fill (0,0) rectangle (\cardwidth-\strippadding-\stripwidth-2*\textpadding,\ruleheight);}\\
{\captionfontsize \bottomcaption}\\
{\textfontsize \bottomcontent}\\
};
\end{tikzpicture}
\end{document}
If the rotated symbol is too big, you may add some "don't size" modifier like \large
inside the rotatebox
before the \ding{n}
.
For the first two queries, I have some solution. The third query... I did not understand. Is it that you can't change the paper size or you are asking whether you should change it? You can change the paper size using geometry
package.
\usepackage[paperwidth=6.3cm,paperheight=8.8cm,margin=15mm]{geometry}
First two queries have been solved here.
\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}
\usepackage{pifont}
\usepackage{anttor}
\usepackage[normalem]{ulem}
\usepackage[utf8]{inputenc}
\renewcommand\ULthickness{4pt}
\setlength \ULdepth{6pt}
\begin{document}
\pgfmathsetmacro{\cardwidth}{5}
\pgfmathsetmacro{\cardheight}{8}
\pgfmathsetmacro{\stripwidth}{0.6}
\pgfmathsetmacro{\strippadding}{0.1}
\pgfmathsetmacro{\textpadding}{0.1}
\pgfmathsetmacro{\ruleheight}{0.15}
\begin{tikzpicture}
\draw[rounded corners=0.2cm] (0,0) rectangle (\cardwidth,\cardheight);
\fill[lime,rounded corners=0.1cm] (\strippadding,\strippadding) rectangle (\strippadding+\stripwidth,\cardheight-\strippadding) node[rotate=90,above left,black,font=\large] {INTER ARMA \rotatebox[origin=c]{-90}{\ding{52}}};
\node[text width=(\cardwidth-\strippadding-\stripwidth-2*\textpadding-0.3)*1cm,below right] at (\strippadding+\stripwidth+\textpadding,\cardheight-\textpadding) {
{\Large KEEPER}\\
\vspace{0.15cm}
{\scriptsize Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\}%<------modified here
\vspace{0.25cm}
{ {\large \uline{Inter Arma\hfill} }}\\ % <------modified here
% \tikz{\fill (0,0) rectangle (\cardwidth-\strippadding-\stripwidth-2*\textpadding-0.3,\ruleheight);}\\
\vspace{0.2cm}
{\scriptsize Lorem ipsum dolor sit amet, consectetur adipisicing elit.\\[5pt] % <------modified here
Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\} % <------Give a line break here
\vfill };
\end{tikzpicture}
\end{document}
I have used the package ulem
to put an underline. You can change underline thickness and depth by appropriately changing the values in
\renewcommand\ULthickness{4pt}
\setlength \ULdepth{5pt}
Disclaimer: This solution holds good if that underline need not come at the center of the card.
Edit: As it is requested to accommodate underline for two lines Following can be used:
\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}
\usepackage{pifont}
\usepackage{anttor}
\usepackage[utf8]{inputenc}
\begin{document}
\pgfmathsetmacro{\cardwidth}{5}
\pgfmathsetmacro{\cardheight}{8}
\pgfmathsetmacro{\stripwidth}{0.6}
\pgfmathsetmacro{\strippadding}{0.1}
\pgfmathsetmacro{\textpadding}{0.1}
\pgfmathsetmacro{\ruleheight}{0.15}
\begin{tikzpicture}
\draw[rounded corners=0.2cm] (0,0) rectangle (\cardwidth,\cardheight);
\fill[lime,rounded corners=0.1cm] (\strippadding,\strippadding) rectangle (\strippadding+\stripwidth,\cardheight-\strippadding) node[rotate=90,above left,black,font=\large] {INTER ARMA \rotatebox[origin=c]{-90}{\ding{52}}};
\node[text width=(\cardwidth-\strippadding-\stripwidth-2*\textpadding-0.3)*1cm,below right] at (\strippadding+\stripwidth+\textpadding,\cardheight-\textpadding) {
{\Large KEEPER}\\
\vspace{0.15cm}
{\scriptsize Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\}%<------modified here
\vspace{0.25cm}
{{\large {Inter Arma going into two lines\hfill} }} \\[-9pt]% <------modified here
\vrule width \textwidth height 3pt \\[-3pt] % <------modified here
% \tikz{\fill (0,0) rectangle (\cardwidth-\strippadding-\stripwidth-2*\textpadding-0.3,\ruleheight);}\\
\vspace{0.2cm}
{\scriptsize Lorem ipsum dolor sit amet, consectetur adipisicing elit.\\[5pt] %
<------modified here
Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\} % <------Give a line break here
\vfill };
\end{tikzpicture}
\end{document}
Best Answer
If you have a large number of cards to organise and produce, the labels package may be useful for this. In particular, it will allow you to:
Lay out the cards as labels, appropriately sized and placed for printing and cutting;
Create a command to format a single card; and
Process a list of names to produce all the cards