
私は TeX と LaTeX の初心者で、最初のプロジェクトは非常に野心的なものです。計画では、 を使用してltxkeys
D&D ロール プレイング ゲームのデータベース エントリを定義し、LaTeX テンプレートを使用してキャラクター シートやモンスターのステータスなどをきれいに印刷します。始めたばかりですが、ある程度成功していますが、次のテスト ファイルで問題が発生しています。
\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
現状では、ファイルはモンスター テント画像を正しくレンダリングし、目的の画像とタイトルを正しく配置しますが、これは、\includegraphics
コマンドが から取り出すのではなく、ロードするファイルへのパスのリテラル テキストを使用するためですltxkey
。2 番目のコメント アウトされたコマンドの代わりに最初のコメント アウトされたコマンドを使用すると\includegraphics
、includegraphics 内から があるという不明瞭なエラーが発生します"Illegal parameter number in definition of \filename@base"
。
の代わりに、画像ファイルのパスとして定義されている をltxkey
使用すると、動作します。 をとして定義しようとすると、ここでコードを入力すると、再び失敗します。 の値を印刷するだけで、正しいように見えます。ご協力いただければ幸いです。\gimg
\gimg
{\DnD{GoblinBoss}{image}}
\DnD{GoblinBoss}{image}
答え1
コマンドを画像ファイル名に展開するように定義する必要があります。
\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