% Layout and Pagraph Format for Unified Process Methodology % % Copyright (c) 2006-2009, 2012-2022 Stephane GALLAND % % This program is free library; you can redistribute it and/or modify % it under the terms of the GNU Lesser General Public License as % published by the Free Software Foundation; either version 3 of the % License, or any later version. % % This library is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU % Lesser General Public License for more details. % % You should have received a copy of the GNU Lesser General Public % License along with this library; see the file COPYING. If not, % write to the Free Software Foundation, Inc., 59 Temple Place - Suite % 330, Boston, MA 02111-1307, USA. \global\edef\upm@package@fmt@ver{2022/10/04} \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesPackage{upmethodology-fmt}[\upm@package@fmt@ver] \RequirePackage{upmethodology-p-common} \gdef\upm@fmt@force@single@spacing#1{{\begin{singlespace}#1\end{singlespace}}} \gdef\upm@date@head#1/#2\@nil{#1} \gdef\upm@date@tail#1/#2\@nil{#2} \gdef\upm@date@first#1{{\expandafter\upm@date@head#1\expandafter\@nil}} \gdef\upm@date@second#1{{\expandafter\expandafter\expandafter\upm@date@head\expandafter\upm@date@tail#1\expandafter\@nil\expandafter\expandafter\expandafter\@nil}} \gdef\upm@date@third#1{{\expandafter\expandafter\expandafter\upm@date@tail\expandafter\upm@date@tail#1\expandafter\@nil\expandafter\expandafter\expandafter\@nil}} \newif\ifupm@use@override@standard@lists \global\upm@use@override@standard@liststrue %---------------------------------------- % LOCALES %---------------------------------------- \global\let\upm@format@lang@extractyear\upm@date@first% \def\upm@format@lang@english{% \gdef\upm@lang@@{\message{**** upmethodology-fmt is using English language ****}}% \global\renewcommand{\upm@format@lang@makedate}[3]{##3\string/\two@digits{##2}\string/\two@digits{##1}}% \global\let\upm@format@lang@extractyear\upm@date@first% \global\let\upm@format@lang@extractmonth\upm@date@second% \gdef\upm@format@lang@professor{Pr.}% \gdef\upm@format@lang@doctor{Dr.}% \gdef\upm@format@lang@phdoctor{Ph.D.}% \gdef\upm@format@lang@scdoctor{Sc.D.}% \gdef\upm@format@lang@mdoctor{M.D.}% \gdef\upm@format@lang@professionalengineer{CEng.}% \gdef\upm@format@lang@incorporatedengineer{IEng.}% } \def\upm@format@lang@french{% \gdef\upm@lang@@{\message{**** upmethodology-fmt is using French language ****}}% \global\renewcommand{\upm@format@lang@makedate}[3]{\two@digits{##1}\string/\two@digits{##2}\string/##3}% \global\let\upm@format@lang@extractyear\upm@date@third% \global\let\upm@format@lang@extractmonth\upm@date@second% \global\let\upm@format@lang@extractday\upm@date@first% \gdef\upm@format@lang@professor{Pr.}% \gdef\upm@format@lang@doctor{Dr.}% \gdef\upm@format@lang@phdoctor{Ph.D.}% \gdef\upm@format@lang@scdoctor{Sc.D.}% \gdef\upm@format@lang@mdoctor{M.D.}% \gdef\upm@format@lang@professionalengineer{Ing.}% \gdef\upm@format@lang@incorporatedengineer{Ing.}% } \global\providecommand{\upm@format@lang@makedate}[3]{}% %---------------------------------------- % OPTIONS %---------------------------------------- \DeclareOption{french}{% \upm@format@lang@french \PassOptionsToPackage{french}{varioref} } \DeclareOption{francais}{% \upm@format@lang@french \PassOptionsToPackage{french}{varioref} } \DeclareOption{english}{% \upm@format@lang@english \PassOptionsToPackage{english}{varioref} } \DeclareOption{standardlists}{% \global\upm@use@override@standard@listsfalse } \ExecuteOptions{english} \ProcessOptions \upm@lang@@ \RequirePackage{graphicx} \RequirePackage{subcaption} \RequirePackage{tabularx} \RequirePackage{multicol} \RequirePackage{colortbl} \RequirePackage{picinpar} \RequirePackage{amsmath} \RequirePackage{amsthm} \RequirePackage{thmtools} \RequirePackage{pifont} \RequirePackage{setspace} \RequirePackage{varioref} \RequirePackage{txfonts} \RequirePackage{relsize} \RequirePackage{xkeyval} \RequirePackage{hyphenat} \RequirePackage{bbm} \RequirePackage{environ}% for advanced environment declaration %---------------------------------------- % Exponent and indice %---------------------------------------- % Exponent %\newcommand{\textsup}[1]{\ensuremath{^{\text{#1}}}\xspace} \newcommand{\textsup}[1]{\upm@textsuperscript{#1}\xspace} % Indice %\newcommand{\textsub}[1]{\ensuremath{_{\text{#1}}}\xspace} \newcommand{\textsub}[1]{\upm@textsubscript{#1}\xspace} %---------------------------------------- % Major Emphazing %---------------------------------------- \newcommand{\Emph}[1]{\textbf{#1}\xspace} %---------------------------------------- % SYMBOLS %---------------------------------------- \renewcommand{\copyright}{\Pisymbol{psy}{211}\xspace} \newcommand{\trademark}{\Pisymbol{psy}{228}\xspace} \newcommand{\regmark}{\Pisymbol{psy}{226}\xspace} \newcommand{\smalltrade}{{\tiny\trademark}\xspace} \newcommand{\smallreg}{{\tiny\regmark}\xspace} \newcommand{\smallcopy}{{\tiny\copyright}\xspace} \newcommand{\ust}{\textsup{st}} \newcommand{\und}{\textsup{nd}} \newcommand{\urd}{\textsup{rd}} \newcommand{\uth}{\textsup{th}} %---------------------------------------- % MATH SYMBOLS %---------------------------------------- \newcommand{\R}{\ensuremath{\mathbb{R}}} \newcommand{\N}{\ensuremath{\mathbb{N}}} \newcommand{\Z}{\ensuremath{\mathbb{Z}}} \newcommand{\C}{\ensuremath{\mathbb{C}}} \newcommand{\Q}{\ensuremath{\mathbb{Q}}} \newcommand{\powerset}{\ensuremath{\mathcal{P}}} \DeclareMathOperator{\sgn}{sgn} %---------------------------------------- % DEFAULT GRAPHICX CONFIGURATION %---------------------------------------- \ifpdf \DeclareGraphicsExtensions{.pdf,.png,.jpg,.jpeg,.gif} \else \DeclareGraphicsExtensions{.eps,.png,.jpg,.jpeg,.gif} \fi \graphicspath{{./}} %----------------------------------------- % LOCAL DEFINITION OF TH GRAPHICS PATH %----------------------------------------- \newenvironment{graphicspathcontext}[1]{% \bgroup% \let\upm@tmp@graphicspathcontext@ginputpath\Ginput@path% \def\old{\upm@tmp@graphicspathcontext@ginputpath}% \protected@edef\upm@tmp@graphicspathcontext@tmp{\protect\graphicspath{#1}}% \upm@tmp@graphicspathcontext@tmp% }{% \egroup% } %---------------------------------------- % FIGURES %---------------------------------------- \newcommand{\upm@mfigure}[5][ht]{ \begin{figure}[#1]% \begin{center}% \includegraphics[#2]{#3}% \caption{#4}% \label{fig:#5}% \end{center}% \end{figure}% } \newcommand{\upm@mfigurestar}[5][ht]{ \begin{figure*}[#1]% \begin{center}% \includegraphics[#2]{#3}% \caption{#4}% \label{fig:#5}% \end{center}% \end{figure*}% } %----- %\mfigure[position]{options}{filename}{caption}{label} \def\mfigure{\@ifstar\upm@mfigurestar\upm@mfigure} %----- %\figref{label} \newcommand{\figref}[1]{\ref{fig:#1}} %----- %\figpageref{label} \newcommand{\figpageref}[1]{\pageref{fig:#1}} %----- % Multi-figures \newcounter{upm@subfigure@count} \newcommand{\upm@beginsubfigure}[4]{% \let\upm@mfiguresaved\mfigure% %options,filename,caption,label \renewcommand{\mfigure}[5][]{% \xdef\upm@tmp@subfigure@label{\alph{upm@subfigure@count}}% \subcaptionbox{##4% \label{fig:##5}% \label{fig:#4:\upm@tmp@subfigure@label}% }{\includegraphics[##2]{##3}}% \addtocounter{upm@subfigure@count}{1}% } %options,filename,caption \newcommand{\msubfigure}[3]{% \xdef\upm@tmp@subfigure@label{\alph{upm@subfigure@count}}% \subcaptionbox{##3% \label{fig:#4:\upm@tmp@subfigure@label}% }{\includegraphics[##1]{##2}}% \addtocounter{upm@subfigure@count}{1}% } \setcounter{upm@subfigure@count}{1}% \gdef\upm@mfigurescaption{#3}% \gdef\upm@mfigureslabel{fig:#4}% \begin{#1}[#2]\centering % \begingroup% } \newcommand{\upm@endsubfigure}[1]{% \endgroup% \caption{\upm@mfigurescaption}% \label{\upm@mfigureslabel}% \end{#1}% \let\mfigure\upm@mfiguresaved } %----- %\mfigures[position]{caption}{label} \newenvironment{mfigures}[3][ht]{ \upm@beginsubfigure{figure}{#1}{#2}{#3}% }{% \upm@endsubfigure{figure}% } %----- %\mfigures*[position]{caption}{label} \newenvironment{mfigures*}[3][ht]{ \upm@beginsubfigure{figure*}{#1}{#2}{#3}% }{% \upm@endsubfigure{figure*}% } %---------------------------------------- % IMAGES INCLUDING TeX EXPRESSIONS %---------------------------------------- % % This section is copied from the AutoLaTeX package % http://www.arakhne.org/autolatex % %----- %\DeclareGraphicsExtensionsWtex{coma separated extensions} \providecommand{\DeclareGraphicsExtensionsWtex}[1]{% \xdef\@autolatex@wtfig@extensions{\zap@space#1 \@empty}% } \ifpdf \DeclareGraphicsExtensionsWtex{.pdftex_t,.pdf_tex} \else \DeclareGraphicsExtensionsWtex{.pstex_t,.ps_tex} \fi \providecommand{\@autolatex@wtfig@searchinpath}[1]{% \IfFileExists{#1}{% \protected@edef\@autolatex@wtfig@tmp{\protect\resizebox{\@autolatex@wtfig@width}{\@autolatex@wtfig@height}{\protect\input{#1}}}% }{% \@for\@autolatex@wtfig@pathtmp:=\Ginput@path\do{% \ifx\@autolatex@wtfig@tmp\relax% \IfFileExists{\@autolatex@wtfig@pathtmp#1}{% \protected@edef\@autolatex@wtfig@tmp{\protect\resizebox{\@autolatex@wtfig@width}{\@autolatex@wtfig@height}{\protect\input{\@autolatex@wtfig@pathtmp#1}}}% }{}% \fi% }% }% } \define@key[autolatex]{withtex}{width}{% \gdef\@autolatex@wtfig@width{#1}% } \define@key[autolatex]{withtex}{height}{% \gdef\@autolatex@wtfig@height{#1}% } %----- %\includefigurewtex[width=xx,height=yy]{filename} \providecommand{\includefigurewtex}[2][width=\linewidth]{% \begingroup% \gdef\@autolatex@wtfig@width{!}% \gdef\@autolatex@wtfig@height{!}% \setkeys[autolatex]{withtex}{#1}% % \global\let\@autolatex@wtfig@tmp\relax% \global\let\@autolatex@wtfig@ext\relax% \global\let\@autolatex@wtfig@path\relax% \filename@parse{#2}% \ifx\filename@ext\relax% \@for\@autolatex@wtfig@exttmp:=\@autolatex@wtfig@extensions\do{% \@autolatex@wtfig@searchinpath{#2\@autolatex@wtfig@exttmp}% }% \else% \@autolatex@wtfig@searchinpath{#2\@autolatex@wtfig@exttmp}% \fi% % \ifx\@autolatex@wtfig@tmp\relax% \errmessage{Package upmethodology-fmt: File not found '#2', needed for figure inclusion}% \else% \@autolatex@wtfig@tmp% \fi% % \endgroup% } \global\let\includegraphicswtex\includefigurewtex %---------------------------------------- % ENVIRONMENT FOR IMAGES INCLUDING TeX EXPRESSIONS %---------------------------------------- \gdef\upm@figtex@dyncaption@remove{} \gdef\upm@figtex@figremove#1{% \global\expandafter\let\csname FIG#1\endcsname\relax% } \gdef\upm@figtex@restore{% \upm@figtex@dyncaption@remove% \gdef\upm@figtex@dyncaption@remove{} } %----- %\figmath{id}{content} \def\figmath#1#2{% \expandafter\gdef\csname FIG#1\endcsname{\ensuremath{#2}}% \global\protected@edef\upm@figtex@dyncaption@remove{\upm@figtex@dyncaption@remove\protect\upm@figtex@figremove{#1}}% } %----- %\figtext{id}{content} \def\figtext#1#2{% \expandafter\gdef\csname FIG#1\endcsname{#2}% \global\protected@edef\upm@figtex@dyncaption@remove{\upm@figtex@dyncaption@remove\protect\upm@figtex@figremove{#1}}% } \let\upm@fmt@figtex@nil\@nil \def\upm@fmt@figtex@parseparams#1=#2\upm@fmt@figtex@nil{\gdef\@tmp{#2}} \newcommand{\upm@mfigurewtex}[5][ht]{ \begin{figure}[#1]% \begin{center}% % Providing an ascendent compatibility on the second parameter: % - Prefered value of the parameter: a list of key/value pairs; % - Old fashion value of the parameter: the value for the "width" key. {\upm@fmt@figtex@parseparams #2====\upm@fmt@figtex@nil}% \ifthenelse{\equal{\@tmp}{===}}{% \includegraphicswtex[width=#2]{#3}% }{% \includegraphicswtex[#2]{#3}% }% \caption{#4}% \label{fig:#5}% \end{center}% \end{figure}% \upm@figtex@restore% } \newcommand{\upm@mfigurewtexstar}[5][ht]{ \begin{figure*}[#1]% \begin{center}% % Providing an ascendent compatibility on the second parameter: % - Prefered value of the parameter: a list of key/value pairs; % - Old fashion value of the parameter: the value for the "width" key. {\upm@fmt@figtex@parseparams #2====\upm@fmt@figtex@nil}% \ifthenelse{\equal{\@tmp}{===}}{% \includegraphicswtex[width=#2]{#3}% }{% \includegraphicswtex[#2]{#3}% }% \caption{#4}% \label{fig:#5}% \end{center}% \end{figure*}% \upm@figtex@restore% } %----- %\mfigurewtex[position]{options}{filename}{caption}{label} \def\mfigurewtex{\@ifstar\upm@mfigurewtexstar\upm@mfigurewtex} %---------------------------------------- % TABLES %---------------------------------------- %table's colors \definecolor{backtableheader}{rgb}{0.92,0.94,1} \definecolor{fronttableheader}{rgb}{0.23,0.33,0.48} %title of a table \def\upm@fmt@table@title#1{\color{fronttableheader} \cellcolor{backtableheader} {\bfseries #1}} %title of columns \newcommand{\tabularheaderstyle}[1]{% \mbox{}{\cellcolor{backtableheader} {\color{fronttableheader}\itshape\ignorespaces#1}}% }% \def\upm@fmt@table@column@title#1{\hfil{\color{fronttableheader} \cellcolor{backtableheader} {\itshape#1}}\hfil} % Utility functions for mtabular \newcounter{upm@fmt@mtabular@columnnumber} \gdef\upm@fmt@mtabular@expandtitle#1#2{% \multicolumn{#1}{|c|}{\upm@fmt@table@title{\ignorespaces#2\ignorespaces}}% } \newcommand{\tabulartitlespec}[1]{% \gdef\upm@fmt@mtabular@expandtitle##1##2{% \multicolumn{##1}{#1}{\upm@fmt@table@title{\ignorespaces##2\ignorespaces}}% } } %----- %\mtabular[width]{ncolumns}{columns} \newenvironment{mtabular}[3][\linewidth]{% \newcommand{\tabulartitle}[1]{% \hline% \upm@fmt@mtabular@expandtitle{#2}{##1} \\% \hline% }% \newcommand{\tabulartitleinside}[1]{% \hline\hline% \upm@fmt@mtabular@expandtitle{#2}{##1} \\% \hline% }% \newcommand*{\upm@fmt@mtabular@column@next}[1]{% & \upm@fmt@table@column@title{\ignorespaces##1\ignorespaces}% \addtocounter{upm@fmt@mtabular@columnnumber}{-1}% \ifnum0<\value{upm@fmt@mtabular@columnnumber}% \let\upm@fmt@mtabular@column@continue\upm@fmt@mtabular@column@next% \else% \\ \hline \let\upm@fmt@mtabular@column@continue\ignorespaces% \fi% \upm@fmt@mtabular@column@continue% } \newcommand*{\upm@fmt@mtabular@column@first}[1]{% \upm@fmt@table@column@title{\ignorespaces##1\ignorespaces}% \addtocounter{upm@fmt@mtabular@columnnumber}{-1}% \ifnum0<\value{upm@fmt@mtabular@columnnumber}% \let\upm@fmt@mtabular@column@continue\upm@fmt@mtabular@column@next% \else% \\ \hline \let\upm@fmt@mtabular@column@continue\ignorespaces% \fi% \upm@fmt@mtabular@column@continue% } \newcommand{\tabularheader}{% \setcounter{upm@fmt@mtabular@columnnumber}{#2}% \upm@fmt@mtabular@column@first% }% \newcommand{\tabularrowheader}[1]{% \centering\upm@fmt@table@column@title{\ignorespaces##1}% }% \begingroup\tabularx{#1}{#3}% }{% \endtabularx\endgroup% } %----- %\mtable[options]{width}{ncolumns}{columns}{caption}{label} % size= \define@key[autolatex]{mtable}{size}{\gdef\@autolatex@mtable@size{#1}} % position: h t b p H ! \define@key[autolatex]{mtable}{h}[\relax]{\gdef\@autolatex@mtable@position{[h]}} \define@key[autolatex]{mtable}{t}[\relax]{\gdef\@autolatex@mtable@position{[t]}} \define@key[autolatex]{mtable}{b}[\relax]{\gdef\@autolatex@mtable@position{[b]}} \define@key[autolatex]{mtable}{p}[\relax]{\gdef\@autolatex@mtable@position{[p]}} \define@key[autolatex]{mtable}{H}[\relax]{\gdef\@autolatex@mtable@position{[H]}} \define@key[autolatex]{mtable}{ht}[\relax]{\gdef\@autolatex@mtable@position{[ht]}} \define@key[autolatex]{mtable}{hb}[\relax]{\gdef\@autolatex@mtable@position{[hb]}} \define@key[autolatex]{mtable}{hp}[\relax]{\gdef\@autolatex@mtable@position{[hp]}} \define@key[autolatex]{mtable}{hH}[\relax]{\gdef\@autolatex@mtable@position{[hH]}} \define@key[autolatex]{mtable}{h!}[\relax]{\gdef\@autolatex@mtable@position{[h!]}} \define@key[autolatex]{mtable}{tb}[\relax]{\gdef\@autolatex@mtable@position{[tb]}} \define@key[autolatex]{mtable}{tp}[\relax]{\gdef\@autolatex@mtable@position{[tp]}} \define@key[autolatex]{mtable}{tH}[\relax]{\gdef\@autolatex@mtable@position{[tH]}} \define@key[autolatex]{mtable}{t!}[\relax]{\gdef\@autolatex@mtable@position{[t!]}} \define@key[autolatex]{mtable}{bp}[\relax]{\gdef\@autolatex@mtable@position{[bp]}} \define@key[autolatex]{mtable}{bH}[\relax]{\gdef\@autolatex@mtable@position{[bH]}} \define@key[autolatex]{mtable}{b!}[\relax]{\gdef\@autolatex@mtable@position{[b!]}} \define@key[autolatex]{mtable}{pH}[\relax]{\gdef\@autolatex@mtable@position{[pH]}} \define@key[autolatex]{mtable}{p!}[\relax]{\gdef\@autolatex@mtable@position{[p!]}} \define@key[autolatex]{mtable}{H!}[\relax]{\gdef\@autolatex@mtable@position{[H!]}} \define@key[autolatex]{mtable}{htb}[\relax]{\gdef\@autolatex@mtable@position{[htb]}} \define@key[autolatex]{mtable}{htp}[\relax]{\gdef\@autolatex@mtable@position{[htp]}} \define@key[autolatex]{mtable}{htH}[\relax]{\gdef\@autolatex@mtable@position{[htH]}} \define@key[autolatex]{mtable}{ht!}[\relax]{\gdef\@autolatex@mtable@position{[ht!]}} \define@key[autolatex]{mtable}{tbp}[\relax]{\gdef\@autolatex@mtable@position{[tbp]}} \define@key[autolatex]{mtable}{tbH}[\relax]{\gdef\@autolatex@mtable@position{[tbH]}} \define@key[autolatex]{mtable}{tb!}[\relax]{\gdef\@autolatex@mtable@position{[tb!]}} \define@key[autolatex]{mtable}{bpH}[\relax]{\gdef\@autolatex@mtable@position{[bpH]}} \define@key[autolatex]{mtable}{bp!}[\relax]{\gdef\@autolatex@mtable@position{[bp!]}} \define@key[autolatex]{mtable}{pH!}[\relax]{\gdef\@autolatex@mtable@position{[pH!]}} \define@key[autolatex]{mtable}{htbp}[\relax]{\gdef\@autolatex@mtable@position{[htbp]}} \define@key[autolatex]{mtable}{htbH}[\relax]{\gdef\@autolatex@mtable@position{[htbH]}} \define@key[autolatex]{mtable}{htb!}[\relax]{\gdef\@autolatex@mtable@position{[htb!]}} \define@key[autolatex]{mtable}{tbpH}[\relax]{\gdef\@autolatex@mtable@position{[tbpH]}} \define@key[autolatex]{mtable}{tbp!}[\relax]{\gdef\@autolatex@mtable@position{[tbp!]}} \define@key[autolatex]{mtable}{bpH!}[\relax]{\gdef\@autolatex@mtable@position{[bph!]}} \define@key[autolatex]{mtable}{htbpH}[\relax]{\gdef\@autolatex@mtable@position{[htbpH]}} \define@key[autolatex]{mtable}{htbp!}[\relax]{\gdef\@autolatex@mtable@position{[htbp!]}} \define@key[autolatex]{mtable}{htbpH!}[\relax]{\gdef\@autolatex@mtable@position{[htbpH!]}} % \newenvironment{mtable}[6][ht]{% \gdef\@autolatex@mtable@position{[ht]}% \gdef\@autolatex@mtable@size{\normalsize}% \setkeys[autolatex]{mtable}{#1}% % \gdef\upm@table@caption{#5}% \xdef\upm@table@label{tab:#6}% \gdef\upm@table@note{}% \newcommand{\captionastitle}{\tabulartitle{\upm@table@caption}}% \newcommand{\tablenote}[1]{\gdef\upm@table@note{\bgroup ##1\egroup}}% \expandafter\table\@autolatex@mtable@position% \center\@autolatex@mtable@size% \mtabular[#2]{#3}{#4}% }{% \endmtabular\relax% \caption{\upm@table@caption}% \label{\upm@table@label}% \endcenter% \upm@table@note% \endtable% \global\let\upm@table@caption\relax% \global\let\upm@table@label\relax% \global\let\upm@table@note\relax% } %----- %\tabref{label} \newcommand{\tabref}[1]{\ref{tab:#1}} %----- %\tabpageref{label} \newcommand{\tabpageref}[1]{\pageref{tab:#1}} %---------------------------------------- % PARAGRAPHS %---------------------------------------- \setlength{\parindent}{0pt} \setlength{\parskip}{.2cm} %---------------------------------------- % COLORIZED SECTION'S TITLES %---------------------------------------- % PRIVATE COLORS \definecolor{sectiontitlecolor}{rgb}{0.93,0.41,0} \definecolor{chaptertitlecolor}{rgb}{0.24,0.33,0.48} \definecolor{parttitlecolor}{rgb}{0.24,0.33,0.48} % PRIVATE FORMATTING MACROS \newcounter{upm@format@section@sectionlevel} \setcounter{upm@format@section@sectionlevel}{0} \gdef\upm@format@partnum#1{\textcolor{parttitlecolor}{\expandafter\fontsize{40pt}{60pt}\selectfont#1\normalfont}} \gdef\upm@format@parttitle#1{\textcolor{parttitlecolor}{\huge\scshape #1}} \gdef\upm@format@chapternum#1{\textcolor{chaptertitlecolor}{\expandafter\fontsize{40pt}{60pt}\selectfont#1\normalfont}} \gdef\upm@format@chaptertitle#1{\textcolor{chaptertitlecolor}{\Huge\scshape #1}} \gdef\upm@format@sectionnum#1#2{\textcolor{sectiontitlecolor}{#2}} \gdef\upm@format@sectiontitle#1#2{\textcolor{sectiontitlecolor}{#2}} \gdef\upm@format@sectionnum@postfix{/} % PART \ifupmbookformat \gdef\@part[#1]#2{% \ifnum \c@secnumdepth >-2\relax \refstepcounter{part}% \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% \else \addcontentsline{toc}{part}{#1}% \fi \markboth{}{}% {\huge\centering \interlinepenalty \@M \normalfont \ifnum \c@secnumdepth >-2\relax \upm@format@partnum{\thepart} \par \vskip 20\p@ \fi \upm@format@parttitle{\nohyphens{#2}}\par}% \@endpart} \gdef\@spart#1{% {\centering \interlinepenalty \@M \normalfont \upm@format@parttitle{\nohyphens{#1}}\par}% \@endpart} \fi % CHAPTER \ifupmarticleformat\else \newcommand{\upm@format@makechapterhead}[2]{% %\vspace*{50\p@}% {\parindent \z@ \Huge \raggedleft \normalfont \ifx\@empty#1\ifnum \c@secnumdepth >\m@ne \upm@format@chapternum{\thechapter} \par\nobreak \vskip 20\p@ \fi\fi \interlinepenalty\@M %\ifupmbookformat\doublespacing\fi \upm@format@chaptertitle{\nohyphens{#2}}\par\nobreak \vskip 80\p@ } } %internal implementation of \chapter \gdef\@makechapterhead#1{\upm@format@makechapterhead{\@empty}{#1}} %internal implementation of \chapter* \gdef\@makeschapterhead#1{\upm@format@makechapterhead{\relax}{#1}} \fi % SECTIONS \let\upm@format@sect@old\@sect \let\upm@format@ssect@old\@ssect % public implementation of sections. \renewcommand{\section}{\setcounter{upm@format@section@sectionlevel}{1}\@startsection{section}{1}{\z@}{-3.5ex \@plus -1ex \@minus -.2ex}{2.3ex \@plus.2ex}{\normalfont\Large\scshape}} \renewcommand{\subsection}{\setcounter{upm@format@section@sectionlevel}{2}\@startsection{subsection}{2}{\z@}{-3.25ex\@plus -1ex \@minus -.2ex}{1.5ex \@plus .2ex}{\normalfont\large\scshape}} \renewcommand{\subsubsection}{\setcounter{upm@format@section@sectionlevel}{3}\@startsection{subsubsection}{3}{\z@}{-3.25ex\@plus -1ex \@minus -.2ex}{1.5ex \@plus .2ex}{\normalfont\normalsize\scshape}} % internal implementations for sections. \gdef\@sect#1#2#3#4#5#6[#7]#8{\upm@format@sect@old{#1}{#2}{#3}{#4}{#5}{#6}[#7]{\upm@format@sectiontitle{\theupm@format@section@sectionlevel}{#8}}} \gdef\@ssect#1#2#3#4#5{\upm@format@ssect@old{#1}{#2}{#3}{#4}{\upm@format@sectiontitle{\theupm@format@section@sectionlevel}{#5}}} \gdef\@seccntformat#1{\upm@format@sectionnum{\theupm@format@section@sectionlevel}{\csname the#1\endcsname\upm@format@sectionnum@postfix}\quad} %---------------------------------------- % PAGE LAYOUT %---------------------------------------- % Change the factors for determining the element positions \renewcommand{\topfraction}{.99} % max fraction of floats at top \renewcommand{\bottomfraction}{.99} % max fraction of floats at bottom \renewcommand{\textfraction}{.5} % allow minimal text w. figs \renewcommand{\dbltopfraction}{.66} % fit big float above 2-col. text \renewcommand{\floatpagefraction}{0.99} % require fuller float pages | N.B.: floatpagefraction MUST be less than topfraction !! \renewcommand{\dblfloatpagefraction}{.66} % fit big float above 2-col. text % Update the format of the saved pages and sections \renewcommand{\sectionmark}[1]{\markright{\thesection\ \textsc{#1}}} \ifupmarticleformat\else \renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{}} \renewcommand{\@mkboth}[2]{% \let\upm@doc@MakeUppercase\MakeUppercase% \gdef\MakeUppercase##1{##1}% \chaptermark{#1}% \let\MakeUppercase\upm@doc@MakeUppercase% \let\upm@doc@MakeUppercase\relax% } \fi % Make sure that the page before a part or % a chapter title was empty \renewcommand{\cleardoublepage}{% \clearpage% \if@twoside\ifodd\c@page% \else% \thispagestyle{facingtochapter}% \hbox{}\newpage% \if@twocolumn\hbox{}\newpage% \fi\fi\fi% } \newcommand{\ps@facingtochapter}{\ps@empty} %---------------------------------------- % ADDITIONAL SECTIONS %---------------------------------------- \gdef\upm@format@newsection@alignment{} %----- % Part without number but inside the TOC %\parttoc [toctitle]{title} % left-alignment inside TOC %\parttoc*[toctitle]{title} % right-alignment inside TOC \def\parttoc{\@ifstar% {\gdef\upm@format@newsection@alignment{\protect\numberline{}}\expandafter\upm@format@newsection@part}% {\gdef\upm@format@newsection@alignment{}\expandafter\upm@format@newsection@part}} \def\upm@format@newsection@part{\@ifnextchar [% {\expandafter\upm@format@newsection@part@opt}% {\expandafter\upm@format@newsection@part@nopt}} \def\upm@format@newsection@part@opt[#1]#2{% \part*{#2\addcontentsline{toc}{part}{\upm@format@newsection@alignment{#1}}}% \chaptermark{}% } \def\upm@format@newsection@part@nopt#1{% \part*{#1\addcontentsline{toc}{part}{\upm@format@newsection@alignment{#1}}}% \chaptermark{}% } %----- % Chapter without number but inside the TOC %\chaptertoc [toctitle]{title} % left-alignment inside TOC %\chaptertoc*[toctitle]{title} % right-alignment inside TOC \def\chaptertoc{\@ifstar% {\gdef\upm@format@newsection@alignment{\protect\numberline{}}\expandafter\upm@format@newsection@chapter}% {\gdef\upm@format@newsection@alignment{}\expandafter\upm@format@newsection@chapter}} \def\upm@format@newsection@chapter{\@ifnextchar[% {\upm@format@newsection@chapter@a}% {\upm@format@newsection@chapter@b}% } \def\upm@format@newsection@chapter@a[#1]#2{% \expandafter\chapter*[#1]{#2}% \addcontentsline{toc}{chapter}{\upm@format@newsection@alignment{#1}}% \@ifundefined{minitoc}{}{% \global\addtocounter{mtc}{1}% }% } \def\upm@format@newsection@chapter@b#1{% \expandafter\chapter*{#1}% \addcontentsline{toc}{chapter}{\upm@format@newsection@alignment{#1}}% \@ifundefined{minitoc}{}{% \global\addtocounter{mtc}{1}% }% } %----- % Section without number but inside the TOC %\sectiontoc [toctitle]{title} % left-alignment inside TOC %\sectiontoc*[toctitle]{title} % right-alignment inside TOC \def\sectiontoc{\@ifstar% {\gdef\upm@format@newsection@alignment{\protect\numberline{}}\expandafter\upm@format@newsection@section}% {\gdef\upm@format@newsection@alignment{}\expandafter\upm@format@newsection@section}} \def\upm@format@newsection@section{\@ifnextchar [% {\expandafter\upm@format@newsection@section@opt}% {\expandafter\upm@format@newsection@section@nopt}} \def\upm@format@newsection@section@opt[#1]#2{% \section*{#2\addcontentsline{toc}{section}{\upm@format@newsection@alignment{#1}}}% } \def\upm@format@newsection@section@nopt#1{% \section*{#1\addcontentsline{toc}{section}{\upm@format@newsection@alignment{#1}}}% } %----- % Subsection without number but inside the TOC %\subsectiontoc [toctitle]{title} % left-alignment inside TOC %\subsectiontoc*[toctitle]{title} % right-alignment inside TOC \def\subsectiontoc{\@ifstar% {\gdef\upm@format@newsection@alignment{\protect\numberline{}}\expandafter\upm@format@newsection@subsection}% {\gdef\upm@format@newsection@alignment{}\expandafter\upm@format@newsection@subsection}} \def\upm@format@newsection@subsection{\@ifnextchar [% {\expandafter\upm@format@newsection@subsection@opt}% {\expandafter\upm@format@newsection@subsection@nopt}} \def\upm@format@newsection@subsection@opt[#1]#2{% \subsection*{#2\addcontentsline{toc}{subsection}{\upm@format@newsection@alignment{#1}}}% } \def\upm@format@newsection@subsection@nopt#1{% \subsection*{#1\addcontentsline{toc}{subsection}{\upm@format@newsection@alignment{#1}}}% } %----- % Subsubsection without number but inside the TOC %\subsubsectiontoc [toctitle]{title} % left-alignment inside TOC %\subsubsectiontoc*[toctitle]{title} % right-alignment inside TOC \def\subsubsectiontoc{\@ifstar% {\gdef\upm@format@newsection@alignment{\protect\numberline{}}\expandafter\upm@format@newsection@subsubsection}% {\gdef\upm@format@newsection@alignment{}\expandafter\upm@format@newsection@subsubsection}} \def\upm@format@newsection@subsubsection{\@ifnextchar [% {\expandafter\upm@format@newsection@subsubsection@opt}% {\expandafter\upm@format@newsection@subsubsection@nopt}} \def\upm@format@newsection@subsubsection@opt[#1]#2{% \subsubsection*{#2\addcontentsline{toc}{subsubsection}{\upm@format@newsection@alignment{#1}}}% } \def\upm@format@newsection@subsubsection@nopt#1{% \subsubsection*{#1\addcontentsline{toc}{subsubsection}{\upm@format@newsection@alignment{#1}}}% } %----- % Chapter with different titles for in the TOC, the headers and on the pages %\chapterfull[in toc]{on page}{in header} % with number %\chapterfull*[in toc]{on page}{in header} % without number \def\chapterfull{\@ifstar% {\gdef\upm@format@newsection@thesectionmacro{\chapter*}\upm@format@newsection@chapterfull}% {\gdef\upm@format@newsection@thesectionmacro{\chapter}\upm@format@newsection@chapterfull}% } \def\upm@format@newsection@chapterfull{\@ifnextchar[% \upm@format@newsection@chapterfull@a% \upm@format@newsection@chapterfull@b% } \def\upm@format@newsection@chapterfull@a[#1]#2#3{% \upm@format@newsection@thesectionmacro[#1]{#2}% \chaptermark{#3}% } \def\upm@format@newsection@chapterfull@b#1#2{% \upm@format@newsection@thesectionmacro{#1}% \chaptermark{#2}% } %----- % Section with different titles for in the TOC, the headers and on the pages %\sectionfull[in toc]{on page}{in header} % with number %\sectionfull*[in toc]{on page}{in header} % without number \def\sectionfull{\@ifstar% {\gdef\upm@format@newsection@thesectionmacro{\section*}\upm@format@newsection@sectionfull}% {\gdef\upm@format@newsection@thesectionmacro{\section}\upm@format@newsection@sectionfull}% } \def\upm@format@newsection@sectionfull{\@ifnextchar[% \upm@format@newsection@sectionfull@a% \upm@format@newsection@sectionfull@b% } \def\upm@format@newsection@sectionfull@a[#1]#2#3{% \upm@format@newsection@thesectionmacro[#1]{#2}% \global\sectionmark{#3}% } \def\upm@format@newsection@sectionfull@b#1#2{% \upm@format@newsection@thesectionmacro{#1}% \global\sectionmark{#2}% } %---------------------------------------- % BIBLIOGRAPHY %---------------------------------------- %----- %\bibsize{size} \newcommand{\bibsize}[1]{\gdef\upm@bibsize{#1}} \gdef\upm@bibsize{\small} \gdef\@biblabel#1{{\upm@bibsize{[#1]}}} \gdef\@lbibitem[#1]#2{\item[\@biblabel{#1}\hfill]\upm@bibsize\if@filesw{% \let\protect\noexpand\immediate\write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} \gdef\@bibitem#1{\item\upm@bibsize\if@filesw% \immediate\write\@auxout{\string\bibcite{#1}{\the\value{\@listctr}}}\fi\ignorespaces} %---------------------------------------- % TABLE OF CONTENT %---------------------------------------- \setcounter{secnumdepth}{3} \setcounter{tocdepth}{3} % Change the color of the TOC for the "dotted" lines %\let\upm@format@dottedtocline@old\@dottedtocline %\gdef\@dottedtocline#1#2#3#4#5{% % %{depth}{left margin}{right margin}{text}{page number} % \upm@format@dottedtocline@old{#1}{#2}{#3}{#4}{#5}% %} % Change the color of the TOC for the parts \@ifundefined{l@part}{}{ \let\upm@format@l@part@old\l@part \renewcommand*\l@part[2]{% %{text}{page number} \upm@format@l@part@old{\textcolor{parttitlecolor}{#1}}{\textcolor{parttitlecolor}{#2}}% } } % Change the color of the TOC for the chapters \@ifundefined{l@chapter}{}{ \let\upm@format@l@chapter@old\l@chapter \renewcommand*\l@chapter[2]{% %{text}{page number} \upm@format@l@chapter@old{\textcolor{chaptertitlecolor}{#1}}{\textcolor{chaptertitlecolor}{#2}}% } } % Overide the color and font configurations of the MINITOC package \AtBeginDocument{ \@ifundefined{minitoc}{}{% % Chapter \gdef\mtifont{\normalfont\large\upshape\bfseries\color{chaptertitlecolor}} % Section \gdef\mtcSfont{\normalfont\small\upshape\bfseries\color{sectiontitlecolor}} % Sub-Section and SubSub-Section \gdef\mtcSSfont{\normalfont\small\upshape\mdseries\normalcolor} \global\let\mtcSSSfont\mtcSSfont } } %---------------------------------------- % ENUMERATIONS %---------------------------------------- \newcounter{upm@fmt@savedcounter} \newcommand{\savecounter}[1]{% \setcounter{upm@fmt@savedcounter}{\value{#1}}% } \newcommand{\restorecounter}[1]{% \setcounter{#1}{\theupm@fmt@savedcounter}% } \ifupm@use@override@standard@lists \newcommand{\saveenumcounter}{\savecounter{@upm@fmt@enumdescription@cnt@}} \newcommand{\restoreenumcounter}{\restorecounter{@upm@fmt@enumdescription@cnt@}} \newcommand{\setenumcounter}[1]{\setcounter{@upm@fmt@enumdescription@cnt@}{#1}} \newcommand{\getenumcounter}{\the@upm@fmt@enumdescription@cnt@} \else \newcommand{\saveenumcounter}{\savecounter{@enumctr}} \newcommand{\restoreenumcounter}{\restorecounter{@enumctr}} \newcommand{\setenumcounter}[1]{\setcounter{@enumctr}{#1}\addtocounter{@enumctr}{-1}} \newcommand{\getenumcounter}{\value{@enumctr}} \fi %---------------------------------------- % FOOTNOTE %---------------------------------------- \gdef\upm@footnoteref#1{\upm@textsuperscript{#1}} \gdef\upm@footnotepageref#1#2{\upm@textsuperscript{{#1\tiny(#2)}}} \def\upm@savefootnote#1#2{% \footnote{#1\label{\upm@protect{footnote:#2}}}% \upm@nameundef{footnote:#2:cmd}% } \def\upm@savefootnotestar#1#2{% \upm@namedef{footnote:#2:cmd}{\upm@savefootnote{#1}{#2}}% } \DeclareRobustCommand\savefootnote{\@ifstar\upm@savefootnotestar\upm@savefootnote} \def\upm@reffootnote#1{% \upm@ifdefinedname{footnote:#1:cmd}{% \upm@nameuse{footnote:#1:cmd}}{% \upm@footnoteref{\upm@getref{\upm@protect{footnote:#1}}}% }% \xspace% } \def\upm@reffootnotestar#1{% \upm@ifdefinedname{footnote:#1:cmd}{% \upm@nameuse{footnote:#1:cmd}}{% \xdef\upm@tmp@tmp{\upm@protect{footnote:#1}}% \upm@footnotepageref{\expandafter\upm@getref{\upm@tmp@tmp}}{\expandafter\upm@getpageref{\upm@tmp@tmp}}% \global\let\upm@tmp@tmp\relax% }% \xspace% } \DeclareRobustCommand\reffootnote{\@ifstar\upm@reffootnotestar\upm@reffootnote} %---------------------------------------- % IMAGES IN PARAGRAPHS %---------------------------------------- \newenvironment{umlinpar}[2][width=.45\linewidth]{% \begin{window}[0,r,{\mbox{\hspace{.5cm}\includegraphics[#1]{#2}\vspace{.5cm}}},{}] }{% \end{window}} %---------------------------------------- % DATE %---------------------------------------- %Build a date that has the format supported by tex-upmethodology %\makedate{day}{month}{year} \let\makedate\upm@format@lang@makedate %----- %Replies the year corresponding to the given supported date %\extractyear{date} \let\extractyear\upm@format@lang@extractyear %----- %Replies the month corresponding to the given supported date %\extractmonth{date} \let\extractmonth\upm@format@lang@extractmonth %----- %Replies the day corresponding to the given supported date %\extractday{date} \let\extractday\upm@format@lang@extractday % Redefine the today function \AtBeginDocument{\global\edef\today{\makedate{\the\day}{\the\month}{\the\year}}} %---------------------------------------- % PEOPLE NAME %---------------------------------------- \def\makenamespacing#1{% \upm@format@makenamespacing{#1}\xspace% } \def\upm@format@makenamespacing#1{% \upm@foreach.\in#1\do{% \ignorespaces\upm@foreach@term.\,% }{% \ignorespaces\upm@foreach@term% }% } \gdef\upm@format@people@title#1{\textsc{#1}} \def\upm@format@firstname@format#1{% {\smaller\textsc{\upm@format@makenamespacing{#1}}}% } \def\upm@format@von@format#1{\mbox{\smaller\ignorespaces#1}} \def\upm@format@lastname@format#1{\textsc{\ignorespaces#1}} %\upmmakename[von]{firstname}{lastname}{separator} \newcommand{\upmmakename}[4][\relax]{% \ifx#1\relax% {\upm@format@firstname@format{#2}#4\upm@format@lastname@format{#3}}% \else% {\upm@format@firstname@format{#2}#4\upm@format@von@format{#1}#4\upm@format@lastname@format{#3}}% \fi% \xspace% } \newcommand{\upmmakenamestar}[4][\relax]{% \ifx#1\relax% {\upm@format@lastname@format{#3}#4\upm@format@firstname@format{#2}}% \else% {\upm@format@lastname@format{#3}#4\upm@format@von@format{#1}#4\upm@format@firstname@format{#2}}% \fi% \xspace% } %\makename[von]{firstname}{lastname} \newcommand{\makename}[3][\relax]{% \upmmakename[#1]{#2}{#3}{\ }% } %\makelastname[von]{lastname} \newcommand{\makelastname}[2][\relax]{% \ifx#1\relax% \upm@format@lastname@format{#2}% \else% \upm@format@von@format{#1}\ \upm@format@lastname@format{#2}% \fi% \xspace% } %\makefirstname{firstname} \newcommand{\makefirstname}[1]{% \upm@format@firstname@format{#1}\xspace% } %\prname[von]{firstname}{lastname} %\prname*[von]{firstname}{lastname} \def\prname{\@ifstar\upm@prnamestar\upm@prname} \newcommand{\upm@prname}[3][\relax]{% \upm@format@people@title{\upm@format@lang@professor}\,\upmmakename[#1]{#2}{#3}{\ }% } \newcommand{\upm@prnamestar}[3][\relax]{% \upmmakename[#1]{#2}{#3}{\ }, \upm@format@people@title{\upm@format@lang@professor}% } %\drname[von]{firstname}{lastname} %\drname*[von]{firstname}{lastname} \def\drname{\@ifstar\upm@drnamestar\upm@drname} \newcommand{\upm@drname}[3][\relax]{% \upm@format@people@title{\upm@format@lang@doctor}\,\upmmakename[#1]{#2}{#3}{\ }% } \newcommand{\upm@drnamestar}[3][\relax]{% \upmmakename[#1]{#2}{#3}{\ }, \upm@format@people@title{\upm@format@lang@doctor}% } %\phdname[von]{firstname}{lastname} %\phdname*[von]{firstname}{lastname} \def\phdname{\@ifstar\upm@phdnamestar\upm@phdname} \newcommand{\upm@phdname}[3][\relax]{% \upm@format@people@title{\upm@format@lang@phdoctor}\,\upmmakename[#1]{#2}{#3}{\ }% } \newcommand{\upm@phdnamestar}[3][\relax]{% \upmmakename[#1]{#2}{#3}{\ }, \upm@format@people@title{\upm@format@lang@phdoctor}% } %\scdname[von]{firstname}{lastname} %\scdname*[von]{firstname}{lastname} \def\scdname{\@ifstar\upm@scdnamestar\upm@scdname} \newcommand{\upm@scdname}[3][\relax]{% \upm@format@people@title{\upm@format@lang@scdoctor}\,\upmmakename[#1]{#2}{#3}{\ }% } \newcommand{\upm@scdnamestar}[3][\relax]{% \upmmakename[#1]{#2}{#3}{\ }, \upm@format@people@title{\upm@format@lang@scdoctor}% } %\mdname[von]{firstname}{lastname} %\mdname*[von]{firstname}{lastname} \def\mdname{\@ifstar\upm@mdnamestar\upm@mdname} \newcommand{\upm@mdname}[3][\relax]{% \upm@format@people@title{\upm@format@lang@mdoctor}\,\upmmakename[#1]{#2}{#3}{\ }% } \newcommand{\upm@mdnamestar}[3][\relax]{% \upmmakename[#1]{#2}{#3}{\ }, \upm@format@people@title{\upm@format@lang@mdoctor}% } %\pengname[von]{firstname}{lastname} %\pengname*[von]{firstname}{lastname} \def\pengname{\@ifstar\upm@pengnamestar\upm@pengname} \newcommand{\upm@pengname}[3][\relax]{% \upm@format@people@title{\upm@format@lang@professionalengineer}\,\upmmakename[#1]{#2}{#3}{\ }% } \newcommand{\upm@pengnamestar}[3][\relax]{% \upmmakename[#1]{#2}{#3}{\ }, \upm@format@people@title{\upm@format@lang@professionalengineer}% } %\iengname[von]{firstname}{lastname} %\iengname*[von]{firstname}{lastname} \def\iengname{\@ifstar\upm@iengnamestar\upm@iengname} \newcommand{\upm@iengname}[3][\relax]{% \upm@format@people@title{\upm@format@lang@incorporatedengineer}\,\upmmakename[#1]{#2}{#3}{\ }% } \newcommand{\upm@iengnamestar}[3][\relax]{% \upmmakename[#1]{#2}{#3}{\ }, \upm@format@people@title{\upm@format@lang@incorporatedengineer}% } %---------------------------------------- % INLINE ENUMERATION %---------------------------------------- \newcounter{@@upm@fmt@inlineenumeration} \newcommand{\inlineenumerationlabel}[1]{(#1)} \let\upm@fmt@inlineenum@numberformat\roman \newenvironment{inlineenumeration}{% \begingroup% \let\upm@fmt@inlineenum@currentlabel\@currentlabel% \renewcommand{\item}{\xdef\@currentlabel{\upm@fmt@inlineenum@numberformat{@@upm@fmt@inlineenumeration}}{\inlineenumerationlabel{\@currentlabel}{\addtocounter{@@upm@fmt@inlineenumeration}{1}}}~}% \setcounter{@@upm@fmt@inlineenumeration}{1}% }{% \global\let\@currentlabel\upm@fmt@inlineenum@currentlabel% \endgroup% } %---------------------------------------- % DESCRIPTION LIST WITH NUMBERS %---------------------------------------- \newcounter{@upm@fmt@enumdescription@cnt@} \gdef\upm@fmt@enumdescription@savedlabel{} \gdef\upm@fmt@enumdescription@savedcounter{} \newcommand{\upm@fmt@enumdescription@fmt@}[1]{} \newcommand{\enumdescriptionlabel}[1]{\textbf{#1}} \newcommand{\enumdescriptioncounterseparator}{~-~} \newcommand{\enumdescriptionlabelseparator}{\upm@column@char} % #1: counter style. % #2: text before the counter. % #3: text after the counter. % #4: text between the counter and the description. % #5: text between the description and the rest of the text. % #6: text between the counter (no description) and the rest of the text. \newenvironment{upm@fmt@enumdescription}[6]{% \begin{list}{}{% \renewcommand{\upm@fmt@enumdescription@savedlabel}{\@currentlabel}% \edef\upm@fmt@enumdescription@savedcounter{\the@upm@fmt@enumdescription@cnt@}% \setcounter{@upm@fmt@enumdescription@cnt@}{1}% \ifthenelse{\equal{#1}{a}}{% \renewcommand{\upm@fmt@enumdescription@fmt@}[1]{#2\alph{##1}#3}% }{% \ifthenelse{\equal{#1}{A}}{% \renewcommand{\upm@fmt@enumdescription@fmt@}[1]{#2\Alph{##1}#3}% }{% \ifthenelse{\equal{#1}{i}}{% \renewcommand{\upm@fmt@enumdescription@fmt@}[1]{#2\roman{##1}#3}% }{% \ifthenelse{\equal{#1}{I}}{% \renewcommand{\upm@fmt@enumdescription@fmt@}[1]{#2\Roman{##1}#3}% }{% \renewcommand{\upm@fmt@enumdescription@fmt@}[1]{#2\arabic{##1}#3}% }% }% }% }% \renewcommand{\makelabel}[1]{% \xdef\@currentlabel{\upm@fmt@enumdescription@fmt@{@upm@fmt@enumdescription@cnt@}}% \enumdescriptionlabel{\@currentlabel#4##1\ifthenelse{\equal{a##1}{a}}{#6}{#5}}{\addtocounter{@upm@fmt@enumdescription@cnt@}{1}}}% \expandafter\settowidth{\labelwidth}{#2iii#3}% } }{% \global\let\@currentlabel\upm@fmt@enumdescription@savedlabel% \setcounter{@upm@fmt@enumdescription@cnt@}{\upm@fmt@enumdescription@savedcounter}% \end{list}% } \newenvironment{enumdescriptionx}[3][i]{% \begin{upm@fmt@enumdescription}{#1}{#2}{#3}{\enumdescriptioncounterseparator}{\enumdescriptionlabelseparator}{\enumdescriptionlabelseparator}% }{% \end{upm@fmt@enumdescription}% } \newenvironment{enumdescription}[1][i]{% \begin{upm@fmt@enumdescription}{#1}{}{}{\enumdescriptioncounterseparator}{\enumdescriptionlabelseparator}{\enumdescriptionlabelseparator}% }{% \end{upm@fmt@enumdescription}% } %% Issue #14: enumerate behaves as enumdescription \ifupm@use@override@standard@lists \AtBeginDocument{ \message{*** Overriding the 'enumerate' environment. Pass option 'standardlists' for avoiding this override.} \global\let\enumerate\@undefined \global\let\endenumerate\@undefined \global\NewEnviron{enumerate}[1][1\string.~]{% % Parse the parameter for extracting the type of the enumeration, the prefix and the postfix \in@{a}{#1}\ifin@ \gdef\upm@fmt@enumerate@style{a}% \def\reserved@a##1a##2\@nil{% \def\upm@fmt@enumerate@prefix{##1}% \def\upm@fmt@enumerate@postfix{##2}% }% \reserved@a#1\@nil% \else\in@{1}{#1}\ifin@ \gdef\upm@fmt@enumerate@style{1}% \def\reserved@a##11##2\@nil{% \def\upm@fmt@enumerate@prefix{##1}% \def\upm@fmt@enumerate@postfix{##2}% }% \reserved@a#1\@nil% \else\in@{A}{#1}\ifin@ \gdef\upm@fmt@enumerate@style{A}% \def\reserved@a##1A##2\@nil{% \def\upm@fmt@enumerate@prefix{##1}% \def\upm@fmt@enumerate@postfix{##2}% }% \reserved@a#1\@nil% \else\in@{i}{#1}\ifin@ \gdef\upm@fmt@enumerate@style{i}% \def\reserved@a##1i##2\@nil{% \def\upm@fmt@enumerate@prefix{##1}% \def\upm@fmt@enumerate@postfix{##2}% }% \reserved@a#1\@nil% \else\in@{I}{#1}\ifin@ \gdef\upm@fmt@enumerate@style{I}% \def\reserved@a##1I##2\@nil{% \def\upm@fmt@enumerate@prefix{##1}% \def\upm@fmt@enumerate@postfix{##2}% }% \reserved@a#1\@nil% \else% \errmessage{Invalid format of the enumerate counter} \fi\fi\fi\fi\fi% \protected@xdef\upm@tmp{\protect\protect\protect\begin{upm@fmt@enumdescription}{\upm@fmt@enumerate@style}{\upm@fmt@enumerate@prefix}{\upm@fmt@enumerate@postfix}{}{\protect\enumdescriptionlabelseparator}{}}% % \upm@tmp% %\protect\begin{upm@fmt@enumdescription}{#1}{}{\string.~}{}{\enumdescriptionlabelseparator}{}% \BODY% \protect\end{upm@fmt@enumdescription}% } } \fi %---------------------------------------- % DESCRIPTION LIST WITH BULLETS %---------------------------------------- \ifupm@use@override@standard@lists \gdef\upm@fmt@itemizeddescription@separator{\upm@column@char\ } \newcommand{\upm@fmt@itemizeddescription@formatdescription}[1]{\textbf{#1}} \newcommand{\upm@fmt@itemizeddescription@desc}[2]{% \upm@fmt@itemizeddescription@formatdescription{#1#2}% } \let\upm@fmt@olditem\item \let\upm@item@param\upm@fmt@olditem \let\upm@item@noparam\upm@fmt@olditem \def\item{\@ifnextchar[\upm@item@param\upm@item@noparam} \newcommand{\overridedescriptionenvironment}{% \message{*** Overriding the 'description' environment. Pass option 'standardlists' for avoiding this override.} % Override the description environment \global\let\description\@undefined \global\let\enddescription\@undefined \global\NewEnviron{description}[1][\upm@fmt@itemizeddescription@separator]{ \begin{itemize}% \renewcommand{\upm@item@param}[1][]{\upm@fmt@olditem \upm@fmt@itemizeddescription@desc{####1}{##1}}% \renewcommand{\upm@item@noparam}{\upm@fmt@olditem }% \BODY% \end{itemize}% } } \newcommand{\restoredescriptionenvironment}{% \message{*** Restoring the 'description' environment.} \global\let\description\@upm@fmt@overriden@description% \global\let\enddescription\@upm@fmt@overriden@enddescrption% } \AtBeginDocument{ % Save the original definition for later restore \global\let\@upm@fmt@overriden@description\description% \global\let\@upm@fmt@overriden@enddescrption\enddescription% \overridedescriptionenvironment% \@ifundefined{printglossary}{}{% \message{*** Overriding the 'printglossary' macro.} \global\let\upm@fmt@printglossary@original\printglossary% \global\newcommand{\upm@fmt@printglossary}[1][]{% \message{*** Evaluating 'printglossary' macro.}% \restoredescriptionenvironment% \upm@fmt@printglossary@original[#1]% \overridedescriptionenvironment% }% \global\let\printglossary\upm@fmt@printglossary% }% } \else \newcommand{\overridedescriptionenvironment}{} \newcommand{\restoredescriptionenvironment}{} \fi %---------------------------------------- % SIZE MANAGEMENT %---------------------------------------- \newenvironment{upmfontsize}[1]{% \begingroup% \let\upm@Huge\Huge% \let\upm@huge\huge% \let\upm@normalsize\normalsize% \let\upm@small\small% \let\upm@scriptsize\scriptsize% \let\upm@footnotesize\footnotesize% \let\upm@tiny\tiny% % \ifx#1\Huge% \let\Huge\upm@Huge% \let\huge\upm@Huge% \let\small\upm@huge% \let\scriptsize\upm@normalsize% \let\footnotesize\upm@small% \let\tiny\upm@scriptsize% \else\ifx#1\huge% \let\Huge\upm@Huge% \let\huge\upm@Huge% \let\small\upm@normalsize% \let\scriptsize\upm@small% \let\footnotesize\upm@scriptsize% \let\tiny\upm@footnotesize% \else\ifx#1\small% \let\Huge\upm@huge% \let\huge\upm@normalsize% \let\small\upm@scriptsize% \let\scriptsize\upm@footnotesize% \let\footnotesize\upm@tiny% \let\tiny\upm@tiny% \else\ifx#1\scriptsize% \let\Huge\upm@normalsize% \let\huge\upm@small% \let\small\upm@footnotesize% \let\scriptsize\upm@tiny% \let\footnotesize\upm@tiny% \let\tiny\upm@tiny% \else\ifx#1\footnotesize% \let\Huge\upm@small% \let\huge\upm@scriptsize% \let\small\upm@tiny% \let\scriptsize\upm@tiny% \let\footnotesize\upm@tiny% \let\tiny\upm@tiny% \else\ifx#1\tiny% \let\Huge\upm@scriptsize% \let\huge\upm@footnotesize% \let\small\upm@tiny% \let\scriptsize\upm@tiny% \let\footnotesize\upm@tiny% \let\tiny\upm@tiny% \fi% \fi% \fi% \fi% \fi% \fi% #1% }{\endgroup} %---------------------------------------- % FRAMED MINIPAGE %---------------------------------------- \newsavebox{\upm@framed@minipage} %\begin{framedminipage}{width}...\end{framedminipage} \newenvironment{framedminipage}[1]{% \begin{lrbox}{\upm@framed@minipage}\begin{minipage}{#1}% }{% \end{minipage}\end{lrbox}\fbox{\usebox{\upm@framed@minipage}}} %\begin{framedcolorminipage}{width}{border}{background}...\end{framedcolorminipage} \newenvironment{framedcolorminipage}[3]{% \newcommand{\upm@framed@minipage@border}{#2}% \newcommand{\upm@framed@minipage@background}{#3}% \begin{lrbox}{\upm@framed@minipage}\begin{minipage}{#1}% }{% \end{minipage}\end{lrbox}\fcolorbox{\upm@framed@minipage@border}{\upm@framed@minipage@background}{\usebox{\upm@framed@minipage}}} %---------------------------------------- % HIGHLIGH BOXES %---------------------------------------- \newsavebox{\upm@highlight@box@save} % Parameters are: % #1: the width of the box % #2: the name of the picture % #3: the name of the border color % #4: the name of the background color % #5: the name of the text color \newenvironment{upm@highligh@box}[5]{% \par \vspace{.5cm} \begin{tabular}{|p{#1}|} \arrayrulecolor{#3}% \hline \cellcolor{#4} \begin{window}[0,l,{\mbox{\includegraphics[width=1cm]{#2}}},{}] \color{#5} }{% \normalcolor\end{window}\\ \hline \end{tabular} \vspace{.5cm} \par } % Colors for the highligh boxes \colorlet{highlightboxbackground_caution}{white} \colorlet{highlightboxforeground_caution}{black} \colorlet{highlightboxborder_caution}{black} \colorlet{highlightboxbackground_info}{white} \colorlet{highlightboxforeground_info}{black} \colorlet{highlightboxborder_info}{black} \colorlet{highlightboxbackground_question}{white} \colorlet{highlightboxforeground_question}{black} \colorlet{highlightboxborder_question}{black} \newenvironment{upmcaution}[1][.8\linewidth]{% \bgroup\centering\upm@highligh@box{#1}{upm_caution.pdf}{highlightboxborder_caution}{highlightboxbackground_caution}{highlightboxforeground_caution}% }{% \endupm@highligh@box\egroup% } \newenvironment{upminfo}[1][.8\linewidth]{% \bgroup\centering\upm@highligh@box{#1}{upm_info.pdf}{highlightboxborder_info}{highlightboxbackground_info}{highlightboxforeground_info}% }{% \endupm@highligh@box\egroup% } \newenvironment{upmquestion}[1][.8\linewidth]{% \bgroup\centering\upm@highligh@box{#1}{upm_question.pdf}{highlightboxborder_question}{highlightboxbackground_question}{highlightboxforeground_question}% }{% \endupm@highligh@box\egroup% } %---------------------------------------- % PROVIDE URL MACROS, WHICH WILL BE % OVERRIDDEN BY THE DOCUMENT CLASS %---------------------------------------- \newcommand{\url}[2][]{\texttt{#2}} \newcommand{\href}[3][]{\texttt{#3}} %---------------------------------------- % Exponents and Indices %---------------------------------------- \gdef\textup#1{\textsuperscript{#1}\xspace} \def\@textsubscript#1{% {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}} \gdef\textsubscript#1{\@textsubscript{\selectfont#1}} \gdef\textdown#1{\textsubscript{#1}\xspace} %---------------------------------------- % UNDERLINE %---------------------------------------- \let\upm@oldunderline\underline \renewcommand{\underline}[1]{\upm@oldunderline{\smash{#1}}} %---------------------------------------- % ENVIRONMENT FOR DEFINITIONS %---------------------------------------- %----- % Defining the style for the definitions \colorlet{definitionbackground}{backtableheader} \colorlet{definitionheaderforeground}{fronttableheader} \colorlet{definitionborder}{fronttableheader} \colorlet{definitiontextforeground}{fronttableheader} \ifupmlang{french}{ \gdef\definitionname{D\'efinition} \gdef\listdefinitionname{Liste des d\'efinitions} }{ \gdef\definitionname{Definition} \gdef\listdefinitionname{List of Definitions} } \gdef\upm@definition@width{.9\linewidth} \gdef\upm@definition@rule@width{\linewidth} \gdef\upm@definition@rule@height{0.4pt} \newtheoremstyle{upmdefinition}% name of the style to be used {}% measure of space to leave above the theorem. E.g.: 3pt {}% measure of space to leave below the theorem. E.g.: 3pt {\normalfont}% name of font to use in the body of the theorem {}% measure of space to indent the head {\normalfont\bfseries}% name of head font {\\[-1em]{\textcolor{definitionborder}{\rule{\upm@definition@rule@width}{\upm@definition@rule@height}}}}% punctuation between head and body {\newline}% space after theorem head {\textcolor{definitionheaderforeground}{\thmname{#1}\thmnumber{~#2}\upm@column@char\thmnote{ #3}}\vspace{.25em}}% Manually specify head %----- % Declare a theorem with the standard UPM style % \declareupmtheorem[theorem_style]{name}{label}{list_label} \newcommand{\declareupmtheorem}[4][upmdefinition]{% \global\declaretheorem[name={#3},style=#1]{upm#2}% \global\newenvironment{#2}[1][]{% \par\vspace{\parsep}\centering\begin{framedcolorminipage}{\upm@definition@width}{definitionborder}{definitionbackground}% \color{definitiontextforeground}% \begin{upm#2}[##1]% }{% \end{upm#2}% \end{framedcolorminipage}\vspace{\parsep}\par% }% % Check the version of the thmtools because the TeXLive distribution % gives a too old version. \@ifpackagelater{thm-listof}{2012/05/03}{% \global\@namedef{listof#2s}{% \global\let\upm@definition@old@listtheoremname\listtheoremname% \global\let\upm@definition@old@upmtheoremopt\upm@definition@upmtheoremopt% \gdef\listtheoremname{#4}% \renewcommand{\upm@definition@upmtheoremopt}[1]{}% \expandafter\listoftheorems[ignoreall,show={upm#2}]% \global\let\listtheoremname\upm@definition@old@listtheoremname% \global\let\upm@definition@upmtheoremopt\upm@definition@old@upmtheoremopt% }% }{% \@latex@warning{Your version of the thmtools is too old. I recommend you to install the version 2012/05/04, or later.} \global\@namedef{listof#2s}{% \global\let\upm@tmp\listtheoremname% \gdef\listtheoremname{#4}% \listoftheorems% \global\let\listtheoremname\upm@tmp% }% } } \@onlypreamble\declareupmtheorem \gdef\thmtformatoptarg#1{\upm@column@char\ #1}% % Permits to define a part of the definition's name that is % rendered only in core part of the document, not in the % list of theorems \gdef\upm@definition@upmtheoremopt#1{#1} \gdef\upmtheoremopt#1{\protect\upm@definition@upmtheoremopt{#1}} %----- % Declare the definition environment \declareupmtheorem{definition}{\definitionname}{\listdefinitionname} %---------------------------------------- % ENVIRONMENT FOR EMPHBOX %---------------------------------------- %----- % Defining the style for the emphbox \colorlet{emphboxbackground}{backtableheader} \colorlet{emphboxborder}{fronttableheader} \colorlet{emphboxtext}{fronttableheader} \colorlet{emphboxbackgroundb}{yellow!7} \colorlet{emphboxbackgroundc}{green!10} %----- % Draw an emph box without title % [#1]: width of the box (linewidth by default) \NewEnviron{emphbox}[1][\linewidth]{% \begin{framedcolorminipage}{#1}{emphboxborder}{emphboxbackground}% \centering\color{emphboxtext}\BODY% \end{framedcolorminipage}% } %----- % Draw an emph box with title % [#1]: width of the box (linewidth by default) % #2: text of the title \NewEnviron{titleemphbox}[2][\linewidth]{% \begin{framedcolorminipage}{#1}{emphboxborder}{emphboxbackground}% \centering\color{emphboxtext}% \vspace{.25cm}\uline{\textbf{#2}}\\[.25cm]% \raggedright\BODY\vspace{.25cm}% \end{framedcolorminipage}\\[.4cm]% } %----- % Draw an emph box without title with the second background color % [#1]: width of the box (linewidth by default) % #2: text of the title \NewEnviron{titleemphbox2}[2][\linewidth]{% \begin{framedcolorminipage}{#1}{emphboxborder}{emphboxbackgroundb}% \centering\color{emphboxtext}% \vspace{.25cm}\uline{\textbf{#2}}\\[.25cm]% \raggedright\BODY\vspace{.25cm}% \end{framedcolorminipage}\\[.4cm]% } %----- % Draw an emph box without title with the third background color % [#1]: width of the box (linewidth by default) % #2: text of the title \NewEnviron{titleemphbox3}[2][\linewidth]{% \begin{framedcolorminipage}{#1}{emphboxborder}{emphboxbackgroundc}% \centering\color{emphboxtext}% \vspace{.25cm}\uline{\textbf{#2}}\\[.25cm]% \raggedright\BODY\vspace{.25cm}% \end{framedcolorminipage}\\[.4cm]% } \endinput