Estoy intentando modificar un archivo de estilo, tengo un 'def' como sigue:
\def\logo#1{\gdef\@logo{#1}} \gdef\@logo{}
Dentro de un 'título de creación' personalizado:
\includegraphics[scale=0.1]{\@logo}
Soy nuevo en Tex/Macros, me preguntaba cómo puedo agregar el parámetro de escala a la macro de definición 'logotipo'. es decir, me gustaría parametrizar completamente la llamada a \includegraphics
.
Editar: Como se muestra a continuación, agregué el logotipo en el 'maketitle', en un estilo simple, ¿no estoy seguro de si hay una mejor manera de hacerlo?
\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}
}
Respuesta1
La macro \logo
se puede definir con un parámetro opcional que toma las opciones para \includegraphics
:
\newcommand*{\logo}[2][]{%
\gdef\@logo@params{#1}%
\gdef\@logo{#2}%
}
\newcommand*{\@logo@params}{}
\newcommand*{\@logo}{}
Uso para \includegraphics
:
\expandafter\includegraphics\expandafter[\@logo@params]{\@logo}
Las opciones deben expandirse primero, porque los caracteres de sintaxis, la coma y el signo igual para la lista de valores clave no deben ocultarse dentro de las macros.
Ejemplo para \logo
:
\logo[scale=0.1]{example-image-a}
O
\logo[width=2cm, angle=90]{example-image-a}
Respuesta2
Tu puedes hacer
\newcommand{\logo}[2][]{%
\gdef\make@logo{\includegraphics[#1]{#2}}%
}
\let\make@logo\relax
y utilícelo \make@logo
en el punto donde crea el título personalizado, tal vez como
\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
Entonces, si el preámbulo del documento que usa su archivo de estilo tiene
\logo[scale=0.1]{file}
cuando se esté escribiendo el título, obtendrás
\includegraphics[scale=0.1]{file}
Sin una \logo
orden, no obtendrás nada.
El \logo
comando acepta, en su argumento opcional, cualquier opción válida para \includegraphics
, así por ejemplo
\logo[width=3cm]{file}
\logo[width=3cm,height=4cm,keepaspectratio]{file}
etcétera.
Respuesta3
Si scale
es todo lo que buscas y te sientes cómodo con una interfaz como \logo[0.7]{my-pic.png}
, entonces funciona una simple \newcommand
con parámetro opcional:
\newcommand{\logo}[2][1]{\includegraphics[scale=#1]{#2}}
Si no utiliza el argumento opcional, el valor predeterminado es 1
.