我正在编写自己的简单模板,到目前为止我有一个新的、重新定义的 make title 命令:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myclass}[2016/06/22 My custom class]
\LoadClass{article}
\usepackage{cmap}
\usepackage[T1]{fontenc}
\usepackage{longtable}
\usepackage{multirow}
\usepackage{fancybox}
\usepackage{rotating}
\usepackage{hyperref}
\usepackage{framed}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{graphicx}
\usepackage{pdfpages}
\usepackage{enumitem}
\newcommand{\LOGO}{logo.png}
\newcommand{\FIRST}[1]{#1}
\newcommand{\SECOND}[1]{#1}
\newcommand{\THIRD}[1]{#1}
\renewcommand{\maketitle}{
\begin{titlepage}
\vspace{10pt}
\hbox{
\mbox{
\hspace{-20pt}
\fbox{ \includegraphics{\LOGO}}
\hspace{4pt}
}
\vrule depth 0.9\textheight
\mbox{\hspace{2em}}
\vtop{
\vspace{20pt}
\begin{flushleft}
\Large \FIRST \par
\end{flushleft}
\vspace{80pt}
\begin{flushleft}
\Huge \bfseries \SECOND \par
\end{flushleft}
\begin{flushleft}
\large \bfseries \THIRD \par
\end{flushleft}
\vfil
}
}
\end{titlepage}
\setcounter{footnote}{0}
}
在新的中maketitle
我使用\FIRST, \SECOND, \THIRD
我定义为的宏:
\newcommand{\FIRST}[1]{#1}
但是,我希望使用此模板的用户能够在编写 tex 时上传任何值,\FIRST
这样当用户调用我的 时\maketitle
, 的位置\FIRST
会出现用户选择的值。当我\FIRST
在 .cls 文件中定义宏时,我该怎么做?
答案1
您可以像下面这样定义命令:
\newcommand{\FIRST}[1]{\gdef\@FIRST{#1}}
\newcommand{\SECOND}[1]{\gdef\@SECOND{#1}}
\newcommand{\THIRD}[1]{\gdef\@THIRD{#1}}
\let\@FIRST\@empty
\let\@SECOND\@empty
\let\@THIRD\@empty
然后稍后\maketitle
您可以在里面分别将\FIRST
、\SECOND
和替换\THIRD
为\@FIRST
、\@SECOND
和\@THIRD
。
现在用户可以给予:
\FIRST{one}
\SECOND{two}
\THIRD{three}
希望这可以帮助。