summaryrefslogtreecommitdiff
path: root/info/mathtrip/src/MathTrip.sty
diff options
context:
space:
mode:
Diffstat (limited to 'info/mathtrip/src/MathTrip.sty')
-rw-r--r--info/mathtrip/src/MathTrip.sty657
1 files changed, 657 insertions, 0 deletions
diff --git a/info/mathtrip/src/MathTrip.sty b/info/mathtrip/src/MathTrip.sty
new file mode 100644
index 0000000000..d810baae8b
--- /dev/null
+++ b/info/mathtrip/src/MathTrip.sty
@@ -0,0 +1,657 @@
+%This file contains all the macros used
+%in the LaTeX port of the document cheat.pdf available
+%in the TeX showcase.
+
+
+%This boolean is true when output is DVI and false otherwise
+\newtoggle{DVIOutput}
+\togglefalse{DVIOutput}
+\ifx\pdfoutput\@undefined
+ % no pdfTeX
+ \togglefalse{DVIOutput}
+\else\ifnum\pdfoutput<1
+ %pdfTeX is outputting a .dvi file
+ \toggletrue{DVIOutput}
+\else
+ %pdfTeX is outputting a .pdf file
+ \togglefalse{DVIOutput}
+\fi\fi
+
+%These lengths are used to specify the dimentions of the different columns
+%of the tabular environment. These are useful to write code working on many
+%page after the specific dimentions for the page have been assigned to them.
+%Normally no page of the document has more than three columns even
+%the page 2 but for the ease of typesetting it is useful
+%to split the first logical column in three. Thus it is
+%possible to have until 5 columns.
+\newlength{\ColOne}
+\newlength{\ColTwo}
+\newlength{\ColThree}
+\newlength{\ColFour}
+\newlength{\ColFive}
+%Theses length are mainly used to save the current similar
+%values which can be locally modified.
+\newlength{\BeforeFormulaSpace} % Will contain the space before a formula when it is displayed.
+\newlength{\InterFormulaSpace} %Space between two lines of formulae displayed
+ %inside the 'DisplayFormulae' environment
+\newlength{\DisLeftSkip}
+\newlength{\DisParFillSkip}
+\newlength{\DisParIndent}
+%The length '\CurrentLineWidth' is the current width of a line.
+%It is useful when a lot of data (like when writing
+%formulae with "\Fm" macros) should be put on a line to
+%know when inserting a break.
+%
+%This variable is mainly used in the macro "\LongEquation"
+%and "\Fm" which have to put a maximum amount of text on a line.
+\newlength{\CurrentLineWidth}
+%The length \MathContentSize is used to setup the size of the parboxes
+%containing the different mathematical elements of the page
+\newlength{\MathContentSize}
+%This length is useful to manipulate horizontal space
+\newlength{\HSpace}
+%This length is useful to manipulate vertical space at different
+%place
+\newlength{\VSpace}
+%This is a temporary length usable for computation inside macro
+\newlength{\TmpLengthA}
+
+%A temporary counter for a local usage
+\newcounter{tmpCountA}
+%A counter used to contain the number of blank lines
+%to add in a table from the 'nicematrix' package.
+\newcounter{NbBlankLines}
+%Some new counters are usefuls to number equations and formulaes
+%The counter 'DisplayFormulaNb' is the number of the current displayed formulae
+\newcounter{DisplayFormulaNb}
+%The enumerated type describing the style to display the number
+%of the formulae. The values are:
+% 0 without number
+% 1 regular
+% 2 bold
+\chardef\StyleWithoutNumber=0
+\chardef\StyleRegular=1
+\chardef\StyleBold=2
+\chardef\DisNumberStyle=\StyleWithoutNumber
+%Enumerated type to indicate if the formula should be typeset
+%in display style (with bigger characters) or without change
+\chardef\SmallChar=1
+\chardef\BigChar=0
+\chardef\DisDisplay=\BigChar
+
+%This box is useful to store a formula which can
+%be moved after composition.
+\newsavebox\FormulaBox
+
+%Three temporary boxes (for use in a macro)
+\newsavebox\TmpBoxA
+\newsavebox\TmpBoxB
+\newsavebox\TmpBoxC
+%This box contains the Escher's impossible brick on page 10
+\newsavebox\ImpossibleBrick
+
+%------------------------------------------------------------------------------
+%
+% Macros definition
+%
+%------------------------------------------------------------------------------
+
+%This TeX (and not LaTeX) macro does nothing but it can be used
+%inside other macro to achieve some effects. It is declared here just
+%to be certain that the name will be unique.
+\def\cheatTmpMacro{\relax}
+
+%This command define the separator of thousands (this one is different in differents
+%regions/country)
+\newcommand\SepMillier{\,}
+%Similary the decimal separator is different in different country.
+\newcommand\SepDecimal{{,}}
+
+%The following macros modify the space typeset by LaTeX before and after
+%a formula in display math.
+%
+%The command has two parameter
+% 1) the new space to use in normal mode (symmetric for above and below)
+% 2) the new space to use for short mode (the mode is short when
+% the line of text before is shorter than the width of formula).
+\newcommand\DisplaySpace[2]{%
+ \deflength{\abovedisplayskip}{#1}%
+ \deflength{\belowdisplayskip}{#1}%
+ \deflength{\abovedisplayshortskip}{#2}%
+ \deflength{\belowdisplayshortskip}{#2}%
+}
+
+%Define a new environment useful to typeset formulae in a more or less free
+%style.
+%
+%This environment has 5 parameters:
+% 1) The number to use when displaying the first formula
+% (generally 1 except when a sequence of formula should
+% be continued)
+% 2) The horizontal space to let before a formula.
+% 3) The dimention which should separate two formulae
+% 4) An enumerated value to define the style of displaying
+% the formula (standard mode, display mode etc.)
+% 5) An enumerated type to specify the style (bold, regular...) of the number of the
+% formula.
+\newenvironment{DisplayFormulae}[5]{%Begin definitions
+ \newbool{FirstFormula}%
+ \booltrue{FirstFormula}%
+ \newbool{PrintEquation}% true if the formula should be typeset
+ % and printed, when fals it is only typeset
+ % (useful to know its width)
+ \booltrue{PrintEquation}%
+ \newbool{Inline}%When true, the formula is not typeset in a box
+ %but simply typed inline. Rarely used but useful
+ %if the formula is surrounded by some text.
+ \boolfalse{Inline}%
+ \deflength\CurrentLineWidth{0pt}%
+ \defcounter{DisplayFormulaNb}{#1}%
+ % Since this counter is automatically incremented before
+ % to typeset a formula
+ \defcounter{DisplayFormulaNb}{\value{DisplayFormulaNb}-1}%
+ \deflength{\BeforeFormulaSpace}{#2}%
+ \deflength{\InterFormulaSpace}{#3}%
+ \chardef\DisDisplay=#4%
+ \chardef\DisNumberStyle=#5%
+ \deflength{\DisLeftSkip}{\leftskip}%
+ \deflength{\DisParFillSkip}{\parfillskip}%
+ \deflength{\DisParIndent}{\parindent}%
+ \deflength{\parindent}{0pt}%
+ \deflength{\leftskip}{0pt}%
+ \deflength{\parfillskip}{0pt}%
+ \par\unskip
+ \begin{sloppypar}\raggedright\noindent\unskip
+}{%End definitions
+ \par\end{sloppypar}\noindent
+ \setlength{\leftskip}{\DisLeftSkip}%
+ \setlength{\parfillskip}{\DisParFillSkip}%
+}
+
+%This macro put a new line when writing formulae with the
+%\Fm family of macro inside an environment 'DisplayFormulae'
+%The macro has one parameter
+% 1)The height to force at the begining of a paragraph
+% This forces an interline with a rule. This parameter
+% is optionnal and its default value is '\InterFormulaSpace'
+%
+%This macro uses the global (to itself) length
+%'\CurrentLineWidth'
+\newcommand\NewParFormulae[1][\InterFormulaSpace]{%
+ \par
+ %To force the desired space between formulae
+ \rule{0pt}{#1}%
+ \unskip\noindent\unskip}
+
+%This macro is the separator of formulae. Normally
+%it is empty but it can be redefined to set a specific
+%separator if needed.
+%
+%This macro is executed in math mode
+\newcommand\FmSep{\relax}
+
+%This macro is used to display a formula inside an environment
+%"DisplayFormulae". It will work correctly only in that
+%environement which provide a way to use global variables (to this
+%macro) to keep some states between its different calls.
+%
+%It has two parameters:
+% 1) A boolean value which, when it is true, indicates
+% that the formula should be printed inline
+% with some other text (but the formula is still
+% typeset in LR box). For this to work correctly,
+% it is sufficient that the length '\CurrentLineWidth'
+% being set to a length of 0pt. This is like the
+% first equation on a line and the equation is simply
+% printed without adding anything.
+% This parameter is optionnal and its default value is 'false'.
+% 2) The formula to display. The formula
+% is typeset in math mode.
+%
+%This macro uses and update the global (to the macro)
+%length "\CurrentLineWidth" (which indicate the next point
+%where to put text on the current line).
+%
+%The global variable (defined inside the
+%'DisplayFormulae' environment) '\DisNumberStyle' is used too,
+%to determine how the equation should be typeset (with or without
+%numbering for instance).
+%
+%!! Be careful !!
+%When not in inline mode, this macro skips all the blanks
+%before it. This is useful to avoid spurious blanks introduced
+%somewhere before the call to this macro.
+\newcommand\Fm[2][false]{%
+ \setbool{Inline}{#1}%
+ \ifbool{Inline}{\deflength{\CurrentLineWidth}{0pt}}{%
+ %Not Inline:
+ \unskip\noindent\unskip
+ }%
+ \defcounter{DisplayFormulaNb}{\value{DisplayFormulaNb}+1}%
+ \WriteFormula{\the\CurrentLineWidth}{\CurrentLineWidth}{#2}{true}%
+ %Since a formula is written, we are no more on the first formula.
+ \boolfalse{FirstFormula}%
+}%
+
+%This command do really the job of typesetting the formula
+%It has 5 parameters:
+% 1) A white space to be put before the equation.
+% If this value is greater than 0pt, the equation is
+% considered to be part of a multipart equation
+% (but it is not its first part).
+%
+% This means that a space of that dimention is simply added
+% before the equation and the equation is printed.
+% If the width of the text with the added space before
+% the equation is wider than the available space, the equation
+% is simply typeset right justified.
+%
+% This parameter is optionnal and its value is 0pt.
+% 2) The current position on the line
+% 3) A variable of type dimen to contain the new
+% point of insertion in the printed line (where
+% the next equation could be typesetted).
+% 4) The formula to type
+% 5) A boolean value which when it is true indicates that
+% the equation should be printed. Otherwise the equation
+% is typesetted but not printed. This is useful to
+% know the width of the printed equation, but without
+% printing it in the text.
+\newcommand\WriteFormula[5][0pt]{%
+ \begingroup%To protect the global boxes and variables used
+ %in this macro.
+ \deflength{\CurrentLineWidth}{#2}%The current position on the line
+ \setbool{PrintEquation}{#5}%
+ \ifdimequal{#1}{0pt}%
+ {%Normal case when one has to print a std equation
+ \ifdimgreater{\CurrentLineWidth}{0pt}{%Already some text on the line
+ %we add the space between the formula.
+ \ifbool{PrintEquation}{%
+ \hspace{\InterFormulaeSkip}%
+ \deflength{\CurrentLineWidth}{\CurrentLineWidth+\InterFormulaeSkip}%
+ }{}%
+ }{}%
+ \savebox\FormulaBox{%
+ \hspace*{\BeforeFormulaSpace}%
+ \ifnum\DisNumberStyle=\StyleBold
+ \textbf{\arabic{DisplayFormulaNb}.~}%
+ \else
+ \ifnum\DisNumberStyle=\StyleRegular
+ \arabic{DisplayFormulaNb}.~%
+ \fi
+ \fi
+ \ensuremath{%
+ \ifnum\DisDisplay=\BigChar\displaystyle\fi
+ %Typeset the equation and call the macro to
+ %add a separator between the equations.
+ #4\FmSep}%
+ }%
+ \settowidth{\HSpace}{\usebox\FormulaBox}%
+ \deflength\CurrentLineWidth{\CurrentLineWidth+\HSpace}%
+ \ifdimgreater{\CurrentLineWidth}{\linewidth}%
+ {%Force a new paragraph
+ \ifbool{PrintEquation}{\NewParFormulae}{}%
+ \deflength{\CurrentLineWidth}{\HSpace}%Since the formula is the only text on the line
+ }{}%
+ }{%The second part of the equation should be printed
+ \savebox\FormulaBox{%
+ \ensuremath{%
+ \ifnum\DisDisplay=\BigChar\displaystyle\fi
+ %Typeset the second part of the equation
+ %but add the white space before it.
+ \makebox[#1][l]{}#4\FmSep\relax
+ }%
+ }%
+ \settowidth{\HSpace}{\usebox\FormulaBox}%
+ \deflength{\CurrentLineWidth}{\HSpace}%
+ \ifdimgreater{\CurrentLineWidth}{\linewidth}%
+ {%With the space added before it,
+ %the second part of the equation is wider
+ %than the available space. We simply put
+ %the equation right aligned
+ \savebox\FormulaBox{%
+ \makebox[\linewidth][l]{%
+ \ensuremath{%
+ \ifnum\DisDisplay=\BigChar\displaystyle\fi
+ %Typeset the second part of the equation without
+ %the preceding blank space and force the right alignment
+ \hfill #4\FmSep\relax
+ }%
+ }%
+ }%
+ \settowidth{\HSpace}{\usebox\FormulaBox}%
+ %Since the line is pushed to the right of space, the line
+ %is full.
+ \deflength{\CurrentLineWidth}{\linewidth}%
+ }{}%
+ }%
+ \ifbool{PrintEquation}{\usebox\FormulaBox}{}%Print the formula in the document
+ %\HSpace is the width of the box containing the typeseted formula.
+ \ifdimgreater{\HSpace}{\linewidth}%
+ {\typeout{^^J==Info The text of this equation:^^J#4^^J%
+ is wider than the width of the text. Please split it manually.}%
+ }{}%
+ \edef\mytemp{\endgroup
+ \noexpand\deflength{#3}{\the\CurrentLineWidth}%
+ }%
+ \mytemp %Close the group and set the value of the
+ %insertion point of the next equation.
+}
+
+%The following macro is similar to '\Fm' but write only
+%the first part of an equation. When an equation is spiltted in two parts,
+%the first part starts always on a new line (except if this is
+%the first equation of a group of equations, to avoid extra blank
+%space).
+%
+%The macro has one parameter:
+% 1) The first part of the equation
+% The formula is typeset in math mode.
+\newcommand\FmPartA[1]{%
+ \begingroup
+ %A group can be used since this command should always be used
+ %with '\FmPartB' and the fact that the \CurrentLineWidth is not
+ %updated (due to the group) is without importance since the next
+ %text will be the second part of the equation on a new line.
+
+ %Force equation on a new line except if this is the first equation.
+ \ifbool{FirstFormula}{%First formula
+ }{%No more the first formula, a new line is forced
+ \NewParFormulae%
+ }%
+ \deflength{\CurrentLineWidth}{0pt}%Since this equation starts
+ %on a new line
+ %There must be no separator of equation between the two part of
+ %a splitted equation
+ \def\FmSep{\relax}%
+ \Fm{#1}%
+ \endgroup
+}
+
+%The following macro is similar to '\Fm' but write only
+%the second part of an equation
+%
+%The macro has two parameters:
+% 1) Some text which will be used to determine the horizontal
+% offset to let before writing the second part of the equation
+% 2) The second part of the equation
+%The formulae are typeset in math mode.
+\newcommand\FmPartB[2]{%
+ %Start on a new line.
+ \NewParFormulae
+ %Typeset the first part of the equation without printing it
+ %to get the length of the first part in \TmpLengthA
+ \WriteFormula{0pt}{\TmpLengthA}{#1}{false}%
+ %Print the second (or following) part of the equation by
+ %adding a blank space corresponding to the width of the
+ %first part. The parameter with a length of 0pt
+ %reflects the fact that the equation start at the beginning
+ %of the line (after the \NewParFormulae}.
+ \WriteFormula[\TmpLengthA]{0pt}{\CurrentLineWidth}{#2}{true}%
+ %A blank character seems to be present, it is suppressed
+ %now
+ \unskip
+}
+
+%This macro is useful to indicate that no specific typeseting
+%should be done (and the default typesetting should be used instead)
+\newcommand\DoNothing{}
+
+%This macro is made to display the long equations (where 2 equal signs are used
+%to separate part of equation)
+%The macro has 5 parameters
+% 1) Any parameter expanding to something prevents
+% the addition of space before equation. Otherwise
+% a space of "\SpaceBeforeLongEq" is added
+% 2) The formula until the first equal sign
+% 3) The formula beteween the two equal sign
+% 4) The formula after the last equal sign
+% 5) The width of the line where the long equation should be typeset.
+%
+%If for some reason there is less than 2 equal signs, the corresponding
+%parameters should be empty.
+%
+%This macro uses the global boxes "\TmpBoxA" and \TmpBoxB".
+%This macro uses the global length "\CurrentLineWidth" and "\HSpace"
+%
+\newcommand\LongEquation[5][{\DoNothing}]{%
+ \begingroup
+ \deflength{\CurrentLineWidth}{#5}%
+ \par
+ \ifdefempty{#1}{\AdjustSpace{\SpaceBeforeLongEq}}{}%
+ \noindent
+ \def\temp{#3}%
+ \ifx\temp\empty
+ %Second parameter empty, the first part of equation is simply printed.
+ $#2$%
+ \else
+ %Second parameter not empty
+ \savebox\TmpBoxA{$#2=#3$}%
+ \settowidth\HSpace{\usebox\TmpBoxA}%
+ \ifnum\HSpace>\CurrentLineWidth
+ $#2=$\\\mbox{}\hfill
+ \savebox\TmpBoxA{$#3$}%
+ \fi
+ \def\temp{#4}%
+ \ifx\temp\empty
+ %Third parameter empty the formula until this parameter is typeset
+ \usebox\TmpBoxA
+ \else
+ %Third parameter not empty
+ \savebox\TmpBoxB{$#2=#3=#4$}%
+ \settowidth{\HSpace}{\usebox\TmpBoxB}%
+ \ifnum\HSpace>\CurrentLineWidth
+ \usebox\TmpBoxA=\\\mbox{}\hfill
+ $#4$%
+ \else
+ \usebox\TmpBoxB
+ \fi
+ \fi
+ \fi
+ \endgroup
+}
+
+
+%This command add or remove vertical space
+%
+%The command has 1 parameter
+% 1) The length for the space to add or remove
+\newcommand\AdjustSpace[1]{\par %to force vertical mode
+ \vspace{#1}\noindent\ignorespaces\par}
+
+%This command assign a counter with the biggest of three numbers.
+%
+%The macro has 4parameters:
+% 1) The name of the resulting counter.
+% This parameter is optionnal and its name is
+% 'NbBlankLines'
+% 2-4) The three values to check
+\newcommand\BiggestNbLines[4][NbBlankLines]{%
+ \defcounter{#1}{#2}%The biggest is the first
+ \ifnumless{\value{#1}}{#3}{%first < second
+ %The biggest is the second number
+ \defcounter{#1}{#3}%
+ }{}
+ \ifnumless{\value{#1}}{#4}{%The current biggest < third
+ %the biggest is the third number
+ \defcounter{#1}{#4}%
+ }{}
+}
+
+%This command adds few blank lines in a table. It is particularly useful
+%with the 'nicematrix' package where it is often necessary to add few lines
+%to be able to use block on many lines.
+%
+%The macro has two parameters:
+% 1) The number of lines to add
+% 2) A macro to add the lines
+%
+%This command uses the global counter 'NbBlankLines' and the macro
+%'\cheatTmpMacro'.
+\newcommand\AddBlankLines[2]{%
+ \defcounter{NbBlankLines}{#1}%
+ \def\cheatTmpMacro{\relax}%
+ \whileboolexpr{test {\ifnumcomp{\value{NbBlankLines}}{>}{0}}}%
+ {\defcounter{NbBlankLines}{\value{NbBlankLines}-1}%
+ \edef\cheatTmpMacro{\cheatTmpMacro #2}}%
+ \cheatTmpMacro
+}
+
+%This command is used to setup the style of the numerous
+%small titles used in the page.
+%
+%The command has one parameter
+% 1) The text of the intertitle
+\newcommand\IntertitleShape[1]{%
+ \textit{#1}%
+}
+
+%This command add some remarks about a math formula.
+%It is very useful to add some text like "a>0"
+%
+%The macro has two parameters
+% 1) The separator to typeset before the remark. This parameter
+% is optionnal and has the value of '\text{,}\enspace'
+% 2) The text of the remark, which will be typeset
+% in math mode. One has to use the AMS command
+% '\text' to typeset in text mode
+\newcommand\MathRemark[2][\text{,}\enspace]{\unskip\ensuremath{#1#2}}
+
+%This command add the infinitesimal difference after a math expression
+%It is very useful to have consistent spacing
+%before the 'dx'.
+%The command has one parameter:
+% 1) The letter to use. This parameter is typeset
+% in math mode and it is optionnal. Its
+% default value is 'x'
+\newcommand\dx[1][x]{\unskip\ensuremath{\,d#1}}
+
+%This command is used to typeset a variable followed
+%by the infinitesimal difference dx
+%
+%This command has one parameter
+% 1) The letter to use for the variable.
+% This text is typeset in math mode This parameter
+% is optional and its value is 'x'
+\newcommand\xdx[1][x]{\ensuremath{#1\dx}}
+
+%
+%This command is intended to stack two characters
+%with some vertical space between them.
+%
+%The command has 4 parameters:
+% 1) a left delimiter (might be empty)
+% 2) a right delimiter (might be empty)
+% 3) the "numerator" character
+% 4) the "denominator" character
+%
+%The idea is taken from here:
+%https://tex.stackexchange.com/questions/119096/on-atop-again-how-to-obtain-the-same-result-without-warning
+%
+%The syntax of \genfrac macro is:
+%\genfrac{<left-delim>}{<right-delim>}{<thickness>}{<mathstyle>}{<numerator>}{<denominator>}
+\newcommand\Empile[4]{%
+ \genfrac{#1}{#2}{\z@}{}{#3}{#4}%
+}
+
+%Macros defined in the original document
+\newcommand\titleTable{\textbf{\rule[-2ex]{0pt}{6ex}\large Mathematical formulæ and facts}}
+\newcommand\Real{\iftutex\BbbR\else\mathbb{R}\fi} %ℝ
+\newcommand\Natural{\iftutex\BbbN\else\mathbb{N}\fi} %ℕ
+\newcommand\Z{\iftutex\BbbZ\else\mathbb{Z}\fi} %ℤ
+\newcommand\Par{\par\vskip 3pt}
+\newcommand\centertwo[2]{\line {\hss #1\hss #2\hss}}
+\newcommand\centerthree[3]{\line {\hss #1\hss #2\hss #3\hss}}
+\newcommand\sign{\hbox{\rm sign}}
+\newcommand\etc{$\ldots$}
+\newcommand\Ldots{,\ldots,}
+\newcommand\Hrule{\vskip 3pt\hrule\vskip 3pt}
+\newcommand\Or{\vee}
+\newcommand\E{\iftutex\BbbE\else\mathbb{E}\fi} %Expectation (in probabilities)
+\newcommand\abs{\mathop{\rm abs}\nolimits}
+\newcommand\perm{\mathop{\rm perm}\nolimits}
+\newcommand\sech{\mathop{\rm sech}\nolimits}
+\newcommand\csch{\mathop{\rm csch}\nolimits}
+
+\newcommand\arccot{\mathop{\rm arccot}\nolimits}
+\newcommand\arcsec{\mathop{\rm arcsec}\nolimits}
+\newcommand\arccsc{\mathop{\rm arccsc}\nolimits}
+\newcommand\arcsinh{\mathop{\rm arcsinh}\nolimits}
+\newcommand\arccosh{\mathop{\rm arccosh}\nolimits}
+\newcommand\arctanh{\mathop{\rm arctanh}\nolimits}
+\newcommand\arccoth{\mathop{\rm arccoth}\nolimits}
+\newcommand\arcsech{\mathop{\rm arcsech}\nolimits}
+\newcommand\arccsch{\mathop{\rm arccsch}\nolimits}
+
+\iftutex %16bits TeX
+ %lAngle,rAngle are defined in unicode-math
+ \newcommand\Euls[2]{\ensuremath{\Empile{\lAngle}{\rAngle}{#1}{#2}}}
+ %but not in Lucida
+ \ifnum\PoliceDocument=\PoliceLucida
+ \renewcommand\Euls[2]{\bigg\langle\!\!\!\bigg\langle{#1 \atop #2} \bigg\rangle\!\!\!\bigg\rangle}
+ %and dejavusans
+ \else
+ \ifnum\PoliceDocument=\PoliceDejavuSans
+ \renewcommand\Euls[2]{\bigg\langle\!\!\!\bigg\langle{#1 \atop #2} \bigg\rangle\!\!\!\bigg\rangle}
+ \fi
+ \fi
+\else %8 bits TeX.
+ %Use of the TeX definition.
+ \newcommand\Euls[2]{\bigg\langle\!\!\!\bigg\langle{#1 \atop #2} \bigg\rangle\!\!\!\bigg\rangle}
+\fi
+\newcommand\ramsey{\mathop{\rm r}\nolimits}
+\newcommand\Var{\mathop{\rm Var}\nolimits} %variance (prob and stat)
+\newcommand\SousEnsemble[2]{\ensuremath{\Empile{\{}{\}}{#1}{#2}}}
+\newcommand\Cycle[2]{\cycle{#1}{#2}}
+\newcommand\cycle[2]{\ensuremath{\Empile{[}{]}{#1}{#2}}}
+\newcommand\Eul[2]{\eul{#1}{#2}}
+\newcommand\eul[2]{\ensuremath{\Empile{\langle}{\rangle}{#1}{#2}}}
+\newcommand\fivrm{}
+\newcommand\euls[2]{\Euls{#1}{#2}}
+\newcommand\ValAbs[1]{\lvert#1\rvert} %absolute value
+
+%Commands used to make the title page.
+%This document could be typeset many times with each time a different
+%font. Then each produced document will be merged into one.
+%This is useful to show a large set of fonts.
+%
+%In this latter case, it is important to be able to deactivate
+%some parts of the title which will be otherwise redundant.
+\newbool{FullTitle}
+\booltrue{FullTitle}%When true all the title is typeset, otherwise
+ %only the name of the used font is displayed
+
+%The font to use for the name of the package (this font should be adapted,
+%if possible, to a very big character used a title).
+\newcommand\TitleFontFile{QTHelvet-BoldOutline.otf}
+\IfFontExistsTF{\TitleFontFile}%
+ {\newfontface\PackageNameFnt{\TitleFontFile}}{\newcommand\PackageNameFnt{\relax}}
+%This command typeset the main title and the full name of the package
+%The command has no parameter
+\newcommand\PackageName{%
+ \ifbool{FullTitle}%
+ {%
+ \par\centerline{\PackageNameFnt\fontsize{50pt}{55pt}\selectfont MathTrip}\par
+ }{}%
+}
+%A short quote to go with the package name (and the main title)
+\newcommand\TitleQuote{%
+ \ifbool{FullTitle}%
+ {%
+ \begin{flushright}%
+ \parbox[t]{20em}{%
+ %\fontsize{20pt}{24pt}\selectfont
+ La pente, déjà verticale, se redressait encore.
+ \par
+ %\fontsize{16pt}{18pt}\selectfont\itshape
+ \textit{\small The slope, already vertical, was still rising.}
+ \begin{flushright}
+ Georges Livanos (french alpinist)
+ \end{flushright}%
+ }%
+ \end{flushright}%
+ }{}%
+}
+
+%The version of the document
+\newcommand\Version{2.8}