Ich versuche, eine Stildatei zu optimieren. Ich habe eine „Def“ wie folgt:
\def\logo#1{\gdef\@logo{#1}} \gdef\@logo{}
Innerhalb eines benutzerdefinierten „Titel erstellen“:
\includegraphics[scale=0.1]{\@logo}
Ich bin neu bei Tex/Macros und habe mich nur gefragt, wie ich den Skalierungsparameter zum Def-Makro „Logo“ hinzufügen kann. Das heißt, ich möchte den Aufruf vollständig parametrisieren \includegraphics
.
Bearbeiten: Wie unten beschrieben, habe ich das Logo in einem einfachen Stil in „Maketitle“ eingefügt. Ich bin nicht sicher, ob es dafür eine bessere Möglichkeit gibt?
\newcommand{\logo}[2][]{%
\gdef\make@logo{\includegraphics[#1]{#2}}%
}
\let\make@logo\relax
%% title
\def\@maketitle
{
\clearpage
\vskip -3em
\ifx\make@logo\relax
\else
\make@logo
\fi
\newpage
\thispagestyle{empty}
\vspace*{-24pt}
\begin{center}
{\Large \bf \@title \par}\vspace*{24pt}{
\lineskip 1em
\begin{tabular}[t]{c}
\@author \\
\vspace*{1pt}\
\end{tabular}
}
\vskip 1em
\vspace*{12pt}
\end{center}
}
Antwort1
Makros \logo
können mit einem optionalen Parameter definiert werden, der die Optionen für Folgendes annimmt \includegraphics
:
\newcommand*{\logo}[2][]{%
\gdef\@logo@params{#1}%
\gdef\@logo{#2}%
}
\newcommand*{\@logo@params}{}
\newcommand*{\@logo}{}
Verwendung für \includegraphics
:
\expandafter\includegraphics\expandafter[\@logo@params]{\@logo}
Die Optionen müssen zunächst erweitert werden, da die Syntaxzeichen Komma und Gleichheitszeichen für die Schlüssel-Wert-Liste nicht in Makros versteckt werden dürfen.
Beispiel für \logo
:
\logo[scale=0.1]{example-image-a}
Oder
\logo[width=2cm, angle=90]{example-image-a}
Antwort2
Du kannst tun
\newcommand{\logo}[2][]{%
\gdef\make@logo{\includegraphics[#1]{#2}}%
}
\let\make@logo\relax
und verwenden Sie \make@logo
an der Stelle, an der Sie den benutzerdefinierten Titel erstellen, vielleicht wie
\ifx\make@logo\relax
% code for no logo, maybe nothing
\else
% code before the logo, maybe \begin{center}
\make@logo
% code after the logo, maybe \end{center}
\fi
Wenn also die Dokumentpräambel, die Ihre Stildatei verwendet,
\logo[scale=0.1]{file}
Wenn der Titel gesetzt wird, erhalten Sie
\includegraphics[scale=0.1]{file}
Ohne \logo
Befehl erreichen Sie nichts.
Der \logo
Befehl akzeptiert in seinem optionalen Argument alle für gültigen Optionen \includegraphics
, also zum Beispiel
\logo[width=3cm]{file}
\logo[width=3cm,height=4cm,keepaspectratio]{file}
und so weiter.
Antwort3
Wenn scale
das alles ist, was Sie möchten, und Sie mit einer Schnittstelle wie vertraut sind \logo[0.7]{my-pic.png}
, funktioniert eine einfache \newcommand
mit optionalem Parameter:
\newcommand{\logo}[2][1]{\includegraphics[scale=#1]{#2}}
Wenn Sie das optionale Argument nicht verwenden, wird standardmäßig verwendet 1
.