我想创建自己的文档类并使用一些变量来创建标题页等。
那么,实现这一目标的最佳方法/方案是什么?
类文件:
\ProvidesClass{myOwnClass}[v0.1]
\newcommand{\myTitlepage}{
\begin{titlepage}
\begin{flushright}
\textsf{
\thisAutor\\
E-Mail: \href{mailto:\thisEmail}{\thisEmail}\\[2ex]
\ifdefined{Phone: \thisPhone}
\today
}
\end{flushright}
\end{titlepage}
}
tex 文件:
\documentclass{myOwnClass}
% BEGIN_FOLD
% Titel
\newcommand{\thisTitle}{Test}
\newcommand{\thisSubTitle}{a test for \LaTeX}
% Autor
\newcommand{\thisAutor}{Some Name}
\newcommand{\thisEmail}{[email protected]}
\newcommand{\thisPhone}{}
% END_FOLD
\begin{document}
\myTitlepage
\end{document}
你看,没有给出电话号码。如果是这样,我不想打印此行,但如果有给定的电话号码,我想打印它。最好的方法是什么?
谢谢!
答案1
让用户拥有的\newcommand{\thisAuthor}{Some Name}
不是一个好的界面。更好的方法是在类文件中拥有
\newcommand{\Author}[1]{\renewcommand{\phab@Author}{#1}}
\let\phab@Author\phab@required
\newcommand{\Email}[1]{\renewcommand{\phab@Email}{#1}}
\let\phab@Email\@empty
\newcommand{\Phone}[1]{\renewcommand{\phab@Phone}{#1}}
\let\phab@Phone\@empty
这样你就可以得到类似
\ifx\phab@Phone\@empty
% do nothing
\else
Phone: \phab@Phone\\[2ex]
\fi
在 的定义中\myTitlepage
。如果您给出了 的合适定义,则可以在不在文档中\phab@required
时发出错误。在文档中,您将输入\Author
\Author{Some Name}
\Email{[email protected]}
如果\Phone
没有出现或者有\Phone{}
,则不会打印任何内容。
这是一个例子。
类文件myownclass.cls
\ProvidesClass{myownclass}[2014/05/06 v0.1]
\newcommand{\myTitlepage}{%
\begin{titlepage}
\raggedleft\sffamily
{\Large\phab@Title\\}
\ifx\phab@SubTitle\@empty
\else
\vspace{1ex}
\phab@SubTitle\\
\fi
\vspace{4ex}
\phab@Author\\
\ifx\phab@Email\@empty
\else
E-Mail: \href{mailto:\phab@Email}{\phab@Email}\\[2ex]
\fi
\ifx\phab@Phone\@empty
\else
Phone: \phab@Phone\\[2ex]
\fi
\today
\end{titlepage}
}
\newcommand{\Title}[1]{\renewcommand{\phab@Title}{#1}}
\newcommand{\SubTitle}[1]{\renewcommand{\phab@SubTitle}{#1}}
\newcommand{\Author}[1]{\renewcommand{\phab@Author}{#1}}
\newcommand{\Email}[1]{\renewcommand{\phab@Email}{#1}}
\newcommand{\Phone}[1]{\renewcommand{\phab@Phone}{#1}}
% Initializations
\newcommand\phab@required[1]{The field `#1' is required}
\newcommand\phab@Title{\phab@required{Title}}
\let\phab@SubTitle\@empty
\newcommand\phab@Author{\phab@required{Author}}
\let\phab@Email\@empty
\let\phab@Phone\@empty
\LoadClass{article}
\AtBeginDocument{\RequirePackage{hyperref}}
\endinput
文档phab.tex
\documentclass{myownclass}
\Title{Test}
\SubTitle{a test for \LaTeX}
% Author
\Author{Some Name}
\Email{[email protected]}
\Phone{}
% END_FOLD
\begin{document}
\myTitlepage
\end{document}