1 % Layout and Pagraph Format for Unified Process Methodology
3 % Copyright (c) 2006-2009, 2012-2014 Stephane GALLAND <galland@arakhne.org>
5 % This program is free library; you can redistribute it and/or modify
6 % it under the terms of the GNU Lesser General Public License as
7 % published by the Free Software Foundation; either version 3 of the
8 % License, or any later version.
10 % This library is distributed in the hope that it will be useful, but
11 % WITHOUT ANY WARRANTY; without even the implied warranty of
12 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 % Lesser General Public License for more details.
15 % You should have received a copy of the GNU Lesser General Public
16 % License along with this library; see the file COPYING. If not,
17 % write to the Free Software Foundation, Inc., 59 Temple Place - Suite
18 % 330, Boston, MA 02111-1307, USA.
20 \global\edef\upm@package@fmt@ver{2015/02/27}
22 \NeedsTeXFormat{LaTeX2e}[1995/12/01]
23 \ProvidesPackage{upmethodology-fmt}[\upm@package@fmt@ver]
25 \RequirePackage{upmethodology-p-common}
27 \gdef\upm@fmt@force@single@spacing#1{{\begin{singlespace}#1\end{singlespace}}}
28 \gdef\upm@date@head#1/#2\@nil{#1}
29 \gdef\upm@date@tail#1/#2\@nil{#2}
30 \gdef\upm@date@first#1{{\expandafter\upm@date@head#1\expandafter\@nil}}
31 \gdef\upm@date@second#1{{\expandafter\expandafter\expandafter\upm@date@head\expandafter\upm@date@tail#1\expandafter\@nil\expandafter\expandafter\expandafter\@nil}}
32 \gdef\upm@date@third#1{{\expandafter\expandafter\expandafter\upm@date@tail\expandafter\upm@date@tail#1\expandafter\@nil\expandafter\expandafter\expandafter\@nil}}
34 \newif\ifupm@use@override@standard@lists
35 \global\upm@use@override@standard@liststrue
37 %----------------------------------------
39 %----------------------------------------
40 \global\let\upm@format@lang@extractyear\upm@date@first%
41 \def\upm@format@lang@english{%
42 \gdef\upm@lang@@{\message{**** upmethodology-fmt is using English language ****}}%
43 \global\renewcommand{\upm@format@lang@makedate}[3]{##3\string/\two@digits{##2}\string/\two@digits{##1}}%
44 \global\let\upm@format@lang@extractyear\upm@date@first%
45 \global\let\upm@format@lang@extractmonth\upm@date@second%
46 \gdef\upm@format@lang@professor{Pr.}%
47 \gdef\upm@format@lang@doctor{Dr.}%
48 \gdef\upm@format@lang@phdoctor{Ph.D.}%
49 \gdef\upm@format@lang@scdoctor{Sc.D.}%
50 \gdef\upm@format@lang@mdoctor{M.D.}%
51 \gdef\upm@format@lang@professionalengineer{CEng.}%
52 \gdef\upm@format@lang@incorporatedengineer{IEng.}%
54 \def\upm@format@lang@french{%
55 \gdef\upm@lang@@{\message{**** upmethodology-fmt is using French language ****}}%
56 \global\renewcommand{\upm@format@lang@makedate}[3]{\two@digits{##1}\string/\two@digits{##2}\string/##3}%
57 \global\let\upm@format@lang@extractyear\upm@date@third%
58 \global\let\upm@format@lang@extractmonth\upm@date@second%
59 \global\let\upm@format@lang@extractday\upm@date@first%
60 \gdef\upm@format@lang@professor{Pr.}%
61 \gdef\upm@format@lang@doctor{Dr.}%
62 \gdef\upm@format@lang@phdoctor{Ph.D.}%
63 \gdef\upm@format@lang@scdoctor{Sc.D.}%
64 \gdef\upm@format@lang@mdoctor{M.D.}%
65 \gdef\upm@format@lang@professionalengineer{Ing.}%
66 \gdef\upm@format@lang@incorporatedengineer{Ing.}%
68 \global\providecommand{\upm@format@lang@makedate}[3]{}%
70 %----------------------------------------
72 %----------------------------------------
73 \DeclareOption{french}{%
74 \upm@format@lang@french
75 \PassOptionsToPackage{french}{varioref}
77 \DeclareOption{francais}{%
78 \upm@format@lang@french
79 \PassOptionsToPackage{french}{varioref}
81 \DeclareOption{english}{%
82 \upm@format@lang@english
83 \PassOptionsToPackage{english}{varioref}
85 \DeclareOption{standardlists}{%
86 \global\upm@use@override@standard@listsfalse
88 \ExecuteOptions{english}
93 \RequirePackage{graphicx}
94 \RequirePackage{subfigure}
95 \RequirePackage{tabularx}
96 \RequirePackage{multicol}
97 \RequirePackage{colortbl}
98 \RequirePackage{picinpar}
99 \RequirePackage{amsmath}
100 \RequirePackage{amsthm}
101 \RequirePackage{thmtools}
102 \RequirePackage{pifont}
103 \RequirePackage{setspace}
104 \RequirePackage{varioref}
105 \RequirePackage{txfonts}
106 \RequirePackage{relsize}
107 \RequirePackage{xkeyval}
108 \RequirePackage{hyphenat}
110 \RequirePackage{environ}% for advanced environment declaration
112 %----------------------------------------
113 % Exponent and indice
114 %----------------------------------------
116 %\newcommand{\textsup}[1]{\ensuremath{^{\text{#1}}}\xspace}
117 \newcommand{\textsup}[1]{\upm@textsuperscript{#1}\xspace}
119 %\newcommand{\textsub}[1]{\ensuremath{_{\text{#1}}}\xspace}
120 \newcommand{\textsub}[1]{\upm@textsubscript{#1}\xspace}
122 %----------------------------------------
124 %----------------------------------------
125 \newcommand{\Emph}[1]{\textbf{#1}\xspace}
127 %----------------------------------------
129 %----------------------------------------
130 \renewcommand{\copyright}{\Pisymbol{psy}{211}\xspace}
131 \newcommand{\trademark}{\Pisymbol{psy}{228}\xspace}
132 \newcommand{\regmark}{\Pisymbol{psy}{226}\xspace}
133 \newcommand{\smalltrade}{{\tiny\trademark}\xspace}
134 \newcommand{\smallreg}{{\tiny\regmark}\xspace}
135 \newcommand{\smallcopy}{{\tiny\copyright}\xspace}
136 \newcommand{\ust}{\textsup{st}}
137 \newcommand{\und}{\textsup{nd}}
138 \newcommand{\urd}{\textsup{rd}}
139 \newcommand{\uth}{\textsup{th}}
141 %----------------------------------------
143 %----------------------------------------
144 \newcommand{\R}{\ensuremath{\mathbb{R}}}
145 \newcommand{\N}{\ensuremath{\mathbb{N}}}
146 \newcommand{\Z}{\ensuremath{\mathbb{Z}}}
147 \newcommand{\C}{\ensuremath{\mathbb{C}}}
148 \newcommand{\Q}{\ensuremath{\mathbb{Q}}}
149 \newcommand{\powerset}{\ensuremath{\mathcal{P}}}
151 \DeclareMathOperator{\sgn}{sgn}
153 %----------------------------------------
154 % DEFAULT GRAPHICX CONFIGURATION
155 %----------------------------------------
158 \DeclareGraphicsExtensions{.pdf,.png,.jpg,.jpeg,.gif}
160 \DeclareGraphicsExtensions{.eps,.png,.jpg,.jpeg,.gif}
164 %----------------------------------------
166 %----------------------------------------
168 \newcommand{\upm@mfigure}[5][ht]{
171 \includegraphics[#2]{#3}%
177 \newcommand{\upm@mfigurestar}[5][ht]{
180 \includegraphics[#2]{#3}%
187 %\mfigure[position]{options}{filename}{caption}{label}
188 \def\mfigure{\@ifstar\upm@mfigurestar\upm@mfigure}
191 \newcommand{\figref}[1]{\ref{fig:#1}}
194 \newcommand{\figpageref}[1]{\pageref{fig:#1}}
199 \newcounter{upm@subfigure@count}
201 \newcommand{\upm@beginsubfigure}[4]{
202 \let\upm@mfiguresaved\mfigure
203 %options,filename,caption,label
204 \renewcommand{\mfigure}[5][]{
205 \xdef\upm@tmp@subfigure@label{\alph{upm@subfigure@count}}%
207 \includegraphics[##2]{##3}%
209 \label{fig:#4:\upm@tmp@subfigure@label}%
211 \addtocounter{upm@subfigure@count}{1}%
213 %options,filename,caption
214 \newcommand{\msubfigure}[3]{
215 \xdef\upm@tmp@subfigure@label{\alph{upm@subfigure@count}}%
217 \includegraphics[##1]{##2}%
218 \label{fig:#4:\upm@tmp@subfigure@label}%
220 \addtocounter{upm@subfigure@count}{1}%
222 \setcounter{upm@subfigure@count}{1}
223 \gdef\upm@mfigurescaption{#3}%
224 \gdef\upm@mfigureslabel{fig:#4}%
225 \begin{#1}[#2]\centering %
228 \newcommand{\upm@endsubfigure}[1]{
229 \caption{\upm@mfigurescaption}%
230 \label{\upm@mfigureslabel}%
232 \let\mfigure\upm@mfiguresaved
236 %\mfigures[position]{caption}{label}
237 \newenvironment{mfigures}[3][ht]{
238 \upm@beginsubfigure{figure}{#1}{#2}{#3}%
240 \upm@endsubfigure{figure}%
243 %\mfigures*[position]{caption}{label}
244 \newenvironment{mfigures*}[3][ht]{
245 \upm@beginsubfigure{figure*}{#1}{#2}{#3}%
247 \upm@endsubfigure{figure*}%
250 %----------------------------------------
251 % IMAGES INCLUDING TeX EXPRESSIONS
252 %----------------------------------------
255 % This section is copied from the AutoLaTeX package
256 % http://www.arakhne.org/autolatex
260 %\DeclareGraphicsExtensionsWtex{coma separated extensions}
261 \providecommand{\DeclareGraphicsExtensionsWtex}[1]{%
262 \xdef\@autolatex@wtfig@extensions{\zap@space#1 \@empty}%
265 \DeclareGraphicsExtensionsWtex{.pdftex_t,.pdf_tex}
267 \DeclareGraphicsExtensionsWtex{.pstex_t,.ps_tex}
270 \providecommand{\@autolatex@wtfig@searchinpath}[1]{%
272 \protected@edef\@autolatex@wtfig@tmp{\protect\resizebox{\@autolatex@wtfig@width}{\@autolatex@wtfig@height}{\protect\input{#1}}}%
274 \@for\@autolatex@wtfig@pathtmp:=\Ginput@path\do{%
275 \ifx\@autolatex@wtfig@tmp\relax%
276 \IfFileExists{\@autolatex@wtfig@pathtmp#1}{%
277 \protected@edef\@autolatex@wtfig@tmp{\protect\resizebox{\@autolatex@wtfig@width}{\@autolatex@wtfig@height}{\protect\input{\@autolatex@wtfig@pathtmp#1}}}%
284 \define@key[autolatex]{withtex}{width}{%
285 \gdef\@autolatex@wtfig@width{#1}%
287 \define@key[autolatex]{withtex}{height}{%
288 \gdef\@autolatex@wtfig@height{#1}%
292 %\includefigurewtex[width=xx,height=yy]{filename}
293 \providecommand{\includefigurewtex}[2][width=\linewidth]{%
295 \gdef\@autolatex@wtfig@width{!}%
296 \gdef\@autolatex@wtfig@height{!}%
297 \setkeys[autolatex]{withtex}{#1}%
299 \global\let\@autolatex@wtfig@tmp\relax%
300 \global\let\@autolatex@wtfig@ext\relax%
301 \global\let\@autolatex@wtfig@path\relax%
303 \ifx\filename@ext\relax%
304 \@for\@autolatex@wtfig@exttmp:=\@autolatex@wtfig@extensions\do{%
305 \@autolatex@wtfig@searchinpath{#2\@autolatex@wtfig@exttmp}%
308 \@autolatex@wtfig@searchinpath{#2\@autolatex@wtfig@exttmp}%
311 \ifx\@autolatex@wtfig@tmp\relax%
312 \errmessage{Package upmethodology-fmt: File not found '#2', needed for figure inclusion}%
314 \@autolatex@wtfig@tmp%
320 \global\let\includegraphicswtex\includefigurewtex
322 %----------------------------------------
323 % ENVIRONMENT FOR IMAGES INCLUDING TeX EXPRESSIONS
324 %----------------------------------------
326 \gdef\upm@figtex@dyncaption@remove{}
327 \gdef\upm@figtex@figremove#1{%
328 \global\expandafter\let\csname FIG#1\endcsname\relax%
330 \gdef\upm@figtex@restore{%
331 \upm@figtex@dyncaption@remove%
332 \gdef\upm@figtex@dyncaption@remove{}
335 %\figmath{id}{content}
337 \expandafter\gdef\csname FIG#1\endcsname{\ensuremath{#2}}%
338 \global\protected@edef\upm@figtex@dyncaption@remove{\upm@figtex@dyncaption@remove\protect\upm@figtex@figremove{#1}}%
341 %\figtext{id}{content}
343 \expandafter\gdef\csname FIG#1\endcsname{#2}%
344 \global\protected@edef\upm@figtex@dyncaption@remove{\upm@figtex@dyncaption@remove\protect\upm@figtex@figremove{#1}}%
347 \let\upm@fmt@figtex@nil\@nil
348 \def\upm@fmt@figtex@parseparams#1=#2\upm@fmt@figtex@nil{\gdef\@tmp{#2}}
350 \newcommand{\upm@mfigurewtex}[5][ht]{
353 % Providing an ascendent compatibility on the second parameter:
354 % - Prefered value of the parameter: a list of key/value pairs;
355 % - Old fashion value of the parameter: the value for the "width" key.
356 {\upm@fmt@figtex@parseparams #2====\upm@fmt@figtex@nil}%
357 \ifthenelse{\equal{\@tmp}{===}}{%
358 \includegraphicswtex[width=#2]{#3}%
360 \includegraphicswtex[#2]{#3}%
368 \newcommand{\upm@mfigurewtexstar}[5][ht]{
371 % Providing an ascendent compatibility on the second parameter:
372 % - Prefered value of the parameter: a list of key/value pairs;
373 % - Old fashion value of the parameter: the value for the "width" key.
374 {\upm@fmt@figtex@parseparams #2====\upm@fmt@figtex@nil}%
375 \ifthenelse{\equal{\@tmp}{===}}{%
376 \includegraphicswtex[width=#2]{#3}%
378 \includegraphicswtex[#2]{#3}%
387 %\mfigurewtex[position]{options}{filename}{caption}{label}
388 \def\mfigurewtex{\@ifstar\upm@mfigurewtexstar\upm@mfigurewtex}
392 %----------------------------------------
394 %----------------------------------------
397 \definecolor{backtableheader}{rgb}{0.92,0.94,1}
398 \definecolor{fronttableheader}{rgb}{0.23,0.33,0.48}
400 \def\upm@fmt@table@title#1{\color{fronttableheader} \cellcolor{backtableheader} {\bfseries #1}}
402 \def\upm@fmt@table@column@title#1{\hfil{\color{fronttableheader} \cellcolor{backtableheader} {\itshape#1}}\hfil}
404 % Utility functions for mtabular
405 \newcounter{upm@fmt@mtabular@columnnumber}
407 \gdef\upm@fmt@mtabular@expandtitle#1#2{%
408 \multicolumn{#1}{|c|}{\upm@fmt@table@title{\ignorespaces#2\ignorespaces}}%
411 \newcommand{\tabulartitlespec}[1]{%
412 \gdef\upm@fmt@mtabular@expandtitle##1##2{%
413 \multicolumn{##1}{#1}{\upm@fmt@table@title{\ignorespaces##2\ignorespaces}}%
418 %\mtabular[width]{ncolumns}{columns}
419 \newenvironment{mtabular}[3][\linewidth]{%
420 \newcommand{\tabulartitle}[1]{%
422 \upm@fmt@mtabular@expandtitle{#2}{##1} \\%
425 \newcommand{\tabulartitleinside}[1]{%
427 \upm@fmt@mtabular@expandtitle{#2}{##1} \\%
430 \newcommand*{\upm@fmt@mtabular@column@next}[1]{%
431 & \upm@fmt@table@column@title{\ignorespaces##1\ignorespaces}%
432 \addtocounter{upm@fmt@mtabular@columnnumber}{-1}%
433 \ifnum0<\value{upm@fmt@mtabular@columnnumber}%
434 \let\upm@fmt@mtabular@column@continue\upm@fmt@mtabular@column@next%
436 \\ \hline \let\upm@fmt@mtabular@column@continue\relax%
438 \upm@fmt@mtabular@column@continue%
440 \newcommand*{\upm@fmt@mtabular@column@first}[1]{%
441 \upm@fmt@table@column@title{\ignorespaces##1\ignorespaces}%
442 \addtocounter{upm@fmt@mtabular@columnnumber}{-1}%
443 \ifnum0<\value{upm@fmt@mtabular@columnnumber}%
444 \let\upm@fmt@mtabular@column@continue\upm@fmt@mtabular@column@next%
446 \\ \hline \let\upm@fmt@mtabular@column@continue\relax%
448 \upm@fmt@mtabular@column@continue%
450 \newcommand{\tabularheader}{%
451 \setcounter{upm@fmt@mtabular@columnnumber}{#2}%
452 \upm@fmt@mtabular@column@first%
454 \newcommand{\tabularrowheader}[1]{%
455 \centering\upm@fmt@table@column@title{\ignorespaces##1}%
457 \begingroup\tabularx{#1}{#3}%
459 \endtabularx\endgroup%
463 %\mtable[options]{width}{ncolumns}{columns}{caption}{label}
465 \define@key[autolatex]{mtable}{size}{\gdef\@autolatex@mtable@size{#1}}
466 % position: h t b p H !
467 \define@key[autolatex]{mtable}{h}[\relax]{\gdef\@autolatex@mtable@position{h}}
468 \define@key[autolatex]{mtable}{t}[\relax]{\gdef\@autolatex@mtable@position{t}}
469 \define@key[autolatex]{mtable}{b}[\relax]{\gdef\@autolatex@mtable@position{b}}
470 \define@key[autolatex]{mtable}{p}[\relax]{\gdef\@autolatex@mtable@position{p}}
471 \define@key[autolatex]{mtable}{H}[\relax]{\gdef\@autolatex@mtable@position{H}}
472 \define@key[autolatex]{mtable}{ht}[\relax]{\gdef\@autolatex@mtable@position{ht}}
473 \define@key[autolatex]{mtable}{hb}[\relax]{\gdef\@autolatex@mtable@position{hb}}
474 \define@key[autolatex]{mtable}{hp}[\relax]{\gdef\@autolatex@mtable@position{hp}}
475 \define@key[autolatex]{mtable}{hH}[\relax]{\gdef\@autolatex@mtable@position{hH}}
476 \define@key[autolatex]{mtable}{h!}[\relax]{\gdef\@autolatex@mtable@position{h!}}
477 \define@key[autolatex]{mtable}{tb}[\relax]{\gdef\@autolatex@mtable@position{tb}}
478 \define@key[autolatex]{mtable}{tp}[\relax]{\gdef\@autolatex@mtable@position{tp}}
479 \define@key[autolatex]{mtable}{tH}[\relax]{\gdef\@autolatex@mtable@position{tH}}
480 \define@key[autolatex]{mtable}{t!}[\relax]{\gdef\@autolatex@mtable@position{t!}}
481 \define@key[autolatex]{mtable}{bp}[\relax]{\gdef\@autolatex@mtable@position{bp}}
482 \define@key[autolatex]{mtable}{bH}[\relax]{\gdef\@autolatex@mtable@position{bH}}
483 \define@key[autolatex]{mtable}{b!}[\relax]{\gdef\@autolatex@mtable@position{b!}}
484 \define@key[autolatex]{mtable}{pH}[\relax]{\gdef\@autolatex@mtable@position{pH}}
485 \define@key[autolatex]{mtable}{p!}[\relax]{\gdef\@autolatex@mtable@position{p!}}
486 \define@key[autolatex]{mtable}{H!}[\relax]{\gdef\@autolatex@mtable@position{H!}}
487 \define@key[autolatex]{mtable}{htb}[\relax]{\gdef\@autolatex@mtable@position{htb}}
488 \define@key[autolatex]{mtable}{htp}[\relax]{\gdef\@autolatex@mtable@position{htp}}
489 \define@key[autolatex]{mtable}{htH}[\relax]{\gdef\@autolatex@mtable@position{htH}}
490 \define@key[autolatex]{mtable}{ht!}[\relax]{\gdef\@autolatex@mtable@position{ht!}}
491 \define@key[autolatex]{mtable}{tbp}[\relax]{\gdef\@autolatex@mtable@position{tbp}}
492 \define@key[autolatex]{mtable}{tbH}[\relax]{\gdef\@autolatex@mtable@position{tbH}}
493 \define@key[autolatex]{mtable}{tb!}[\relax]{\gdef\@autolatex@mtable@position{tb!}}
494 \define@key[autolatex]{mtable}{bpH}[\relax]{\gdef\@autolatex@mtable@position{bpH}}
495 \define@key[autolatex]{mtable}{bp!}[\relax]{\gdef\@autolatex@mtable@position{bp!}}
496 \define@key[autolatex]{mtable}{pH!}[\relax]{\gdef\@autolatex@mtable@position{pH!}}
497 \define@key[autolatex]{mtable}{htbp}[\relax]{\gdef\@autolatex@mtable@position{htbp}}
498 \define@key[autolatex]{mtable}{htbH}[\relax]{\gdef\@autolatex@mtable@position{htbH}}
499 \define@key[autolatex]{mtable}{htb!}[\relax]{\gdef\@autolatex@mtable@position{htb!}}
500 \define@key[autolatex]{mtable}{tbpH}[\relax]{\gdef\@autolatex@mtable@position{tbpH}}
501 \define@key[autolatex]{mtable}{tbp!}[\relax]{\gdef\@autolatex@mtable@position{tbp!}}
502 \define@key[autolatex]{mtable}{bpH!}[\relax]{\gdef\@autolatex@mtable@position{bph!}}
503 \define@key[autolatex]{mtable}{htbpH}[\relax]{\gdef\@autolatex@mtable@position{htbpH}}
504 \define@key[autolatex]{mtable}{htbp!}[\relax]{\gdef\@autolatex@mtable@position{htbp!}}
505 \define@key[autolatex]{mtable}{htbpH!}[\relax]{\gdef\@autolatex@mtable@position{htbpH!}}
507 \newenvironment{mtable}[6][ht]{%
508 \global\let\@autolatex@mtable@position\relax%
509 \gdef\@autolatex@mtable@size{\normalsize}%
510 \setkeys[autolatex]{mtable}{#1}%
511 \ifx\@autolatex@mtable@position\relax%
512 \gdef\@autolatex@mtable@position{ht}%
515 \gdef\upm@table@caption{#5}%
516 \xdef\upm@table@label{tab:#6}%
517 \gdef\upm@table@note{}%
518 \newcommand{\captionastitle}{\tabulartitle{\upm@table@caption}}%
519 \newcommand{\tablenote}[1]{\gdef\upm@table@note{\bgroup ##1\egroup}}%
520 \expandafter\table[\@autolatex@mtable@position]%
521 \center\@autolatex@mtable@size%
522 \mtabular[#2]{#3}{#4}%
525 \caption{\upm@table@caption}%
526 \label{\upm@table@label}%
530 \global\let\upm@table@caption\relax%
531 \global\let\upm@table@label\relax%
532 \global\let\upm@table@note\relax%
537 \newcommand{\tabref}[1]{\ref{tab:#1}}
540 \newcommand{\tabpageref}[1]{\pageref{tab:#1}}
542 %----------------------------------------
544 %----------------------------------------
545 \setlength{\parindent}{0pt}
546 \setlength{\parskip}{.2cm}
548 %----------------------------------------
549 % COLORIZED SECTION'S TITLES
550 %----------------------------------------
553 \definecolor{sectiontitlecolor}{rgb}{0.93,0.41,0}
554 \definecolor{chaptertitlecolor}{rgb}{0.24,0.33,0.48}
555 \definecolor{parttitlecolor}{rgb}{0.24,0.33,0.48}
557 % PRIVATE FORMATTING MACROS
558 \newcounter{upm@format@section@sectionlevel}
559 \setcounter{upm@format@section@sectionlevel}{0}
561 \gdef\upm@format@partnum#1{\textcolor{parttitlecolor}{\expandafter\fontsize{40pt}{60pt}\selectfont#1\normalfont}}
562 \gdef\upm@format@parttitle#1{\textcolor{parttitlecolor}{\huge\scshape #1}}
563 \gdef\upm@format@chapternum#1{\textcolor{chaptertitlecolor}{\expandafter\fontsize{40pt}{60pt}\selectfont#1\normalfont}}
564 \gdef\upm@format@chaptertitle#1{\textcolor{chaptertitlecolor}{\Huge\scshape #1}}
565 \gdef\upm@format@sectionnum#1#2{\textcolor{sectiontitlecolor}{#2}}
566 \gdef\upm@format@sectiontitle#1#2{\textcolor{sectiontitlecolor}{#2}}
571 \ifnum \c@secnumdepth >-2\relax
572 \refstepcounter{part}%
573 \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
575 \addcontentsline{toc}{part}{#1}%
579 \interlinepenalty \@M
581 \ifnum \c@secnumdepth >-2\relax
582 \upm@format@partnum{\thepart}
586 \upm@format@parttitle{\nohyphens{#2}}\par}%
590 \interlinepenalty \@M
592 \upm@format@parttitle{\nohyphens{#1}}\par}%
597 \ifupmarticleformat\else
598 \newcommand{\upm@format@makechapterhead}[2]{%
600 {\parindent \z@ \Huge \raggedleft \normalfont
601 \ifx\@empty#1\ifnum \c@secnumdepth >\m@ne
602 \upm@format@chapternum{\thechapter}
607 %\ifupmbookformat\doublespacing\fi
608 \upm@format@chaptertitle{\nohyphens{#2}}\par\nobreak
612 %internal implementation of \chapter
613 \gdef\@makechapterhead#1{\upm@format@makechapterhead{\@empty}{#1}}
614 %internal implementation of \chapter*
615 \gdef\@makeschapterhead#1{\upm@format@makechapterhead{\relax}{#1}}
619 \let\upm@format@sect@old\@sect
620 \let\upm@format@ssect@old\@ssect
622 % public implementation of sections.
623 \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}}
624 \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}}
625 \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}}
627 % internal implementations for sections.
628 \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}}}
629 \gdef\@ssect#1#2#3#4#5{\upm@format@ssect@old{#1}{#2}{#3}{#4}{\upm@format@sectiontitle{\theupm@format@section@sectionlevel}{#5}}}
630 \gdef\@seccntformat#1{\upm@format@sectionnum{\theupm@format@section@sectionlevel}{\csname the#1\endcsname/}\quad}
632 %----------------------------------------
634 %----------------------------------------
636 % Change the factors for determining the element positions
637 \renewcommand{\topfraction}{.99} % max fraction of floats at top
638 \renewcommand{\bottomfraction}{.99} % max fraction of floats at bottom
639 \renewcommand{\textfraction}{.5} % allow minimal text w. figs
640 \renewcommand{\dbltopfraction}{.66} % fit big float above 2-col. text
641 \renewcommand{\floatpagefraction}{0.99} % require fuller float pages | N.B.: floatpagefraction MUST be less than topfraction !!
642 \renewcommand{\dblfloatpagefraction}{.66} % fit big float above 2-col. text
644 % Update the format of the saved pages and sections
645 \renewcommand{\sectionmark}[1]{\markright{\thesection\ \textsc{#1}}}
646 \ifupmarticleformat\else
647 \renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{}}
648 \renewcommand{\@mkboth}[2]{%
649 \let\upm@doc@MakeUppercase\MakeUppercase%
650 \gdef\MakeUppercase##1{##1}%
652 \let\MakeUppercase\upm@doc@MakeUppercase%
653 \let\upm@doc@MakeUppercase\relax%
656 % Make sure that the page before a part or
657 % a chapter title was empty
658 \renewcommand{\cleardoublepage}{%
660 \if@twoside\ifodd\c@page%
662 \thispagestyle{facingtochapter}%
664 \if@twocolumn\hbox{}\newpage%
667 \newcommand{\ps@facingtochapter}{\ps@empty}
669 %----------------------------------------
670 % ADDITIONAL SECTIONS
671 %----------------------------------------
673 \gdef\upm@format@newsection@alignment{}
676 % Part without number but inside the TOC
677 %\parttoc [toctitle]{title} % left-alignment inside TOC
678 %\parttoc*[toctitle]{title} % right-alignment inside TOC
679 \def\parttoc{\@ifstar%
680 {\gdef\upm@format@newsection@alignment{\protect\numberline{}}\expandafter\upm@format@newsection@part}%
681 {\gdef\upm@format@newsection@alignment{}\expandafter\upm@format@newsection@part}}
682 \def\upm@format@newsection@part{\@ifnextchar [%
683 {\expandafter\upm@format@newsection@part@opt}%
684 {\expandafter\upm@format@newsection@part@nopt}}
685 \def\upm@format@newsection@part@opt[#1]#2{%
686 \part*{#2\addcontentsline{toc}{part}{\upm@format@newsection@alignment{#1}}}%
689 \def\upm@format@newsection@part@nopt#1{%
690 \part*{#1\addcontentsline{toc}{part}{\upm@format@newsection@alignment{#1}}}%
695 % Chapter without number but inside the TOC
696 %\chaptertoc [toctitle]{title} % left-alignment inside TOC
697 %\chaptertoc*[toctitle]{title} % right-alignment inside TOC
698 \def\chaptertoc{\@ifstar%
699 {\gdef\upm@format@newsection@alignment{\protect\numberline{}}\expandafter\upm@format@newsection@chapter}%
700 {\gdef\upm@format@newsection@alignment{}\expandafter\upm@format@newsection@chapter}}
702 \def\upm@format@newsection@chapter{\@ifnextchar[%
703 {\upm@format@newsection@chapter@a}%
704 {\upm@format@newsection@chapter@b}%
707 \def\upm@format@newsection@chapter@a[#1]#2{%
708 \expandafter\chapter*[#1]{#2}%
709 \addcontentsline{toc}{chapter}{\upm@format@newsection@alignment{#1}}%
710 \@ifundefined{minitoc}{}{%
711 \global\addtocounter{mtc}{1}%
715 \def\upm@format@newsection@chapter@b#1{%
716 \expandafter\chapter*{#1}%
717 \addcontentsline{toc}{chapter}{\upm@format@newsection@alignment{#1}}%
718 \@ifundefined{minitoc}{}{%
719 \global\addtocounter{mtc}{1}%
724 % Section without number but inside the TOC
725 %\sectiontoc [toctitle]{title} % left-alignment inside TOC
726 %\sectiontoc*[toctitle]{title} % right-alignment inside TOC
727 \def\sectiontoc{\@ifstar%
728 {\gdef\upm@format@newsection@alignment{\protect\numberline{}}\expandafter\upm@format@newsection@section}%
729 {\gdef\upm@format@newsection@alignment{}\expandafter\upm@format@newsection@section}}
730 \def\upm@format@newsection@section{\@ifnextchar [%
731 {\expandafter\upm@format@newsection@section@opt}%
732 {\expandafter\upm@format@newsection@section@nopt}}
733 \def\upm@format@newsection@section@opt[#1]#2{%
734 \section*{#2\addcontentsline{toc}{section}{\upm@format@newsection@alignment{#1}}}%
736 \def\upm@format@newsection@section@nopt#1{%
737 \section*{#1\addcontentsline{toc}{section}{\upm@format@newsection@alignment{#1}}}%
741 % Subsection without number but inside the TOC
742 %\subsectiontoc [toctitle]{title} % left-alignment inside TOC
743 %\subsectiontoc*[toctitle]{title} % right-alignment inside TOC
744 \def\subsectiontoc{\@ifstar%
745 {\gdef\upm@format@newsection@alignment{\protect\numberline{}}\expandafter\upm@format@newsection@subsection}%
746 {\gdef\upm@format@newsection@alignment{}\expandafter\upm@format@newsection@subsection}}
747 \def\upm@format@newsection@subsection{\@ifnextchar [%
748 {\expandafter\upm@format@newsection@subsection@opt}%
749 {\expandafter\upm@format@newsection@subsection@nopt}}
750 \def\upm@format@newsection@subsection@opt[#1]#2{%
751 \subsection*{#2\addcontentsline{toc}{subsection}{\upm@format@newsection@alignment{#1}}}%
753 \def\upm@format@newsection@subsection@nopt#1{%
754 \subsection*{#1\addcontentsline{toc}{subsection}{\upm@format@newsection@alignment{#1}}}%
758 % Subsubsection without number but inside the TOC
759 %\subsubsectiontoc [toctitle]{title} % left-alignment inside TOC
760 %\subsubsectiontoc*[toctitle]{title} % right-alignment inside TOC
761 \def\subsubsectiontoc{\@ifstar%
762 {\gdef\upm@format@newsection@alignment{\protect\numberline{}}\expandafter\upm@format@newsection@subsubsection}%
763 {\gdef\upm@format@newsection@alignment{}\expandafter\upm@format@newsection@subsubsection}}
764 \def\upm@format@newsection@subsubsection{\@ifnextchar [%
765 {\expandafter\upm@format@newsection@subsubsection@opt}%
766 {\expandafter\upm@format@newsection@subsubsection@nopt}}
767 \def\upm@format@newsection@subsubsection@opt[#1]#2{%
768 \subsubsection*{#2\addcontentsline{toc}{subsubsection}{\upm@format@newsection@alignment{#1}}}%
770 \def\upm@format@newsection@subsubsection@nopt#1{%
771 \subsubsection*{#1\addcontentsline{toc}{subsubsection}{\upm@format@newsection@alignment{#1}}}%
775 % Chapter with different titles for in the TOC, the headers and on the pages
776 %\chapterfull[in toc]{on page}{in header} % with number
777 %\chapterfull*[in toc]{on page}{in header} % without number
778 \def\chapterfull{\@ifstar%
779 {\gdef\upm@format@newsection@thesectionmacro{\chapter*}\upm@format@newsection@chapterfull}%
780 {\gdef\upm@format@newsection@thesectionmacro{\chapter}\upm@format@newsection@chapterfull}%
783 \def\upm@format@newsection@chapterfull{\@ifnextchar[%
784 \upm@format@newsection@chapterfull@a%
785 \upm@format@newsection@chapterfull@b%
788 \def\upm@format@newsection@chapterfull@a[#1]#2#3{%
789 \upm@format@newsection@thesectionmacro[#1]{#2}%
793 \def\upm@format@newsection@chapterfull@b#1#2{%
794 \upm@format@newsection@thesectionmacro{#1}%
799 % Section with different titles for in the TOC, the headers and on the pages
800 %\sectionfull[in toc]{on page}{in header} % with number
801 %\sectionfull*[in toc]{on page}{in header} % without number
802 \def\sectionfull{\@ifstar%
803 {\gdef\upm@format@newsection@thesectionmacro{\section*}\upm@format@newsection@sectionfull}%
804 {\gdef\upm@format@newsection@thesectionmacro{\section}\upm@format@newsection@sectionfull}%
807 \def\upm@format@newsection@sectionfull{\@ifnextchar[%
808 \upm@format@newsection@sectionfull@a%
809 \upm@format@newsection@sectionfull@b%
812 \def\upm@format@newsection@sectionfull@a[#1]#2#3{%
813 \upm@format@newsection@thesectionmacro[#1]{#2}%
814 \global\sectionmark{#3}%
817 \def\upm@format@newsection@sectionfull@b#1#2{%
818 \upm@format@newsection@thesectionmacro{#1}%
819 \global\sectionmark{#2}%
822 %----------------------------------------
824 %----------------------------------------
828 \newcommand{\bibsize}[1]{\gdef\upm@bibsize{#1}}
830 \gdef\upm@bibsize{\small}
832 \gdef\@biblabel#1{{\upm@bibsize{[#1]}}}
834 \gdef\@lbibitem[#1]#2{\item[\@biblabel{#1}\hfill]\upm@bibsize\if@filesw{%
835 \let\protect\noexpand\immediate\write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces}
837 \gdef\@bibitem#1{\item\upm@bibsize\if@filesw%
838 \immediate\write\@auxout{\string\bibcite{#1}{\the\value{\@listctr}}}\fi\ignorespaces}
841 %----------------------------------------
843 %----------------------------------------
844 \setcounter{secnumdepth}{3}
845 \setcounter{tocdepth}{3}
847 % Change the color of the TOC for the "dotted" lines
848 %\let\upm@format@dottedtocline@old\@dottedtocline
849 %\gdef\@dottedtocline#1#2#3#4#5{%
850 % %{depth}{left margin}{right margin}{text}{page number}
851 % \upm@format@dottedtocline@old{#1}{#2}{#3}{#4}{#5}%
854 % Change the color of the TOC for the parts
855 \@ifundefined{l@part}{}{
856 \let\upm@format@l@part@old\l@part
857 \renewcommand*\l@part[2]{%
859 \upm@format@l@part@old{\textcolor{parttitlecolor}{#1}}{\textcolor{parttitlecolor}{#2}}%
863 % Change the color of the TOC for the chapters
864 \@ifundefined{l@chapter}{}{
865 \let\upm@format@l@chapter@old\l@chapter
866 \renewcommand*\l@chapter[2]{%
868 \upm@format@l@chapter@old{\textcolor{chaptertitlecolor}{#1}}{\textcolor{chaptertitlecolor}{#2}}%
872 % Overide the color and font configurations of the MINITOC package
874 \@ifundefined{minitoc}{}{%
876 \gdef\mtifont{\normalfont\large\upshape\bfseries\color{chaptertitlecolor}}
878 \gdef\mtcSfont{\normalfont\small\upshape\bfseries\color{sectiontitlecolor}}
879 % Sub-Section and SubSub-Section
880 \gdef\mtcSSfont{\normalfont\small\upshape\mdseries\normalcolor}
881 \global\let\mtcSSSfont\mtcSSfont
885 %----------------------------------------
887 %----------------------------------------
888 \newcounter{upm@fmt@savedcounter}
890 \newcommand{\savecounter}[1]{%
891 \setcounter{upm@fmt@savedcounter}{\value{#1}}%
893 \newcommand{\restorecounter}[1]{%
894 \setcounter{#1}{\theupm@fmt@savedcounter}%
896 \newcommand{\saveenumcounter}{\savecounter{\@enumctr}}
897 \newcommand{\restoreenumcounter}{\restorecounter{\@enumctr}}
898 \newcommand{\setenumcounter}[1]{\setcounter{\@enumctr}{#1}\addtocounter{\@enumctr}{-1}}
899 \newcommand{\getenumcounter}{\value{\@enumctr}}
901 %----------------------------------------
903 %----------------------------------------
905 \gdef\upm@footnoteref#1{\upm@textsuperscript{#1}}
906 \gdef\upm@footnotepageref#1#2{\upm@textsuperscript{{#1\tiny(#2)}}}
908 \def\upm@savefootnote#1#2{%
909 \footnote{#1\label{\upm@protect{footnote:#2}}}%
910 \upm@nameundef{footnote:#2:cmd}%
912 \def\upm@savefootnotestar#1#2{%
913 \upm@namedef{footnote:#2:cmd}{\upm@savefootnote{#1}{#2}}%
916 \DeclareRobustCommand\savefootnote{\@ifstar\upm@savefootnotestar\upm@savefootnote}
918 \def\upm@reffootnote#1{%
919 \upm@ifdefinedname{footnote:#1:cmd}{%
920 \upm@nameuse{footnote:#1:cmd}}{%
921 \upm@footnoteref{\upm@getref{\upm@protect{footnote:#1}}}%
925 \def\upm@reffootnotestar#1{%
926 \upm@ifdefinedname{footnote:#1:cmd}{%
927 \upm@nameuse{footnote:#1:cmd}}{%
928 \xdef\upm@tmp@tmp{\upm@protect{footnote:#1}}%
929 \upm@footnotepageref{\expandafter\upm@getref{\upm@tmp@tmp}}{\expandafter\upm@getpageref{\upm@tmp@tmp}}%
930 \global\let\upm@tmp@tmp\relax%
935 \DeclareRobustCommand\reffootnote{\@ifstar\upm@reffootnotestar\upm@reffootnote}
937 %----------------------------------------
938 % IMAGES IN PARAGRAPHS
939 %----------------------------------------
941 \newenvironment{umlinpar}[2][width=.45\linewidth]{%
942 \begin{window}[0,r,{\mbox{\hspace{.5cm}\includegraphics[#1]{#2}\vspace{.5cm}}},{}]
946 %----------------------------------------
948 %----------------------------------------
950 %Build a date this a supported format
951 %\makedate{day}{month}{year}
952 \let\makedate\upm@format@lang@makedate
955 %Replies the year corresponding to the given supported date
957 \let\extractyear\upm@format@lang@extractyear
960 %Replies the month corresponding to the given supported date
962 \let\extractmonth\upm@format@lang@extractmonth
965 %Replies the day corresponding to the given supported date
967 \let\extractday\upm@format@lang@extractday
969 % Redefine the today function
970 \AtBeginDocument{\global\edef\today{\makedate{\the\day}{\the\month}{\the\year}}}
972 %----------------------------------------
974 %----------------------------------------
976 \def\makenamespacing#1{%
977 \upm@format@makenamespacing{#1}\xspace%
980 \def\upm@format@makenamespacing#1{%
981 \upm@foreach.\in#1\do{%
982 \ignorespaces\upm@foreach@term.\,%
984 \ignorespaces\upm@foreach@term%
988 \gdef\upm@format@people@title#1{\textsc{#1}}
989 \def\upm@format@firstname@format#1{%
990 {\smaller\textsc{\upm@format@makenamespacing{#1}}}%
992 \def\upm@format@von@format#1{\mbox{\smaller\ignorespaces#1}}
993 \def\upm@format@lastname@format#1{\textsc{\ignorespaces#1}}
995 %\upmmakename[von]{firstname}{lastname}{separator}
996 \newcommand{\upmmakename}[4][\relax]{%
998 {\upm@format@firstname@format{#2}#4\upm@format@lastname@format{#3}}%
1000 {\upm@format@firstname@format{#2}#4\upm@format@von@format{#1}#4\upm@format@lastname@format{#3}}%
1005 %\makename[von]{firstname}{lastname}
1006 \newcommand{\makename}[3][\relax]{%
1007 \upmmakename[#1]{#2}{#3}{\ }%
1010 %\makelastname[von]{lastname}
1011 \newcommand{\makelastname}[2][\relax]{%
1013 \upm@format@lastname@format{#2}%
1015 \upm@format@von@format{#1}\ \upm@format@lastname@format{#2}%
1020 %\makefirstname{firstname}
1021 \newcommand{\makefirstname}[1]{%
1022 \upm@format@firstname@format{#1}\xspace%
1025 %\prname[von]{firstname}{lastname}
1026 %\prname*[von]{firstname}{lastname}
1027 \def\prname{\@ifstar\upm@prnamestar\upm@prname}
1028 \newcommand{\upm@prname}[3][\relax]{%
1029 \upm@format@people@title{\upm@format@lang@professor}\,\upmmakename[#1]{#2}{#3}{\ }%
1031 \newcommand{\upm@prnamestar}[3][\relax]{%
1032 \upmmakename[#1]{#2}{#3}{\ }, \upm@format@people@title{\upm@format@lang@professor}%
1035 %\drname[von]{firstname}{lastname}
1036 %\drname*[von]{firstname}{lastname}
1037 \def\drname{\@ifstar\upm@drnamestar\upm@drname}
1038 \newcommand{\upm@drname}[3][\relax]{%
1039 \upm@format@people@title{\upm@format@lang@doctor}\,\upmmakename[#1]{#2}{#3}{\ }%
1041 \newcommand{\upm@drnamestar}[3][\relax]{%
1042 \upmmakename[#1]{#2}{#3}{\ }, \upm@format@people@title{\upm@format@lang@doctor}%
1045 %\phdname[von]{firstname}{lastname}
1046 %\phdname*[von]{firstname}{lastname}
1047 \def\phdname{\@ifstar\upm@phdnamestar\upm@phdname}
1048 \newcommand{\upm@phdname}[3][\relax]{%
1049 \upm@format@people@title{\upm@format@lang@phdoctor}\,\upmmakename[#1]{#2}{#3}{\ }%
1051 \newcommand{\upm@phdnamestar}[3][\relax]{%
1052 \upmmakename[#1]{#2}{#3}{\ }, \upm@format@people@title{\upm@format@lang@phdoctor}%
1055 %\scdname[von]{firstname}{lastname}
1056 %\scdname*[von]{firstname}{lastname}
1057 \def\scdname{\@ifstar\upm@scdnamestar\upm@scdname}
1058 \newcommand{\upm@scdname}[3][\relax]{%
1059 \upm@format@people@title{\upm@format@lang@scdoctor}\,\upmmakename[#1]{#2}{#3}{\ }%
1061 \newcommand{\upm@scdnamestar}[3][\relax]{%
1062 \upmmakename[#1]{#2}{#3}{\ }, \upm@format@people@title{\upm@format@lang@scdoctor}%
1065 %\mdname[von]{firstname}{lastname}
1066 %\mdname*[von]{firstname}{lastname}
1067 \def\mdname{\@ifstar\upm@mdnamestar\upm@mdname}
1068 \newcommand{\upm@mdname}[3][\relax]{%
1069 \upm@format@people@title{\upm@format@lang@mdoctor}\,\upmmakename[#1]{#2}{#3}{\ }%
1071 \newcommand{\upm@mdnamestar}[3][\relax]{%
1072 \upmmakename[#1]{#2}{#3}{\ }, \upm@format@people@title{\upm@format@lang@mdoctor}%
1075 %\pengname[von]{firstname}{lastname}
1076 %\pengname*[von]{firstname}{lastname}
1077 \def\pengname{\@ifstar\upm@pengnamestar\upm@pengname}
1078 \newcommand{\upm@pengname}[3][\relax]{%
1079 \upm@format@people@title{\upm@format@lang@professionalengineer}\,\upmmakename[#1]{#2}{#3}{\ }%
1081 \newcommand{\upm@pengnamestar}[3][\relax]{%
1082 \upmmakename[#1]{#2}{#3}{\ }, \upm@format@people@title{\upm@format@lang@professionalengineer}%
1085 %\iengname[von]{firstname}{lastname}
1086 %\iengname*[von]{firstname}{lastname}
1087 \def\iengname{\@ifstar\upm@iengnamestar\upm@iengname}
1088 \newcommand{\upm@iengname}[3][\relax]{%
1089 \upm@format@people@title{\upm@format@lang@incorporatedengineer}\,\upmmakename[#1]{#2}{#3}{\ }%
1091 \newcommand{\upm@iengnamestar}[3][\relax]{%
1092 \upmmakename[#1]{#2}{#3}{\ }, \upm@format@people@title{\upm@format@lang@incorporatedengineer}%
1095 %----------------------------------------
1096 % INLINE ENUMERATION
1097 %----------------------------------------
1099 \newcounter{@@upm@fmt@inlineenumeration}
1100 \newcommand{\inlineenumerationlabel}[1]{(#1)}
1101 \let\upm@fmt@inlineenum@numberformat\roman
1102 \newenvironment{inlineenumeration}{%
1104 \let\upm@fmt@inlineenum@currentlabel\@currentlabel%
1105 \renewcommand{\item}{\xdef\@currentlabel{\upm@fmt@inlineenum@numberformat{@@upm@fmt@inlineenumeration}}{\inlineenumerationlabel{\@currentlabel}{\addtocounter{@@upm@fmt@inlineenumeration}{1}}}~}%
1106 \setcounter{@@upm@fmt@inlineenumeration}{1}%
1108 \global\let\@currentlabel\upm@fmt@inlineenum@currentlabel%
1112 %----------------------------------------
1113 % DESCRIPTION LIST WITH NUMBERS
1114 %----------------------------------------
1116 \newcounter{@upm@fmt@enumdescription@cnt@}
1117 \gdef\upm@fmt@enumdescription@savedlabel{}
1118 \gdef\upm@fmt@enumdescription@savedcounter{}
1119 \newcommand{\upm@fmt@enumdescription@fmt@}[1]{}
1120 \newcommand{\enumdescriptionlabel}[1]{\textbf{#1}}
1121 \newcommand{\enumdescriptioncounterseparator}{~-~}
1122 \newcommand{\enumdescriptionlabelseparator}{\upm@column@char}
1123 % #1: counter style.
1124 % #2: text before the counter.
1125 % #3: text after the counter.
1126 % #4: text between the counter and the description.
1127 % #5: text between the description and the rest of the text.
1128 % #6: text between the counter (no description) and the rest of the text.
1129 \newenvironment{upm@fmt@enumdescription}[6]{%
1131 \renewcommand{\upm@fmt@enumdescription@savedlabel}{\@currentlabel}%
1132 \edef\upm@fmt@enumdescription@savedcounter{\the@upm@fmt@enumdescription@cnt@}%
1133 \setcounter{@upm@fmt@enumdescription@cnt@}{1}%
1134 \ifthenelse{\equal{#1}{a}}{%
1135 \renewcommand{\upm@fmt@enumdescription@fmt@}[1]{#2\alph{##1}#3}%
1137 \ifthenelse{\equal{#1}{A}}{%
1138 \renewcommand{\upm@fmt@enumdescription@fmt@}[1]{#2\Alph{##1}#3}%
1140 \ifthenelse{\equal{#1}{i}}{%
1141 \renewcommand{\upm@fmt@enumdescription@fmt@}[1]{#2\roman{##1}#3}%
1143 \ifthenelse{\equal{#1}{I}}{%
1144 \renewcommand{\upm@fmt@enumdescription@fmt@}[1]{#2\Roman{##1}#3}%
1146 \renewcommand{\upm@fmt@enumdescription@fmt@}[1]{#2\arabic{##1}#3}%
1151 \renewcommand{\makelabel}[1]{%
1152 \xdef\@currentlabel{\upm@fmt@enumdescription@fmt@{@upm@fmt@enumdescription@cnt@}}%
1153 \enumdescriptionlabel{\@currentlabel#4##1\ifthenelse{\equal{a##1}{a}}{#6}{#5}}{\addtocounter{@upm@fmt@enumdescription@cnt@}{1}}}%
1154 \expandafter\settowidth{\labelwidth}{#2iii#3}%
1157 \global\let\@currentlabel\upm@fmt@enumdescription@savedlabel%
1158 \setcounter{@upm@fmt@enumdescription@cnt@}{\upm@fmt@enumdescription@savedcounter}%
1161 \newenvironment{enumdescriptionx}[3][i]{%
1162 \begin{upm@fmt@enumdescription}{#1}{#2}{#3}{\enumdescriptioncounterseparator}{\enumdescriptionlabelseparator}{\enumdescriptionlabelseparator}%
1164 \end{upm@fmt@enumdescription}%
1166 \newenvironment{enumdescription}[1][i]{%
1167 \begin{upm@fmt@enumdescription}{#1}{}{}{\enumdescriptioncounterseparator}{\enumdescriptionlabelseparator}{\enumdescriptionlabelseparator}%
1169 \end{upm@fmt@enumdescription}%
1172 %% Issue #14: enumerate behaves as enumdescription
1173 \ifupm@use@override@standard@lists
1176 \message{*** Overriding the 'enumerate' environment. Pass option 'standardlists' for avoiding this override.}
1177 \global\let\enumerate\@undefined
1178 \global\let\endenumerate\@undefined
1179 \global\NewEnviron{enumerate}[1][1\string.~]{%
1180 % Parse the parameter for extracting the type of the enumeration, the prefix and the postfix
1182 \gdef\upm@fmt@enumerate@style{a}%
1183 \def\reserved@a##1a##2\@nil{%
1184 \def\upm@fmt@enumerate@prefix{##1}%
1185 \def\upm@fmt@enumerate@postfix{##2}%
1188 \else\in@{1}{#1}\ifin@
1189 \gdef\upm@fmt@enumerate@style{1}%
1190 \def\reserved@a##11##2\@nil{%
1191 \def\upm@fmt@enumerate@prefix{##1}%
1192 \def\upm@fmt@enumerate@postfix{##2}%
1195 \else\in@{A}{#1}\ifin@
1196 \gdef\upm@fmt@enumerate@style{A}%
1197 \def\reserved@a##1A##2\@nil{%
1198 \def\upm@fmt@enumerate@prefix{##1}%
1199 \def\upm@fmt@enumerate@postfix{##2}%
1202 \else\in@{i}{#1}\ifin@
1203 \gdef\upm@fmt@enumerate@style{i}%
1204 \def\reserved@a##1i##2\@nil{%
1205 \def\upm@fmt@enumerate@prefix{##1}%
1206 \def\upm@fmt@enumerate@postfix{##2}%
1209 \else\in@{I}{#1}\ifin@
1210 \gdef\upm@fmt@enumerate@style{I}%
1211 \def\reserved@a##1I##2\@nil{%
1212 \def\upm@fmt@enumerate@prefix{##1}%
1213 \def\upm@fmt@enumerate@postfix{##2}%
1217 \errmessage{Invalid format of the enumerate counter}
1219 \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}{}}%
1222 %\protect\begin{upm@fmt@enumdescription}{#1}{}{\string.~}{}{\enumdescriptionlabelseparator}{}%
1224 \protect\end{upm@fmt@enumdescription}%
1229 %----------------------------------------
1230 % DESCRIPTION LIST WITH BULLETS
1231 %----------------------------------------
1232 \ifupm@use@override@standard@lists
1233 \gdef\upm@fmt@itemizeddescription@separator{\iflanguage{french}{ :}{:}\ }
1234 \newcommand{\upm@fmt@itemizeddescription@formatdescription}[1]{\textbf{#1}}
1235 \newcommand{\upm@fmt@itemizeddescription@desc}[2]{%
1236 \upm@fmt@itemizeddescription@formatdescription{#1#2}%
1238 \let\upm@fmt@olditem\item
1239 \let\upm@item@param\upm@fmt@olditem
1240 \let\upm@item@noparam\upm@fmt@olditem
1241 \def\item{\@ifnextchar[\upm@item@param\upm@item@noparam}
1243 \message{*** Overriding the 'description' environment. Pass option 'standardlists' for avoiding this override.}
1244 \global\let\description\@undefined
1245 \global\let\enddescription\@undefined
1246 \global\NewEnviron{description}[1][\upm@fmt@itemizeddescription@separator]{
1248 \renewcommand{\upm@item@param}[1][]{\upm@fmt@olditem \upm@fmt@itemizeddescription@desc{##1}{#1}}%
1249 \renewcommand{\upm@item@noparam}{\upm@fmt@olditem }%
1256 %----------------------------------------
1258 %----------------------------------------
1259 \newenvironment{upmfontsize}[1]{%
1263 \let\upm@normalsize\normalsize%
1264 \let\upm@small\small%
1265 \let\upm@scriptsize\scriptsize%
1266 \let\upm@footnotesize\footnotesize%
1272 \let\small\upm@huge%
1273 \let\scriptsize\upm@normalsize%
1274 \let\footnotesize\upm@small%
1275 \let\tiny\upm@scriptsize%
1279 \let\small\upm@normalsize%
1280 \let\scriptsize\upm@small%
1281 \let\footnotesize\upm@scriptsize%
1282 \let\tiny\upm@footnotesize%
1285 \let\huge\upm@normalsize%
1286 \let\small\upm@scriptsize%
1287 \let\scriptsize\upm@footnotesize%
1288 \let\footnotesize\upm@tiny%
1290 \else\ifx#1\scriptsize%
1291 \let\Huge\upm@normalsize%
1292 \let\huge\upm@small%
1293 \let\small\upm@footnotesize%
1294 \let\scriptsize\upm@tiny%
1295 \let\footnotesize\upm@tiny%
1297 \else\ifx#1\footnotesize%
1298 \let\Huge\upm@small%
1299 \let\huge\upm@scriptsize%
1300 \let\small\upm@tiny%
1301 \let\scriptsize\upm@tiny%
1302 \let\footnotesize\upm@tiny%
1305 \let\Huge\upm@scriptsize%
1306 \let\huge\upm@footnotesize%
1307 \let\small\upm@tiny%
1308 \let\scriptsize\upm@tiny%
1309 \let\footnotesize\upm@tiny%
1320 %----------------------------------------
1322 %----------------------------------------
1324 \newsavebox{\upm@framed@minipage}
1325 %\begin{framedminipage}{width}...\end{framedminipage}
1326 \newenvironment{framedminipage}[1]{%
1327 \begin{lrbox}{\upm@framed@minipage}\begin{minipage}{#1}%
1329 \end{minipage}\end{lrbox}\fbox{\usebox{\upm@framed@minipage}}}
1331 %\begin{framedcolorminipage}{width}{border}{background}...\end{framedcolorminipage}
1332 \newenvironment{framedcolorminipage}[3]{%
1333 \newcommand{\upm@framed@minipage@border}{#2}%
1334 \newcommand{\upm@framed@minipage@background}{#3}%
1335 \begin{lrbox}{\upm@framed@minipage}\begin{minipage}{#1}%
1337 \end{minipage}\end{lrbox}\fcolorbox{\upm@framed@minipage@border}{\upm@framed@minipage@background}{\usebox{\upm@framed@minipage}}}
1339 %----------------------------------------
1341 %----------------------------------------
1343 \newsavebox{\upm@highlight@box@save}
1345 \newenvironment{upm@highligh@box}[2]{%
1348 \begin{tabular}{|p{#1}|}
1350 \begin{window}[0,l,{\mbox{\includegraphics[width=1cm]{#2}}},{}]
1352 \end{window}\\ \hline \end{tabular}
1357 \newenvironment{upmcaution}[1][\linewidth]{%
1358 \upm@highligh@box{#1}{caution.png}%
1360 \endupm@highligh@box%
1363 \newenvironment{upminfo}[1][\linewidth]{%
1364 \upm@highligh@box{#1}{info.png}%
1366 \endupm@highligh@box%
1369 \newenvironment{upmquestion}[1][\linewidth]{%
1370 \upm@highligh@box{#1}{question.png}%
1372 \endupm@highligh@box%
1375 %----------------------------------------
1376 % PROVIDE URL MACROS, WHICH WILL BE
1377 % OVERRIDDEN BY THE DOCUMENT CLASS
1378 %----------------------------------------
1380 \newcommand{\url}[2][]{\texttt{#2}}
1381 \newcommand{\href}[3][]{\texttt{#3}}
1383 %----------------------------------------
1384 % Exponents and Indices
1385 %----------------------------------------
1386 \renewcommand{\textup}[1]{\textsuperscript{#1}\xspace}
1387 \def\@textsubscript#1{%
1388 {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}}
1389 \newcommand{\textsubscript}[1]{\@textsubscript{\selectfont#1}}
1390 \newcommand{\textdown}[1]{\textsubscript{#1}\xspace}
1393 %----------------------------------------
1395 %----------------------------------------
1397 \let\upm@oldunderline\underline
1398 \renewcommand{\underline}[1]{\upm@oldunderline{\smash{#1}}}
1400 %----------------------------------------
1401 % ENVIRONMENT FOR DEFINITIONS
1402 %----------------------------------------
1405 % Defining the style for the definitions
1406 \colorlet{definitionbackground}{backtableheader}
1407 \colorlet{definitionheaderforeground}{fronttableheader}
1408 \colorlet{definitionborder}{fronttableheader}
1409 \colorlet{definitiontextforeground}{fronttableheader}
1411 \iflanguage{french}{
1412 \gdef\definitionname{D\'efinition}
1413 \gdef\listdefinitionname{Liste des d\'efinitions}
1415 \gdef\definitionname{Definition}
1416 \gdef\listdefinitionname{List of Definitions}
1419 \gdef\upm@definition@width{.9\linewidth}
1420 \gdef\upm@definition@rule@width{\linewidth}
1421 \gdef\upm@definition@rule@height{0.4pt}
1423 \newtheoremstyle{upmdefinition}% name of the style to be used
1424 {}% measure of space to leave above the theorem. E.g.: 3pt
1425 {}% measure of space to leave below the theorem. E.g.: 3pt
1426 {\normalfont}% name of font to use in the body of the theorem
1427 {}% measure of space to indent the head
1428 {\normalfont\bfseries}% name of head font
1429 {\\[-1em]{\textcolor{definitionborder}{\rule{\upm@definition@rule@width}{\upm@definition@rule@height}}}}% punctuation between head and body
1430 {\newline}% space after theorem head
1431 {\textcolor{definitionheaderforeground}{\thmname{#1}\thmnumber{~#2}\upm@column@char\thmnote{ #3}}\vspace{.25em}}% Manually specify head
1434 % Declare a theorem with the standard UPM style
1435 % \declareupmtheorem[theorem_style]{name}{label}{list_label}
1436 \newcommand{\declareupmtheorem}[4][upmdefinition]{%
1437 \global\declaretheorem[name={#3},style=#1]{upm#2}%
1438 \global\newenvironment{#2}[1][]{%
1439 \par\vspace{\parsep}\centering\begin{framedcolorminipage}{\upm@definition@width}{definitionborder}{definitionbackground}%
1440 \color{definitiontextforeground}%
1444 \end{framedcolorminipage}\vspace{\parsep}\par%
1446 % Check the version of the thmtools because the TeXLive distribution
1447 % gives a too old version.
1448 \@ifpackagelater{thm-listof}{2012/05/03}{%
1449 \global\@namedef{listof#2s}{%
1450 \global\let\upm@definition@old@listtheoremname\listtheoremname%
1451 \global\let\upm@definition@old@upmtheoremopt\upm@definition@upmtheoremopt%
1452 \gdef\listtheoremname{#4}%
1453 \renewcommand{\upm@definition@upmtheoremopt}[1]{}%
1454 \expandafter\listoftheorems[ignoreall,show={upm#2}]%
1455 \global\let\listtheoremname\upm@definition@old@listtheoremname%
1456 \global\let\upm@definition@upmtheoremopt\upm@definition@old@upmtheoremopt%
1459 \@latex@warning{Your version of the thmtools is too old. I recommend you to install the version 2012/05/04, or later.}
1460 \global\@namedef{listof#2s}{%
1461 \global\let\upm@tmp\listtheoremname%
1462 \gdef\listtheoremname{#4}%
1464 \global\let\listtheoremname\upm@tmp%
1468 \@onlypreamble\declareupmtheorem
1470 \gdef\thmtformatoptarg#1{\upm@column@char\ #1}%
1472 % Permits to define an part of the definition's name that is
1473 % rendered only in core part of the document, not in the
1475 \gdef\upm@definition@upmtheoremopt#1{#1}
1476 \gdef\upmtheoremopt#1{\protect\upm@definition@upmtheoremopt{#1}}
1479 % Declare the definition environment
1480 \declareupmtheorem{definition}{\definitionname}{\listdefinitionname}
1482 %----------------------------------------
1483 % ENVIRONMENT FOR EMPHBOX
1484 %----------------------------------------
1487 % Defining the style for the emphbox
1488 \colorlet{emphboxbackground}{backtableheader}
1489 \colorlet{emphboxborder}{fronttableheader}
1490 \colorlet{emphboxtext}{fronttableheader}
1492 \NewEnviron{emphbox}[1][\linewidth]{%
1493 \begin{framedcolorminipage}{#1}{emphboxborder}{emphboxbackground}%
1494 \centering\color{emphboxtext}\BODY%
1495 \end{framedcolorminipage}%