创建自定义模板

创建自定义模板

我正在尝试创建自己的报告模板。这个想法是用户只需输入变量并关注内容。我尝试创建一个修改过的标题页,但出现错误,我的 testreport.cls:

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{testreport}[2017/04/02 v0.1 test report template]
\LoadClassWithOptions{article}

\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax

% for the title page
\newcommand*{\client}[1]{{#1}}
\newcommand*{\project}[1]{{#1}}

\renewcommand*{\maketitle}{
\begin{titlepage}
\title
\\
\project
\\
\client
\\
\date
\\
\author

\end{titlepage}
}

我的 .tex 文件中有以下内容:

\documentclass{testreport}
\usepackage{graphicx}
\usepackage[utf8]{inputenc}

\title{Custom class example}
\author{Yorian}
\date{\today}
\project{aa}
\client{BB}

\begin{document}

% Create title page
\maketitle

\end{document}

但是我收到一个错误:

! LaTeX Error: There's no line here to end.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.21 \maketitle

? 

我不明白这里出了什么问题。有什么建议吗?

答案1

两个问题:

  • 宏就像\title{Custom class example}是用来输入信息的。如果你想再次检索这些信息,你需要调用另一个存储信息的宏。对于标题来说,这个宏是\@title,但你也可以为自己的字段创建这个宏。

  • 不要滥用\\,看看何时使用 \par 以及何时使用 \\ 或空行

    \documentclass{article}
    
    \makeatletter
    \def\client#1{\gdef\@client{#1}}
    \def\@client{}
    
    \def\project#1{\gdef\@project{#1}}
    \def\@project{}
    
    \renewcommand*{\maketitle}{
        \begin{titlepage}
            \@title
    
            \@project
    
            \@client
    
            \@date
    
            \@author
    \end{titlepage}
    }
    
    \makeatother
    
    \usepackage{graphicx}
    \usepackage[utf8]{inputenc}
    
    \title{Custom class example}
    \author{Yorian}
    \date{\today}
    \project{aa}
    \client{BB}
    
    \begin{document}
    
    % Create title page
    \maketitle
    
    \end{document}
    

相关内容