在文档中使用条件来改变类中的某些内容

在文档中使用条件来改变类中的某些内容

对于制作文档类别有点陌生..所以请原谅我肯定犯下的新手错误。

我正在尝试制作一个documentclass代表我所在组织使用的报告的文件。我正在尝试在文档中设置一个标志.tex来定义文档是否处于finaldraft状态。在相应的 .cls 中,我将更改标题页、页眉/页脚/等。

在单个文档中,这是成功的(这是companyreport.cls):

\LoadClass{report}
\usepackage{etoolbox}
\newtoggle{final}

\settoggle{final}{true}

\begin{document}
% Define a table layout for the title page.

\def\tabularxcolumn#1{m{#1}}
\begin{tabularx}{\textwidth}{| X | X |}
    \hline
    \includegraphics{titleimage.png} & 
    \iftoggle{final}{Final}{Draft} Report \newline Title \\
    \hline
    \null & Confidential to \newline Company \\
    \hline
\end{tabularx}


\newpage
Project Team
Revision History 

\end{document}

如果我将上述内容放在文档类中,并尝试final从中设置值.tex,则它不起作用。

徘徊在工作走廊时,我想知道这是否是正确的方法,以及我是否应该使用课程选项......?

答案1

标准文档类已定义draftfinal选项。要么重新定义它们,要么使用\DeclareOption它们进行扩展,然后进行相关切换。

companyreport.cls

\ProvidesClass{companyreport}
\LoadClass{report}
\RequirePackage{etoolbox}
\newtoggle{final}


\DeclareOption{draft}{\togglefalse{final}}
\DeclareOption{final}{\toggletrue{final}}
\PassOptionsToClass{draft}{report}
\PassOptionsToClass{final}{report}

\ProcessOptions

\endinput

以及驱动程序文件:companyreport.tex

\documentclass[final]{companyreport}
\usepackage{tabularx}
\usepackage[demo]{graphicx}


%\settoggle{final}{true}

\begin{document}
% Define a table layout for the title page.

\def\tabularxcolumn#1{m{#1}}
\begin{tabularx}{\textwidth}{| X | X |}
    \hline
    \includegraphics{titleimage.png} & 
    \iftoggle{final}{Final}{Draft} Report \newline Title \\
    \hline
    \null & Confidential to \newline Company \\
    \hline
\end{tabularx}


\newpage
Project Team
Revision History 

\end{document}

相关内容