%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Felipe Portales' HomeWorks % Maintainer: Felipe Portales-Oliva (f.portales.oliva@gmail.com) % Contributors: David Grawe (German inserts) % % Document class to produce simple yet stylish homework submissions % % This package is public domain, according to : % The Unlicense %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Identification \NeedsTeXFormat{LaTeX2e} % we need to have LaTeX2e for this to compile \ProvidesClass{fphw}[2019/03/19] % fpshw is the name we need to provide to % the documentclass command on the .tex file %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Preliminary declarations: %%%% These are some commands where we declare new commands for the class % We define the macro for the name of the professor \newcommand{\professor}[1]{ \newcommand{\professorloc}{#1} } % We define the macro for the name of the course \newcommand{\class}[1]{ \newcommand{\classlocal}{#1} } % We define the macro for the name of the institution \newcommand{\institute}[1]{ \newcommand{\instituteloc}{#1} } %these are auxiliary definitions used in the title section \newcommand{\CourseLang}{Course} \newcommand{\DateLang}{Due date} \newcommand{\StudentLang}{Student name} \newcommand{\ProfessorLang}{Professor} % Header and footers, we will use the titles also \RequirePackage{fancyhdr} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Options %%%% We now pass the options of the class % Two Columns are difficult to read and grade, we will not use them \DeclareOption{twocolumn}{\OptionNotUsed} % Two sided paper are difficult to read and grade, we will not use them \DeclareOption{twoside}{\OptionNotUsed} % we hardcode some language options \DeclareOption{spanish}{ \renewcommand{\CourseLang}{Curso} \renewcommand{\ProfessorLang}{Docente} \renewcommand{\DateLang}{Fecha de entrega} \renewcommand{\StudentLang}{Nombre estudiante} } \DeclareOption{german}{ % Contribution by David Grawe \renewcommand{\CourseLang}{Modul} \renewcommand{\ProfessorLang}{Dozent} \renewcommand{\DateLang}{Frist} \renewcommand{\StudentLang}{Studierende} } \PassOptionsToClass{a4paper}{article} \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} \ProcessOptions\relax %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Bulk Declarations %%%% Here we do more declarations and call other files % we need to load \LoadClass{article} % we will modify sections, subsections and sub subsections \RequirePackage{titlesec} % Modification of section \titleformat{\section}[block]{\normalsize\bfseries\filcenter}{\thesection.}{.3cm}{} % modification of subsection and sub sub section \titleformat{\subsection}[runin]{\bfseries}{ \thesubsection.} {1mm}{}[.\quad] \titleformat{\subsubsection}[runin]{\bfseries\itshape}{ \thesubsubsection.} {1mm}{}[.\quad] % Geometry lets us modify the sizes of the document nicely \RequirePackage{geometry} % Decent margins for the documents, as it is meant to be printed \geometry{left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm} \fancyhead{} \fancyfoot{} \pagestyle{fancy} \renewcommand{\headrulewidth}{0.4pt} % we want rules \renewcommand{\footrulewidth}{0.4pt} \fancyhead[RO] {\footnotesize\thepage} \fancyhead[LO] {\footnotesize{\ifx\classlocal\undefined{}\else\itshape\classlocal{} --{} \fi}\makeatletter\@title\makeatother } \fancyfoot[RO] {\footnotesize\itshape\makeatletter\@author\makeatother} % New title style for the document \renewcommand{\maketitle}{% \newpage % ensure this is in a new page \thispagestyle{plain} \begin{center} \ifx\instituteloc\undefined{}\else{\scshape \instituteloc} \\[10pt] \fi \hrule \vspace{10pt} {\LARGE \bfseries \@title} \\[5pt] \StudentLang: {\itshape \@author} \vspace{8pt} \hrule \vspace{10pt} \ifx\classlocal\undefined{}\else\CourseLang: {\itshape \classlocal{} \ifx\professorloc\undefined{}\else{-- }\fi }\fi \ifx\professorloc\undefined{}\else{\ProfessorLang: {\itshape\professorloc}}\fi \\ \DateLang: {\itshape\@date} \vspace{20pt} \end{center} } % definition of the "problem" environment \newsavebox{\problembox} \newenvironment{problem} {\begin{center} \begin{lrbox}{\problembox}\begin{minipage}{.98\textwidth}} {\end{minipage}\end{lrbox}\fbox{\usebox{\problembox}} \end{center} } %%% We finish the class with this command \endinput