Я пытаюсь настроить файл стиля, у меня есть «def» следующего вида:
\def\logo#1{\gdef\@logo{#1}} \gdef\@logo{}
Внутри пользовательского заголовка «make»:
\includegraphics[scale=0.1]{\@logo}
Я новичок в Tex/Macros, мне просто интересно, как добавить параметр масштаба в макрос определения 'logo'? То есть я хотел бы полностью параметризовать вызов \includegraphics
.
Редактировать: Как указано ниже, я добавил логотип в «maketitle» в простом стиле. Не уверен, есть ли лучший способ сделать это?
\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}
}
решение1
Макрос \logo
можно определить с помощью необязательного параметра, который принимает следующие параметры \includegraphics
:
\newcommand*{\logo}[2][]{%
\gdef\@logo@params{#1}%
\gdef\@logo{#2}%
}
\newcommand*{\@logo@params}{}
\newcommand*{\@logo}{}
Использование для \includegraphics
:
\expandafter\includegraphics\expandafter[\@logo@params]{\@logo}
Сначала необходимо раскрыть параметры, поскольку символы синтаксиса запятая и знак равенства для списка значений ключа не должны быть скрыты внутри макросов.
Пример для \logo
:
\logo[scale=0.1]{example-image-a}
Или
\logo[width=2cm, angle=90]{example-image-a}
решение2
Ты можешь сделать
\newcommand{\logo}[2][]{%
\gdef\make@logo{\includegraphics[#1]{#2}}%
}
\let\make@logo\relax
и используйте \make@logo
в тот момент, когда вы создаете свой собственный заголовок, например,
\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
Итак, если преамбула документа, использующая ваш файл стилей, имеет
\logo[scale=0.1]{file}
когда заголовок будет набран, вы получите
\includegraphics[scale=0.1]{file}
Без \logo
команды вы ничего не получите.
Команда \logo
принимает в качестве необязательного аргумента любые параметры, допустимые для \includegraphics
, например
\logo[width=3cm]{file}
\logo[width=3cm,height=4cm,keepaspectratio]{file}
и так далее.
решение3
Если scale
это все, что вам нужно, и вас устраивает такой интерфейс \logo[0.7]{my-pic.png}
, то подойдет простой вариант \newcommand
с необязательными параметрами:
\newcommand{\logo}[2][1]{\includegraphics[scale=#1]{#2}}
Если вы не используете необязательный аргумент, по умолчанию используется значение 1
.