여러 매개변수가 있는 \def 매크로

여러 매개변수가 있는 \def 매크로

스타일 파일을 조정하려고 하는데 다음과 같은 'def'가 있습니다.

\def\logo#1{\gdef\@logo{#1}} \gdef\@logo{}

사용자 정의 '제목 만들기' 내부:

\includegraphics[scale=0.1]{\@logo}

저는 Tex/Macros를 처음 사용하는데, 'logo' def 매크로에 scale 매개변수를 어떻게 추가할 수 있는지 궁금합니다. 즉, 에 대한 호출을 완전히 매개변수화하고 싶습니다 \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.

관련 정보