kalas
15-08-2021, 22:28
Hallo an alle,
ich habe folgendes Problem: Ich will Spielkarten gestalten und – von einem professionellen Service – ausdrucken lassen. Ich bin schon recht weit, habe aber ein Problem mit den notwendigen Seitenrändern:
1) Spielkartengestaltung: Ich folge den – eindrucksvollen – Anweisungen von dexteritas in diesem Stack-Overflow-Thread (https://tex.stackexchange.com/questions/47924/creating-playing-cards-using-tikz). (Das unten stehende – mehr oder weniger – Minimalbeispiel entspricht, mit kleineren Änderungen, seinem zusammengefassten Code.)
2) Drucken: Ich will mir die Karten von einem Online-Service ausdrucken lassen. Hier stehen die Anweisungen: Gestaltungsregeln von meinspiel.de (https://www.meinspiel.de/blog/gestaltungsleitfaden-spielkarten-format-59x91-mm/). Danach ist der gestaltbare Bereich 51*83 mm, dazu kommt ein Kartenrand von 4 mm und eine Beschnittzugabe von 3 mm.
In meinem MWE (siehe unten) sind Seitengröße und die 3 Milimeter Beschnitttzugabe kein Problem (ich habe das mit dem geometry-Paket gemacht). Wenn ich allerdings noch die weiteren 4 Milimeter hinzufügen will, treten Probleme auf (die Karte ist nicht mehr zentriert, sondern verschiebt sich nach rechts unten). Dies passiert sowohl, wenn ich die Seitengröße verringere, die Margin erhöhe oder in den geometry-Optionen einen zusätzlichen Offset von 4 Milimeter einfüge).
Ich vermute, dass die Gründe irgendwo im Bereich "TikZ/PGF Settings für die Karten" des MWE liegen – aber da verlassen mich meine LaTeX-Kenntnisse. (Ich habe etwas herumprobiert, aber keinen Zufallstreffer gelandet.) Kann mir jemand weiterhelfen? (Schon jetzt: Tausend Dank!)
Herzlich
Peter
Hier ist ein Arbeitsbeispiel, das wohl nicht wirklich minimal ist (ich weiß allerdings nicht, was ich noch gefahrlos hätte entfernen können). Die Kommentare sind teils von mir, primär aber vom Coder. Zur Gestaltung der Karte muss das beigefügte (freie) Bild (oder natürlich ein anderes) eingefügt werden. (Edit: Ich bin eventuell – ganz sicher bin ich mir nicht – zu blöd, das Bild hochzuladen. Letztlich müsste aber jedes jpg-Bild im Arbeitsordner gehen; meines heißt erlkoenig-frei.jpg.)
[CODE]
%https://tex.stackexchange.com/questions/47924/creating-playing-cards-using-tikz
\documentclass{article}
\usepackage{geometry}
\geometry{
paperwidth=65mm,
paperheight=97mm,
%offset=4mm,
margin=3mm
}
\usepackage{tikz}
\usetikzlibrary{shadows}
\usepackage{fourier-orns}
\definecolor{titlebg}{cmyk}{0,0,0,1}
\definecolor{bg1}{cmyk}{0,1,1,0.07}
\definecolor{pricebg}{cmyk}{0,.22,1.00,.10}
\definecolor{contentbg}{cmyk}{0,0,0,0}
% TikZ/PGF Settings für die Karten
\pgfmathsetmacro{\cardwidth}{5.9}
\pgfmathsetmacro{\cardheight}{9.1}
\pgfmathsetmacro{\imagewidth}{\cardwidth}
\pgfmathsetmacro{\imageheight}{0.75*\cardheight}
\pgfmathsetmacro{\stripwidth}{0.7}
\pgfmathsetmacro{\strippadding}{0.2}
\pgfmathsetmacro{\textpadding}{0.1}
\pgfmathsetmacro{\titley}{\cardheight-\strippadding-1.5*\textpadding-0.5*\stripwidth}
% Formen der einzelnen Kartenelemente/-bestandteile
\def\shapeCard{(0,0) rectangle (\cardwidth,\cardheight)}
%Ohne Kasten:
%\def\shapeCard{(0,0) [draw=none] rectangle (\cardwidth,\cardheight)}
\def\shapeLeftStripLong{(\strippadding,-0.2) rectangle (\strippadding+\stripwidth,\cardheight-\strippadding-\strippadding-1)}
\def\shapeLeftStripShort{(\strippadding,\cardheigh t-\strippadding-1) rectangle (\strippadding+\stripwidth,\cardheight+0.2)}
\def\shapeRightStripShort{(\cardwidth-\stripwidth-\strippadding,\cardheight-\strippadding-1) rectangle (\cardwidth-\strippadding,\cardheight+0.2)}
\def\shapeTitleArea{(2*\strippadding+\stripwidth,\ cardheight-\strippadding) rectangle (\cardwidth-2*\strippadding-\stripwidth,\cardheight-2*\stripwidth)}
\def\shapeContentArea{(2*\strippadding+\stripwidth ,0.53*\cardheight) rectangle (\cardwidth+0.2,-0.2)}
% Stylings für die Elemente definieren
\tikzset{
% runde Ecken für die Karten
cardcorners/.style={
rounded corners=0.5cm
},
% runde Ecken für die "Fähnchen"
elementcorners/.style={
rounded corners=0.1cm
},
% Schlagschatten für die "Fähnchen"
stripshadow/.style={
drop shadow={
opacity=.5,
shadow,
color=black
}
},
% Style für die "Fähnchen"
strip/.style={
elementcorners,
stripshadow
},
% Bild für das Kartenmotiv
cardimage/.style={
path picture={
\node[below=-1.5mm] at (0.5*\cardwidth,\cardheight) {
\includegraphics[width=\imagewidth cm]{#1}
};
}
},
}
% Hintergrund der Karte
\newcommand{\cardbackground}[1]{
\draw[cardcorners, cardimage=#1] \shapeCard;
}
% Kategorie der Karte
\newcommand{\cardtype}[3]{
% First we fill the intersecting area. The \clip command does not allow options, therefore we have to use a scope to set the even odd rule.
\begin{scope}[even odd rule]
% Define a clipping path. All paths outside shapeCard will be cut because the even odd rule is set.
\clip[cardcorners] \shapeCard;
% Fill shapeLeftStripLong and shapeLeftStripShort. Since the even odd rule is set, only the card will be filled.
\fill[strip,#1] \shapeLeftStripLong node[rotate=90,above left=0.9mm,font=\normalsize] {
\color{white}\uppercase{#2}
};
\fill[strip,#1] \shapeLeftStripShort;
\end{scope}
\node at (\strippadding+\stripwidth-0.28,\cardheight-\strippadding-\strippadding-0.37) {\color{white}#3};
}
\newcommand{\cardtypeTEST}{\cardtype{bg1}{Test}{\h space{-1mm}\LARGE\bomb}}
% Titel der Karte
\newcommand{\cardtitle}[1]{
%\draw[pattern=soft crosshatch,rounded corners=0.1cm] \shapeTitleArea;
\fill[elementcorners,titlebg,opacity=.65] \shapeTitleArea;
\node[text width=3.75cm] at (0.5*\cardwidth,\titley) {
\begin{center}
\color{white}\uppercase{\normalsize #1}
\end{center}
};
}
% Inhalt der Karte
\newcommand{\cardcontent}[2]{
\begin{scope}[even odd rule]
\clip[cardcorners] \shapeCard;
\fill[elementcorners,contentbg] \shapeContentArea;
\end{scope}
\node[below right, text width=(\cardwidth-2*\strippadding-\stripwidth-2*\textpadding-0.3)*1cm] at (2*\strippadding+\stripwidth+\textpadding,0.5*\car dheight-\textpadding) {
\textit{\glqq\normalsize #1\grqq}
};
\node[below right, text width=(\cardwidth-2*\strippadding-\stripwidth-2*\textpadding-0.3)*1cm] at (2*\strippadding+\stripwidth+\textpadding,3) {
\vrule width \textwidth height 2pt \\[-2pt]
\vspace{0.2cm}
{\scriptsize #2}
};
}
% Preis der Karte
\newcommand{\cardprice}[1]{
\begin{scope}[even odd rule]
\clip[cardcorners] \shapeCard;
\fill[strip,pricebg] \shapeRightStripShort;
\end{scope}
\node at (\cardwidth-0.5*\stripwidth-\strippadding,\titley-0.1) {\color{black}#1};
}
%Nach https://tex.stackexchange.com/questions/140168/how-to-remove-a-blank-page-before-the-title-page, entfernt leere erste Seite.
\usepackage{atbegshi}% http://ctan.org/pkg/atbegshi
\AtBeginDocument{\AtBeginShipoutNext{\AtBeginShipo utDiscard}}
\begin{document}\sloppy
\centering
\pagestyle{empty}
\begin{tikzpicture}
\cardbackground{./erlkoenig-frei.jpg}
\cardtypeTEST
\cardtitle{Der Test}
\cardcontent{Tja. Was für ein verhunztes Minimalbeispiel!}{Anweisung:\\[5pt]Ziehe 2 Karten, nimm 3 Gold, lege alles ab, lauf weg …}
\cardprice{20}
\end{tikzpicture}
\end{document}
ich habe folgendes Problem: Ich will Spielkarten gestalten und – von einem professionellen Service – ausdrucken lassen. Ich bin schon recht weit, habe aber ein Problem mit den notwendigen Seitenrändern:
1) Spielkartengestaltung: Ich folge den – eindrucksvollen – Anweisungen von dexteritas in diesem Stack-Overflow-Thread (https://tex.stackexchange.com/questions/47924/creating-playing-cards-using-tikz). (Das unten stehende – mehr oder weniger – Minimalbeispiel entspricht, mit kleineren Änderungen, seinem zusammengefassten Code.)
2) Drucken: Ich will mir die Karten von einem Online-Service ausdrucken lassen. Hier stehen die Anweisungen: Gestaltungsregeln von meinspiel.de (https://www.meinspiel.de/blog/gestaltungsleitfaden-spielkarten-format-59x91-mm/). Danach ist der gestaltbare Bereich 51*83 mm, dazu kommt ein Kartenrand von 4 mm und eine Beschnittzugabe von 3 mm.
In meinem MWE (siehe unten) sind Seitengröße und die 3 Milimeter Beschnitttzugabe kein Problem (ich habe das mit dem geometry-Paket gemacht). Wenn ich allerdings noch die weiteren 4 Milimeter hinzufügen will, treten Probleme auf (die Karte ist nicht mehr zentriert, sondern verschiebt sich nach rechts unten). Dies passiert sowohl, wenn ich die Seitengröße verringere, die Margin erhöhe oder in den geometry-Optionen einen zusätzlichen Offset von 4 Milimeter einfüge).
Ich vermute, dass die Gründe irgendwo im Bereich "TikZ/PGF Settings für die Karten" des MWE liegen – aber da verlassen mich meine LaTeX-Kenntnisse. (Ich habe etwas herumprobiert, aber keinen Zufallstreffer gelandet.) Kann mir jemand weiterhelfen? (Schon jetzt: Tausend Dank!)
Herzlich
Peter
Hier ist ein Arbeitsbeispiel, das wohl nicht wirklich minimal ist (ich weiß allerdings nicht, was ich noch gefahrlos hätte entfernen können). Die Kommentare sind teils von mir, primär aber vom Coder. Zur Gestaltung der Karte muss das beigefügte (freie) Bild (oder natürlich ein anderes) eingefügt werden. (Edit: Ich bin eventuell – ganz sicher bin ich mir nicht – zu blöd, das Bild hochzuladen. Letztlich müsste aber jedes jpg-Bild im Arbeitsordner gehen; meines heißt erlkoenig-frei.jpg.)
[CODE]
%https://tex.stackexchange.com/questions/47924/creating-playing-cards-using-tikz
\documentclass{article}
\usepackage{geometry}
\geometry{
paperwidth=65mm,
paperheight=97mm,
%offset=4mm,
margin=3mm
}
\usepackage{tikz}
\usetikzlibrary{shadows}
\usepackage{fourier-orns}
\definecolor{titlebg}{cmyk}{0,0,0,1}
\definecolor{bg1}{cmyk}{0,1,1,0.07}
\definecolor{pricebg}{cmyk}{0,.22,1.00,.10}
\definecolor{contentbg}{cmyk}{0,0,0,0}
% TikZ/PGF Settings für die Karten
\pgfmathsetmacro{\cardwidth}{5.9}
\pgfmathsetmacro{\cardheight}{9.1}
\pgfmathsetmacro{\imagewidth}{\cardwidth}
\pgfmathsetmacro{\imageheight}{0.75*\cardheight}
\pgfmathsetmacro{\stripwidth}{0.7}
\pgfmathsetmacro{\strippadding}{0.2}
\pgfmathsetmacro{\textpadding}{0.1}
\pgfmathsetmacro{\titley}{\cardheight-\strippadding-1.5*\textpadding-0.5*\stripwidth}
% Formen der einzelnen Kartenelemente/-bestandteile
\def\shapeCard{(0,0) rectangle (\cardwidth,\cardheight)}
%Ohne Kasten:
%\def\shapeCard{(0,0) [draw=none] rectangle (\cardwidth,\cardheight)}
\def\shapeLeftStripLong{(\strippadding,-0.2) rectangle (\strippadding+\stripwidth,\cardheight-\strippadding-\strippadding-1)}
\def\shapeLeftStripShort{(\strippadding,\cardheigh t-\strippadding-1) rectangle (\strippadding+\stripwidth,\cardheight+0.2)}
\def\shapeRightStripShort{(\cardwidth-\stripwidth-\strippadding,\cardheight-\strippadding-1) rectangle (\cardwidth-\strippadding,\cardheight+0.2)}
\def\shapeTitleArea{(2*\strippadding+\stripwidth,\ cardheight-\strippadding) rectangle (\cardwidth-2*\strippadding-\stripwidth,\cardheight-2*\stripwidth)}
\def\shapeContentArea{(2*\strippadding+\stripwidth ,0.53*\cardheight) rectangle (\cardwidth+0.2,-0.2)}
% Stylings für die Elemente definieren
\tikzset{
% runde Ecken für die Karten
cardcorners/.style={
rounded corners=0.5cm
},
% runde Ecken für die "Fähnchen"
elementcorners/.style={
rounded corners=0.1cm
},
% Schlagschatten für die "Fähnchen"
stripshadow/.style={
drop shadow={
opacity=.5,
shadow,
color=black
}
},
% Style für die "Fähnchen"
strip/.style={
elementcorners,
stripshadow
},
% Bild für das Kartenmotiv
cardimage/.style={
path picture={
\node[below=-1.5mm] at (0.5*\cardwidth,\cardheight) {
\includegraphics[width=\imagewidth cm]{#1}
};
}
},
}
% Hintergrund der Karte
\newcommand{\cardbackground}[1]{
\draw[cardcorners, cardimage=#1] \shapeCard;
}
% Kategorie der Karte
\newcommand{\cardtype}[3]{
% First we fill the intersecting area. The \clip command does not allow options, therefore we have to use a scope to set the even odd rule.
\begin{scope}[even odd rule]
% Define a clipping path. All paths outside shapeCard will be cut because the even odd rule is set.
\clip[cardcorners] \shapeCard;
% Fill shapeLeftStripLong and shapeLeftStripShort. Since the even odd rule is set, only the card will be filled.
\fill[strip,#1] \shapeLeftStripLong node[rotate=90,above left=0.9mm,font=\normalsize] {
\color{white}\uppercase{#2}
};
\fill[strip,#1] \shapeLeftStripShort;
\end{scope}
\node at (\strippadding+\stripwidth-0.28,\cardheight-\strippadding-\strippadding-0.37) {\color{white}#3};
}
\newcommand{\cardtypeTEST}{\cardtype{bg1}{Test}{\h space{-1mm}\LARGE\bomb}}
% Titel der Karte
\newcommand{\cardtitle}[1]{
%\draw[pattern=soft crosshatch,rounded corners=0.1cm] \shapeTitleArea;
\fill[elementcorners,titlebg,opacity=.65] \shapeTitleArea;
\node[text width=3.75cm] at (0.5*\cardwidth,\titley) {
\begin{center}
\color{white}\uppercase{\normalsize #1}
\end{center}
};
}
% Inhalt der Karte
\newcommand{\cardcontent}[2]{
\begin{scope}[even odd rule]
\clip[cardcorners] \shapeCard;
\fill[elementcorners,contentbg] \shapeContentArea;
\end{scope}
\node[below right, text width=(\cardwidth-2*\strippadding-\stripwidth-2*\textpadding-0.3)*1cm] at (2*\strippadding+\stripwidth+\textpadding,0.5*\car dheight-\textpadding) {
\textit{\glqq\normalsize #1\grqq}
};
\node[below right, text width=(\cardwidth-2*\strippadding-\stripwidth-2*\textpadding-0.3)*1cm] at (2*\strippadding+\stripwidth+\textpadding,3) {
\vrule width \textwidth height 2pt \\[-2pt]
\vspace{0.2cm}
{\scriptsize #2}
};
}
% Preis der Karte
\newcommand{\cardprice}[1]{
\begin{scope}[even odd rule]
\clip[cardcorners] \shapeCard;
\fill[strip,pricebg] \shapeRightStripShort;
\end{scope}
\node at (\cardwidth-0.5*\stripwidth-\strippadding,\titley-0.1) {\color{black}#1};
}
%Nach https://tex.stackexchange.com/questions/140168/how-to-remove-a-blank-page-before-the-title-page, entfernt leere erste Seite.
\usepackage{atbegshi}% http://ctan.org/pkg/atbegshi
\AtBeginDocument{\AtBeginShipoutNext{\AtBeginShipo utDiscard}}
\begin{document}\sloppy
\centering
\pagestyle{empty}
\begin{tikzpicture}
\cardbackground{./erlkoenig-frei.jpg}
\cardtypeTEST
\cardtitle{Der Test}
\cardcontent{Tja. Was für ein verhunztes Minimalbeispiel!}{Anweisung:\\[5pt]Ziehe 2 Karten, nimm 3 Gold, lege alles ab, lauf weg …}
\cardprice{20}
\end{tikzpicture}
\end{document}