upmethodology-p-common.sty 6.65 KB
% Copyright (c) 2009-13 Stephane GALLAND <galland@arakhne.org>
%
% 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@private@doctype@ver{2015/04/24}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{upmethodology-p-common}[\upm@package@private@doctype@ver]
\RequirePackage{ifthen}
\RequirePackage{xspace}
\RequirePackage{xcolor}
\RequirePackage{ifpdf}
%----------------------------------------
% UPMVERSION MACRO
%----------------------------------------
\input UPMVERSION.def
\def\upm@common@parseversion@to@tex#1#2#3#4#5#6#7#8#9\@nil{#1#2#3#4/#5#6/#7#8}
\def\upm@common@parseversion@major#1#2#3#4#5#6#7#8#9\@nil{#1#2#3#4#5#6#7#8}
\edef\ver@UPMVERSION@major{\expandafter\upm@common@parseversion@major\UPMVERSION-\relax\@nil}
\edef\ver@UPMVERSION{\expandafter\upm@common@parseversion@to@tex\UPMVERSION\@nil}
\expandafter\let\csname ver@UPMVERSION.sty\endcsname\ver@UPMVERSION
\expandafter\let\csname ver@UPMVERSION.cls\endcsname\ver@UPMVERSION
\gdef\UPMVERSIONTEST{\ver@UPMVERSION\\\ver@UPMVERSION@major}
%----------------------------------------
% ARAKHNE.ORG MACRO
%----------------------------------------
\providecommand{\arakhneorg}{{\begingroup%
{\usefont{T1}{pzc}{m}{it}\selectfont Arakhn\^e}%
{\usefont{T1}{phv}{bc}{sc}\selectfont\tiny.org}\endgroup}\xspace}
%----------------------------------------
% CURRENT LANGUAGE
%----------------------------------------
\def\upmcurrentlang{english}
\def\ifupmlang#1{\ifthenelse{\equal{#1}{\upmcurrentlang}}}
%----------------------------------------
% TEST MACROS
%----------------------------------------
\long\def\Ifnotempty#1{\ifthenelse{\equal{#1}{\@empty}}{}}
\long\def\Ifempty#1#2{\ifthenelse{\equal{#1}{\@empty}}{#2}{}}
\long\def\Ifelseempty#1#2#3{\ifthenelse{\equal{#1}{\@empty}}{#2}{#3}}
%----------------------------------------
% TOC MACROS
%----------------------------------------
\newcommand{\newpageintoc}{\addtocontents{toc}{\protect\newpage}}
%----------------------------------------
% DOCUMENT TYPE
%----------------------------------------
\newif\ifupmbookformat
\newif\ifupmreportformat
\newif\ifupmarticleformat
\upmbookformatfalse
\upmreportformattrue
\upmarticleformatfalse
%----------------------------------------
% PDF COLORS
%----------------------------------------
\newcommand{\setpdfcolor}[1]{}
%----------------------------------------
% CREATE COMMAND WITH ID AS NAME
%----------------------------------------
\def\upm@protect#1{\upm@p@protect #1\relax}
\def\upm@p@protect#1#2\relax{%
\ifx\relax #1%
\relax
\else%
\string #1%
\ifx\relax #2%
\relax
\else
\upm@p@protect #2\relax%
\fi
\fi}
\def\upm@namedef#1#2{%
\@namedef{\upm@protect{#1}}{#2}%
}
\def\upm@nameuse#1{%
\@nameuse{\upm@protect{#1}}%
}
\def\upm@nameundef#1{%
\expandafter\let\csname\upm@protect{#1}\endcsname\relax%
}
\def\upm@namelet@ext#1#2{%
\expandafter\expandafter\let\expandafter\upm@tmp\csname#2\endcsname%
\global\expandafter\let\csname#1\endcsname\upm@tmp%
}
\def\upm@ifdefinedname#1#2#3{%
\expandafter\ifx\csname\upm@protect{#1}\endcsname\relax%
#3%
\else%
#2%
\fi%
}
\newcommand{\upm@column@char}{\ifupmlang{french}{ :}{:}}
%----------------------------------------
% GET THE REFERENCE ID WITHOUT \REF
%----------------------------------------
\gdef\upm@getref#1{%
\expandafter\ifx\csname r@#1\endcsname\relax
\nfss@text{\reset@font\bfseries ??}%
\else
\expandafter\expandafter\expandafter\@car\csname r@#1\endcsname\@nil
\fi
}
\gdef\upm@getpageref@filter#1#2#3#4#5{#2}
\gdef\upm@getpageref#1{%
\expandafter\ifx\csname r@#1\endcsname\relax
\nfss@text{\reset@font\bfseries ??}%
\else%
\protected@xdef\upm@p@tmp@tmp{\protect\upm@getpageref@filter\csname r@#1\endcsname}%
\upm@p@tmp@tmp%
\global\let\upm@p@tmp@tmp\relax%
\fi
}
%----------------------------------------
% INTERNAL COMMAND FOR TEXT SUPPER/SUB SCRIPT
%----------------------------------------
\let\upm@textsuperscript\textsuperscript
\def\upm@textsubscript#1{%
{\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}}
%----------------------------------------
% MACRO THAT PERMITS TO LOOP ON A SEPARATOR
%----------------------------------------
\newif\ifupm@foreach@hasseparator
\newif\ifupm@foreach@oneseparator
\let\upm@foreach@end\relax
\def\upm@foreach@rec#1{%
{\upm@foreach@searchseparator#1\upm@foreach@end\@nil}%
\ifupm@foreach@hasseparator%
\protected@xdef\upm@foreach@continue{\protect\upm@foreach@rec{\upm@foreach@rest}}%
\upm@foreach@body%
\upm@foreach@continue%
\else%
\ifupm@foreach@oneseparator\else%
\upm@foreach@lastbody%
\fi%
\fi%
}
% Loop on parts of a text given a specific separator.
% In the bodies, the macros \upm@foreach@term is the current data.
% #1: is the separator to consider
% #2: is the data set
% #3: is the body to run for each loop, except the last.
% #4: is the body to run for the last loop.
\def\upm@foreach#1\in#2\do#3#4{%
\global\upm@foreach@oneseparatorfalse%
\gdef\upm@foreach@searchseparator##1#1##2\@nil{%
\gdef\upm@foreach@term{##1}%
\ifx\upm@foreach@end##2%
\global\upm@foreach@hasseparatorfalse%
\else%
\gdef\upm@foreach@rest{##2}%
\global\upm@foreach@hasseparatortrue%
\global\upm@foreach@oneseparatortrue%
\fi%
}%
\gdef\upm@foreach@body{#3}%
\gdef\upm@foreach@lastbody{#4}%
\upm@foreach@rec{#2#1}%
}
%----------------------------------------
% MACRO THAT PERMITS TO FIND A STRING
%----------------------------------------
\def\upm@ifin#1#2{\begingroup\edef\upm@tmp{\endgroup\noexpand\in@{#1}{#2}}\upm@tmp\ifin@}
%-----------------------------------------
% Option parameters
\newif\ifupm@common@optlist@needdefault
\gdef\upm@common@optlist@parseparams#1=#2\@nil{%
\ifthenelse{\equal{#2}{===}}{%
\global\upm@common@optlist@needdefaulttrue%
}{%
\global\upm@common@optlist@needdefaultfalse%
}%
}
\DeclareRobustCommand{\upm@common@optlist}[1]{%
{\upm@common@optlist@parseparams #1====\@nil}%
}
\newcommand{\upm@setkeys}[3]{%
\upm@common@optlist{#3}%
\ifupm@common@optlist@needdefault%
\expandafter\setkeys{#1}{#2=#3}%
\else%
\expandafter\setkeys{#1}{#3}%
\fi%
}
\endinput