如何在变量中使用 If

如何在变量中使用 If

我想创建自己的文档类并使用一些变量来创建标题页等。

那么,实现这一目标的最佳方法/方案是什么?

类文件:

\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}

输出

在此处输入图片描述

相关内容