Estou tentando ajustar um arquivo de estilo, tenho um 'def' da seguinte forma:
\def\logo#1{\gdef\@logo{#1}} \gdef\@logo{}
Dentro de um 'título de criação' personalizado:
\includegraphics[scale=0.1]{\@logo}
Sou novo em Tex/Macros, só queria saber como posso adicionar o parâmetro de escala à macro def 'logo'? ou seja, eu gostaria de parametrizar totalmente a chamada para \includegraphics
.
Editar: Conforme abaixo, adicionei o logotipo ao 'maketitle', em um estilo simples, não tem certeza se existe uma maneira melhor de fazer isso?
\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}
}
Responder1
A macro \logo
pode ser definida com um parâmetro opcional que leva as opções 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}
As opções precisam ser expandidas primeiro, porque os caracteres de sintaxe vírgula e sinal de igual para a lista de valores-chave não devem estar ocultos dentro das macros.
Exemplo para \logo
:
\logo[scale=0.1]{example-image-a}
Ou
\logo[width=2cm, angle=90]{example-image-a}
Responder2
Você pode fazer
\newcommand{\logo}[2][]{%
\gdef\make@logo{\includegraphics[#1]{#2}}%
}
\let\make@logo\relax
e use \make@logo
no ponto onde você cria o título personalizado, talvez 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
Portanto, se o preâmbulo do documento usando seu arquivo de estilo tiver
\logo[scale=0.1]{file}
quando o título estiver sendo digitado, você obterá
\includegraphics[scale=0.1]{file}
Sem um \logo
comando, você não conseguirá nada.
O \logo
comando aceita, em seu argumento opcional, quaisquer opções válidas para \includegraphics
, por exemplo
\logo[width=3cm]{file}
\logo[width=3cm,height=4cm,keepaspectratio]{file}
e assim por diante.
Responder3
Se scale
é tudo o que você procura e se sente confortável com uma interface como \logo[0.7]{my-pic.png}
, então um \newcommand
parâmetro simples com opcional funciona:
\newcommand{\logo}[2][1]{\includegraphics[scale=#1]{#2}}
Se você não estiver usando o argumento opcional, o padrão é 1
.