Fehler beim Laden eines Bildes mit dem Namen „ltxkey“

Fehler beim Laden eines Bildes mit dem Namen „ltxkey“

Ich bin neu bei TeX und LaTeX und mein erstes Projekt ist sehr ehrgeizig. Der Plan ist, damit ltxkeysDatenbankeinträge für das D&D-Rollenspiel zu definieren und dann LaTeX-Vorlagen zu haben, um Charakterblätter, Monsterstatistiken usw. hübsch zu drucken. Ich habe gerade erst angefangen und hatte einige Erfolge, aber ich habe Probleme mit dieser Testdatei:

\documentclass[letterpaper,landscape]{article}
\pagestyle{empty}
\usepackage[T1]{fontenc}%Use a modern font encoding
\usepackage[sfdefault]{noto}
\usepackage[margin=.5in,nohead,nofoot]{geometry}
\usepackage{graphbox}% Loads graphicx automagically.
\usepackage{anyfontsize}
\usepackage{textpos}
\usepackage[tracingkeys]{ltxkeys}

\setlength{\TPHorizModule}{1in}
\setlength{\TPVertModule}{1in}

\makeatletter  
% Monster Tent Graphic is 300 DPI with:
% * image size of (600x2250 pixels) 2in x 7.5in
% * monster title of 630x62 pixels (2.1in x .207in)
% Use a Data Key: \DnD{WUMPUS}{image}
\newcommand{\DnD}[2]
  {%
    {%
      \def\c{#1}
      \def\v{#2}
      \def\t {\csname DnD@KeyFam@\c \endcsname}%
      \csname cmd\t @\c @\v \endcsname%
    }%
  }

% Define a Creature Data Key:
% \DnDNewCreature{WUMPUS}{title="Grand Wumpus", image=..."}
\newcommand{\DnD@NewCreature}[2]%
  {%
    \ltxkeys@declarekeys[DnD@Creature]{#1}%
      { cmd/\needvalue{title}//;
        cmd/\needvalue{image}//;
      }%
    \expandafter\def\csname DnD@KeyFam@#1\endcsname{DnD@Creature}%
    \ltxkeys@setkeys[DnD@Creature]{#1}{#2}%
  }

\def\gimg {img/MM167-Goblin-BW.png}
\DnD@NewCreature{GoblinBoss}{title=Goblin Boss,image=img/MM167-Goblin-BW.png}

\begin{document}%
\def\m {GoblinBoss}%
\begin{figure}[t]%
  \begin{minipage}{.25\textwidth}%
    % \includegraphics[smash=cc,width=2in,totalheight=2.5in,keepaspectratio,angle=180,hshift=-1.25in,vshift=-2.1in]{\DnD{GoblinBoss}{image}}
    \includegraphics[smash=cc,width=2in,totalheight=2.5in,keepaspectratio,angle=180,hshift=-1.25in,vshift=-2.1in]{img/MM167-Goblin-BW.png}%
    \includegraphics[smash=cr,totalheight=7.5in,width=2.5in]{img/Monster-Tent.png}%
    \begin{textblock}{2.1}(.2,-.42)%
      \rotatebox[origin=c]{180}
        {\centerline{\fontsize{16}{16}\textbf{\DnD{GoblinBoss}{title}}}}  
    \end{textblock}
  \end{minipage}%
\end{figure}
\end{document}
\makeatother

So wie es ist, rendert die Datei das Monsterzeltbild korrekt und platziert das gewünschte Bild und den Titel richtig. Dies liegt jedoch nur daran, dass der \includegraphicsBefehl den wörtlichen Text des Pfads zur zu ladenden Datei verwendet, anstatt ihn aus einer zu ziehen ltxkey. Wenn der erste auskommentierte \includegraphicsBefehl anstelle des zweiten verwendet wird, erhalte ich innerhalb von includegraphics einen obskuren Fehler, dass eine vorhanden ist "Illegal parameter number in definition of \filename@base".

Wenn ich anstelle von ltxkeyverwende, \gimgdas gerade als Bilddateipfad definiert ist, funktioniert es. Wenn ich versuche, es \gimgals {\DnD{GoblinBoss}{image}}„Code hier eingeben“ zu definieren, schlägt es erneut fehl. Wenn ich einfach den Wert ausdrucke, \DnD{GoblinBoss}{image}scheint er korrekt zu sein. Für jede Hilfe wäre ich dankbar.

Antwort1

Sie müssen den Befehl so definieren, dass er sich in den Bilddateinamen erweitert.

\documentclass[letterpaper,landscape]{article}
\pagestyle{empty}
\usepackage[T1]{fontenc}%Use a modern font encoding
\usepackage[sfdefault]{noto}
\usepackage[margin=.5in,nohead,nofoot]{geometry}
\usepackage{graphbox}% Loads graphicx automagically.
\usepackage{anyfontsize}
\usepackage{textpos}
\usepackage[tracingkeys]{ltxkeys}

\setlength{\TPHorizModule}{1in}
\setlength{\TPVertModule}{1in}

\makeatletter  
% Monster Tent Graphic is 300 DPI with:
% * image size of (600x2250 pixels) 2in x 7.5in
% * monster title of 630x62 pixels (2.1in x .207in)
% Use a Data Key: \DnD{WUMPUS}{image}
\newcommand{\badDnD}[2]
  {%
    {%non expandable group start
      \def\c{#1} % non expandable assignment and space token
      \def\v{#2} % non expandable assignment and space token
      \def\t {\csname DnD@KeyFam@\c \endcsname}% non expandable assignment
      \csname cmd\t @\c @\v \endcsname%
    }%non expandable group end
  }
\newcommand{\DnD}[2]{\csname cmd\csname DnD@KeyFam@#1\endcsname @#1@#2\endcsname}

% Define a Creature Data Key:
% \DnDNewCreature{WUMPUS}{title="Grand Wumpus", image=..."}
\newcommand{\DnD@NewCreature}[2]%
  {%
    \ltxkeys@declarekeys[DnD@Creature]{#1}%
      { cmd/\needvalue{title}//;
        cmd/\needvalue{image}//;
      }%
    \expandafter\def\csname DnD@KeyFam@#1\endcsname{DnD@Creature}%
    \ltxkeys@setkeys[DnD@Creature]{#1}{#2}%
  }

\def\gimg {img/MM167-Goblin-BW.png}
\DnD@NewCreature{GoblinBoss}{title=Goblin Boss,image=example-image.png}

\begin{document}%
\def\m {GoblinBoss}%
\begin{figure}[t]%
  \begin{minipage}{.25\textwidth}%
     \includegraphics[smash=cc,width=2in,totalheight=2.5in,keepaspectratio,angle=180,hshift=-1.25in,vshift=-2.1in]{\DnD{GoblinBoss}{image}}
    \includegraphics[smash=cc,width=2in,totalheight=2.5in,keepaspectratio,angle=180,hshift=-1.25in,vshift=-2.1in]{example-image-a.png}%
    \includegraphics[smash=cr,totalheight=7.5in,width=2.5in]{example-image-b.png}%
    \begin{textblock}{2.1}(.2,-.42)%
      \rotatebox[origin=c]{180}
        {\centerline{\fontsize{16}{16}\textbf{\DnD{GoblinBoss}{title}}}}  
    \end{textblock}
  \end{minipage}%
\end{figure}
\end{document}
\makeatother this is never executed

Bildbeschreibung hier eingeben

verwandte Informationen