我正在尝试创建自己的报告模板。这个想法是用户只需输入变量并关注内容。我尝试创建一个修改过的标题页,但出现错误,我的 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}