diff options
author | Karl Berry <karl@freefriends.org> | 2017-05-03 21:29:26 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-05-03 21:29:26 +0000 |
commit | 6f8c3f839a4825897b9fde0318c4fe0137b507b0 (patch) | |
tree | 5a7c161949388dc3ecf9d3400d9252049b7e582f /Master | |
parent | 3ffb4c1426edf5831bcf0613d851e5e5eb734b79 (diff) |
perfectcut (3may17)
git-svn-id: svn://tug.org/texlive/trunk@44175 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/perfectcut/README | 15 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/perfectcut/perfectcut.pdf | bin | 163054 -> 181497 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/perfectcut/perfectcut.tex | 194 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/perfectcut/perfectcut.sty | 77 |
4 files changed, 128 insertions, 158 deletions
diff --git a/Master/texmf-dist/doc/latex/perfectcut/README b/Master/texmf-dist/doc/latex/perfectcut/README index 0c504fcacdb..72e88ddb9c3 100644 --- a/Master/texmf-dist/doc/latex/perfectcut/README +++ b/Master/texmf-dist/doc/latex/perfectcut/README @@ -16,6 +16,15 @@ This package also offers a sound reimplementation of \big, \bigg, etc. Release notes: + 2.2 04/17: * By default, use the scalerel package instead of the mathstyle + package to compute the nested mathstyle. + * The option nomathstyle and the command \cutstyle are + deprecated. + * The option mathstyle is introduced, to use when scalerel is + too slow. + 2.1 06/15: * the spacing inside cases can be contolled with \cutcasebarskip + * corrected a bug where vertical bars would shrink horizontally + * corrected the spacing of middle delimiters 2.0 11/14: * The package now offers general-purpose commands for defining arbitrary nested delimiters that consistently grow regardless of the contents (\perfectunary and @@ -42,7 +51,7 @@ Release notes: Author: Guillaume Munch-Maccagnoni -http://www.pps.univ-paris-diderot.fr/~munch/ +https://github.com/gadmm/perfectcut This work may be distributed and/or modified under the conditions of @@ -53,8 +62,8 @@ The latest version of this license is in: and version 1.3 or later is part of all distributions of LaTeX version 2005/12/01 or later. -The work consists in the files "perfectcut.sty", "perfectcut.tex" and -the derived files. +The work consists in the files "perfectcut.sty", "perfectcut.lyx", +"perfectcut.tex", and the derived files. This work has the LPPL maintenance status `maintained'. The Current Maintainer of this work is Guillaume Munch-Maccagnoni. diff --git a/Master/texmf-dist/doc/latex/perfectcut/perfectcut.pdf b/Master/texmf-dist/doc/latex/perfectcut/perfectcut.pdf Binary files differindex 21ae2e2bb73..d051e7cb421 100644 --- a/Master/texmf-dist/doc/latex/perfectcut/perfectcut.pdf +++ b/Master/texmf-dist/doc/latex/perfectcut/perfectcut.pdf diff --git a/Master/texmf-dist/doc/latex/perfectcut/perfectcut.tex b/Master/texmf-dist/doc/latex/perfectcut/perfectcut.tex index 64b2421f9c2..b50aee863a5 100644 --- a/Master/texmf-dist/doc/latex/perfectcut/perfectcut.tex +++ b/Master/texmf-dist/doc/latex/perfectcut/perfectcut.tex @@ -2,7 +2,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% %%% Author: Guillaume Munch-Maccagnoni -%%% http://www.pps.univ-paris-diderot.fr/~munch/ +%%% https://github.com/gadmm/perfectcut %%% %%% This work may be distributed and/or modified under the conditions of %%% the LaTeX Project Public License, either version 1.3 of this license @@ -27,28 +27,21 @@ \begin{document} \global\long\def\cut#1#2{\perfectcut{#1}{#2}} -\global\long\def\mt{\bar{\mu}} +\global\long\def\mt{\bar{\mu}} \title{\texttt{perfectcut.sty} documentation} +\author{\noindent {\large{}Guillaume Munch-Maccagnoni}\thanks{\protect\href{https://github.com/gadmm/perfectcut}{https://github.com/gadmm/perfectcut}}} -\author{\noindent {\large{}Guillaume Munch-Maccagnoni}% -\thanks{\protect\href{http://www.pps.univ-paris-diderot.fr/~munch/}{http://www.pps.univ-paris-diderot.fr/$\sim$munch/}% -}} - - -\date{2nd November 2014} +\date{23rd April 2017} \maketitle - \tableofcontents{} - \section{Use} - \paragraph{Original use} This package supplies the following commands: @@ -58,54 +51,45 @@ This package supplies the following commands: \toprule Command & Produces\tabularnewline \midrule -\texttt{\textbackslash{}perfectcut\{\#1\}\{\#2\}} & $\perfectcut{\#1}{\#2}$\tabularnewline -\texttt{\textbackslash{}perfectbra\{\#1\}} & $\perfectbra{\#1}$\tabularnewline -\texttt{\textbackslash{}perfectket\{\#1\}} & $\perfectket{\#1}$\tabularnewline +\texttt{\textbackslash perfectcut\{\#1\}\{\#2\}} & $\perfectcut{\#1}{\#2}$\tabularnewline +\texttt{\textbackslash perfectbra\{\#1\}} & $\perfectbra{\#1}$\tabularnewline +\texttt{\textbackslash perfectket\{\#1\}} & $\perfectket{\#1}$\tabularnewline \bottomrule \end{tabular}\quad{}% \begin{tabular}{ll} \toprule Command & Produces\tabularnewline \midrule -\texttt{\textbackslash{}perfectcase\{\#1\}} & $\perfectcase{\#1}{\#2}$\tabularnewline -\texttt{\textbackslash{}perfectbrackets\{\#1\}} & $\perfectbrackets{\#1}$\tabularnewline -\texttt{\textbackslash{}perfectparens\{\#1\}} & $\perfectparens{\#1}$\tabularnewline +\texttt{\textbackslash perfectcase\{\#1\}} & $\perfectcase{\#1}{\#2}$\tabularnewline +\texttt{\textbackslash perfectbrackets\{\#1\}} & $\perfectbrackets{\#1}$\tabularnewline +\texttt{\textbackslash perfectparens\{\#1\}} & $\perfectparens{\#1}$\tabularnewline \bottomrule \end{tabular} \par\end{center} The effect of these commands is to let the delimiters grow according -to the number of nested \texttt{\textbackslash{}perfect}\texttt{\emph{command}}s +to the number of nested \texttt{\textbackslash perfect}\texttt{\emph{command}}s (regardless of the size of contents). The package is originally intended for solving a notational issue regarding the representation of abstract-machine-like calculi in proof theory and computer science. - \paragraph{General use} -The package also defines \texttt{\textbackslash{}perfectunary} and -\texttt{\textbackslash{}perfectbinary} for defining custom delimiters -that behave similarly to the above ones. These commands should be considered when -facing the need of nested delimiters that consistently grow regardless -of the contents. (See ``Advanced Use''.)\medskip{} - - -If the package causes incompatibility errors, refer to the option -\texttt{nomathstyle} below. - +The package also defines \texttt{\textbackslash perfectunary} and +\texttt{\textbackslash perfectbinary} for defining custom delimiters +that behave similarly to the above ones. These commands should be +considered when facing the need of nested delimiters that consistently +grow regardless of the contents. (See ``Advanced Use''.) \section{Example} - - \subsection{Using \texttt{perfectcut.sty}} \global\long\def\cut#1#2{\cutprimitive{#1}{#2}} - -\noindent \texttt{\footnotesize{}\textbackslash{}usepackage\{perfectcut\}}~\\ -\texttt{\footnotesize{}\textbackslash{}let\textbackslash{}cut\textbackslash{}perfectcut}{\footnotesize \par} +\noindent \texttt{\footnotesize{}\textbackslash usepackage\{perfectcut\}}~\\ +\texttt{\footnotesize{}\textbackslash let\textbackslash cut\textbackslash perfectcut} \begin{center} \fbox{\begin{minipage}[t]{0.8\columnwidth}% @@ -114,12 +98,11 @@ The following states the idempotency of an adjunction: \cut t{\mt x.\cut{\mu\alpha.\cut ue}{e'}}=\cut{\mu\alpha.\cut t{\mt x.\cut ue}}{e'} \] - The following states the commutativity of a strong monad: \[ \cut t{\mt x.\cut u{\mt y.\cut ve}}=\cut u{\mt y.\cut t{\mt x.\cut ve}} \] -Using \texttt{\textbackslash{}underline} to mark redexes: +Using \texttt{\textbackslash underline} to mark redexes: \begin{align*} & \delta(V,x.y,x.y)\\ & =\mu{\star}.\cut V{\perfectcase{\mt x.\underline{\cut y{\star}}}{\mt x.\underline{\cut y{\star}}}}\\ @@ -131,15 +114,13 @@ Using \texttt{\textbackslash{}underline} to mark redexes: \end{minipage}} \par\end{center} +\subsection{Using \texttt{\textbackslash left}, \texttt{\textbackslash middle} +and \texttt{\textbackslash right} instead} -\subsection{Using \texttt{\textbackslash{}left}, \texttt{\textbackslash{}middle} -and \texttt{\textbackslash{}right} instead} - -\global\long\def\fakecut#1#2{\left\langle #1\middle|\mkern-2mu\middle|#2\right\rangle } - +\global\long\def\fakecut#1#2{\left\langle #1\middle|\mkern-2mu \middle|#2\right\rangle } -\noindent \texttt{\footnotesize{}\textbackslash{}renewcommand\{\textbackslash{}cut\}{[}2{]}\{\textbackslash{}left\textbackslash{}langle -\#1\textbackslash{}middle|\textbackslash{}mkern-2mu\textbackslash{}middle|\#2\textbackslash{}right\textbackslash{}rangle\}}{\footnotesize \par} +\noindent \texttt{\footnotesize{}\textbackslash renewcommand\{\textbackslash cut\}{[}2{]}\{\textbackslash left\textbackslash langle +\#1\textbackslash middle|\textbackslash mkern-2mu\textbackslash middle|\#2\textbackslash right\textbackslash rangle\}} \begin{center} \fbox{\parbox[t]{0.8\columnwidth}{% @@ -148,14 +129,12 @@ The following states the idempotency of an adjunction: \fakecut t{\mt x.\fakecut{\mu\alpha.\fakecut ue}{e'}}=\fakecut{\mu\alpha.\fakecut t{\mt x.\fakecut ue}}{e'} \] - The following states the commutativity of a strong monad: \[ \fakecut t{\mt x.\fakecut u{\mt y.\fakecut ve}}=\fakecut u{\mt y.\fakecut t{\mt x.\fakecut ve}} \] - -Using \texttt{\textbackslash{}underline} to mark redexes: +Using \texttt{\textbackslash underline} to mark redexes: \begin{align*} & \delta(V,x.y,x.y)\\ & =\mu{\star}.\fakecut V{\left[\mt x.\underline{\fakecut y{\star}}\middle|\mt x.\underline{\fakecut y{\star}}\right]}\\ @@ -173,28 +152,25 @@ have the wrong size, accents or underlines uselessly make the delimiters grow, and the spacing could be improved. The package is designed to fix these issues. - \section{Advanced use} The package lets you define your own growing delimiters. Let us first stress that the size of these delimiters is entirely determined by the number of nestings and is insensitive to the size of the contents. If you need the size of the contents to be taken into account then -it is probably sufficient to use \texttt{\textbackslash{}left} and -\texttt{\textbackslash{}right} while tweaking \texttt{\textbackslash{}delimitershortfall} -and \texttt{\textbackslash{}delimiterfactor}. - +it is probably sufficient to use \texttt{\textbackslash left} and +\texttt{\textbackslash right} while tweaking \texttt{\textbackslash delimitershortfall} +and \texttt{\textbackslash delimiterfactor}. \subsection{Example} The following displays a set $\{\#1\mid\#2\}$ with delimiters appropriately -sized if there are other \texttt{\textbackslash{}perfectcommands} +sized if there are other \texttt{\textbackslash perfectcommands} inside \texttt{\#1} and \texttt{\#2}.\medskip{} +\texttt{\footnotesize{}\textbackslash def\textbackslash Set\#1\#2\{\textbackslash perfectbinary\{IncreaseHeight\}\textbackslash\{|\textbackslash\}\{\#1\textbackslash mathrel\{\}\}\{\textbackslash mathrel\{\}\#2\}\}}{\footnotesize \par} -\texttt{\footnotesize{}\textbackslash{}def\textbackslash{}Set\#1\#2\{\textbackslash{}perfectbinary\{IncreaseHeight\}\textbackslash{}\{|\textbackslash{}\}\{\#1\textbackslash{}mathrel\{\}\}\{\textbackslash{}mathrel\{\}\#2\}\}}{\footnotesize \par} - -\texttt{\footnotesize{}\textbackslash{}{[}\textbackslash{}Set\{\textbackslash{}perfectparens\{a\}\}\{\textbackslash{}perfectparens\{b\}\}\textbackslash{}{]}}{\footnotesize \par} +\texttt{\footnotesize{}\textbackslash{[}\textbackslash Set\{\textbackslash perfectparens\{a\}\}\{\textbackslash perfectparens\{b\}\}\textbackslash{]}}{\footnotesize \par} \def\Set#1#2{\perfectbinary{IncreaseHeight}\{|\}{#1\mathrel{}}{\mathrel{}#2}} @@ -202,15 +178,13 @@ inside \texttt{\#1} and \texttt{\#2}.\medskip{} \fbox{\ensuremath{\Set{\perfectparens{a}}{\perfectparens{b}}}} \] - - \subsection{Custom delimiters} \begin{description} -\item [{\texttt{\textbackslash{}perfectunary\#1\#2\#3\#4}}] Displays \texttt{\#2} +\item [{\texttt{\textbackslash perfectunary\#1\#2\#3\#4}}] Displays \texttt{\#2} \texttt{\#4} \texttt{\#3} where \texttt{\#2} and \texttt{\#3} are delimiters. The delimiters grow according to \texttt{\#1} which must be one of \texttt{IncreaseHeight}, \texttt{CurrentHeight}, or \texttt{CurrentHeightPlusOne}. -\item [{\texttt{\textbackslash{}perfectbinary\#1\#2\#3\#4\#5\#6}}] Displays +\item [{\texttt{\textbackslash perfectbinary\#1\#2\#3\#4\#5\#6}}] Displays \texttt{\#2} \texttt{\#5} \texttt{\#3} \texttt{\#6} \texttt{\#4} where \texttt{\#2}, \texttt{\#3} and \texttt{\#4} are delimiters. The delimiters grow according to \texttt{\#1} which must be one of \texttt{IncreaseHeight}, @@ -226,60 +200,47 @@ The stock commands behave as follow: \toprule Command & Produces & Growth & Inserts skips\tabularnewline \midrule -\texttt{\textbackslash{}perfectcut\{\#1\}\{\#2\}} & $\perfectcut{\#1}{\#2}$ & \texttt{IncreaseHeight} & Yes\tabularnewline -\texttt{\textbackslash{}perfectbra\{\#1\}} & $\perfectbra{\#1}$ & \texttt{IncreaseHeight} & Yes\tabularnewline -\texttt{\textbackslash{}perfectket\{\#1\}} & $\perfectket{\#1}$ & \texttt{IncreaseHeight} & Yes\tabularnewline -\texttt{\textbackslash{}perfectcase\{\#1\}} & $\perfectcase{\#1}{\#2}$ & \texttt{CurrentHeightPlusOne} & Yes\tabularnewline -\texttt{\textbackslash{}perfectbrackets\{\#1\}} & $\perfectbrackets{\#1}$ & \texttt{CurrentHeightPlusOne} & Only inside\tabularnewline -\texttt{\textbackslash{}perfectparens\{\#1\}} & $\perfectparens{\#1}$ & \texttt{CurrentHeight} & Only inside\tabularnewline -\texttt{\textbackslash{}perfectunary\{\#1\}}~\\ +\texttt{\textbackslash perfectcut\{\#1\}\{\#2\}} & $\perfectcut{\#1}{\#2}$ & \texttt{IncreaseHeight} & Yes\tabularnewline +\texttt{\textbackslash perfectbra\{\#1\}} & $\perfectbra{\#1}$ & \texttt{IncreaseHeight} & Yes\tabularnewline +\texttt{\textbackslash perfectket\{\#1\}} & $\perfectket{\#1}$ & \texttt{IncreaseHeight} & Yes\tabularnewline +\texttt{\textbackslash perfectcase\{\#1\}} & $\perfectcase{\#1}{\#2}$ & \texttt{CurrentHeightPlusOne} & Yes\tabularnewline +\texttt{\textbackslash perfectbrackets\{\#1\}} & $\perfectbrackets{\#1}$ & \texttt{CurrentHeightPlusOne} & Only inside\tabularnewline +\texttt{\textbackslash perfectparens\{\#1\}} & $\perfectparens{\#1}$ & \texttt{CurrentHeight} & Only inside\tabularnewline +\texttt{\textbackslash perfectunary\{\#1\}}~\\ \texttt{~\{\#2\}\{\#3\}\{\#4\}} & $\#2\,\#4\,\#3$ & \#1 & No\tabularnewline -\texttt{\textbackslash{}perfectbinary\{\#1\}}~\\ +\texttt{\textbackslash perfectbinary\{\#1\}}~\\ \texttt{~\{\#2\}\{\#3\}\{\#4\}\{\#5\}\{\#6\}} & $\#2\,\#5\,\#3\,\#6\,\#4$ & \#1 & No\tabularnewline \bottomrule \end{tabular} \par\end{center} - \section{Options} +\subsection{Option \texttt{mathstyle}} -\subsection{Option \texttt{nomathstyle}} - -The use of \texttt{\textbackslash{}currentmathstyle} from the package -\texttt{mathstyle} prevents the exponential blowup in recursions that -would occur if we used \texttt{\textbackslash{}mathpalette} instead. -To record the \texttt{\textbackslash{}currentmath\-style}, \texttt{mathstyle} -redefines many primitives and is therefore a source of incompatibilities. -If you run into such issues, please refer to the \texttt{mathstyle} -manual. - -If you want to disable the loading of \texttt{mathstyle}, use the -\texttt{nomathstyle} option. With the \texttt{nomathstyle} option, -the style is set to \texttt{\textbackslash{}cutstyle}, which you must - define by hand to be \texttt{\textbackslash{}displaystyle}, \texttt{\textbackslash{}textstyle -}(default), \texttt{\textbackslash{}scriptstyle}, \texttt{\textbackslash{}scriptscriptstyle}. -This means that cuts in subscripts and superscripts do not have the -proper size unless \texttt{\textbackslash{}cutstyle }is redefined. - +With this option, the command \texttt{\textbackslash currentmathstyle} +from the package \texttt{mathstyle} is used instead of the command +\texttt{\textbackslash ThisStyle} from the \texttt{scalerel} package. +The latter (default) uses \texttt{\textbackslash mathchoice} which +has exponential time complexity in the number of nestings. The former +does not use \texttt{\textbackslash mathchoice} but redefines many +primitives and is therefore a source of incompatibilities. \subsection{Option \texttt{realVert}} With the option \texttt{realVert}, the double bars are obtained with -the \texttt{\textbackslash{}Vert} command. Without it, two \texttt{\textbackslash{}vert} -symbols are used and their spacing is controlled with \texttt{\textbackslash{}cutinterbarskip}. -But, if \texttt{realVert} is not activated, then a penalty (\texttt{binoppenalty}) +the \texttt{\textbackslash Vert} command. But without it, two \texttt{\textbackslash vert} +symbols are used and their spacing is controlled with \texttt{\textbackslash cutinterbarskip}. +Also, if \texttt{realVert} is not activated, then a penalty (\texttt{binoppenalty}) is added, such that $\cut{\mu\alpha.\cut ab}{\mt x.\cut cd}$ splits across lines. - \subsection{Option \texttt{fixxits}} For some reason that the author was unable to identify, the vertical alignment is wrong with the Opentype XITS math font with XeTeX. The option \texttt{fixxits} fixes this behaviour. - \subsection{Customisation} The following mu-skips can be redefined in your preamble: @@ -289,24 +250,23 @@ The following mu-skips can be redefined in your preamble: \toprule Command & Defines the spacing...\tabularnewline \midrule -\texttt{\textbackslash{}cutbarskip=5.0mu plus 8mu minus 2.0mu} & around bars\tabularnewline -\texttt{\textbackslash{}cutangleskip=0.0mu plus 8mu minus 1.0mu} & around delimiters (inside)\tabularnewline -\texttt{\textbackslash{}cutangleouterskip=0.0mu plus 8mu minus 0mu} & around delimiters (outside)\tabularnewline -\texttt{\textbackslash{}cutinterbarskip=0.8mu plus 0mu minus 0mu} & between bars (excl. \texttt{realVert})\tabularnewline +\texttt{\textbackslash cutbarskip=5.0mu plus 8mu minus 2.0mu} & around bars\tabularnewline +\texttt{\textbackslash cutangleskip=0.0mu plus 8mu minus 1.0mu} & around delimiters (inside)\tabularnewline +\texttt{\textbackslash cutangleouterskip=0.0mu plus 8mu minus 0mu} & around delimiters (outside)\tabularnewline +\texttt{\textbackslash cutinterbarskip=0.8mu plus 0mu minus 0mu} & between bars (excl. \texttt{realVert})\tabularnewline \bottomrule \end{tabular} \par\end{center} \noindent (1 mu equals $1/18$ of an em in the current math font.) - \section{Reimplementation of fixed-size delimiters} In addition, I provide the following corrections and generalisations -of \texttt{\textbackslash{}big},\texttt{\textbackslash{}bigg}, etc. +of \texttt{\textbackslash big},\texttt{\textbackslash bigg}, etc. Why not using the latter? Because both the plain \TeX{} and the \texttt{amsmath} versions can be incorrect when changing the math font, the font size, -the math style or \texttt{\textbackslash{}delimitershortfall}. Moreover, +the math style or \texttt{\textbackslash delimitershortfall}. Moreover, Opentype math fonts sometimes offer more than five sizes. For this package we need a robust solution. @@ -316,49 +276,45 @@ package we need a robust solution. Command & Example & \tabularnewline \midrule \multicolumn{3}{l}{\emph{\#1-th size of delimiter \#2}}\tabularnewline -\texttt{\textbackslash{}nthleft\{\#1\}\{\#2\} } & \texttt{\textbackslash{}nthleft\{2\}(} & $\nthleft{2}($\tabularnewline\addlinespace[0.1em] -\texttt{\textbackslash{}nthmiddle\{\#1\}\{\#2\}} & \texttt{\textbackslash{}nthmiddle\{2\}\textbackslash{}Vert} & $\nthmiddle{2}\Vert$\tabularnewline\addlinespace[0.1em] -\texttt{\textbackslash{}nthright\{\#1\}\{\#2\}} & \texttt{\textbackslash{}nthright\{2\})} & $\nthright{2})$\tabularnewline\addlinespace[0.1em] +\texttt{\textbackslash nthleft\{\#1\}\{\#2\} } & \texttt{\textbackslash nthleft\{2\}(} & $\nthleft{2}($\tabularnewline\addlinespace[0.1em] +\texttt{\textbackslash nthmiddle\{\#1\}\{\#2\}} & \texttt{\textbackslash nthmiddle\{2\}\textbackslash Vert} & $\nthmiddle{2}\Vert$\tabularnewline\addlinespace[0.1em] +\texttt{\textbackslash nthright\{\#1\}\{\#2\}} & \texttt{\textbackslash nthright\{2\})} & $\nthright{2})$\tabularnewline\addlinespace[0.1em] \multicolumn{1}{l}{\emph{delimiter \#2 of height at least \#1}} & & \tabularnewline\addlinespace[0.1em] -\texttt{\textbackslash{}lenleft\{\#1\}\{\#2\}} & \texttt{\textbackslash{}lenleft\{3.2mm\}{[}} & $\lenleft{3mm}[$\tabularnewline\addlinespace[0.1em] -\texttt{\textbackslash{}lenmiddle\{\#1\}\{\#2\}} & \texttt{\textbackslash{}lenmiddle\{3.2mm\}|} & $\lenmiddle{3mm}|$\tabularnewline\addlinespace[0.1em] -\texttt{\textbackslash{}lenright\{\#1\}\{\#2\}} & \texttt{\textbackslash{}lenright\{3.2mm\}{]}} & $\lenright{3mm}]$\tabularnewline\addlinespace[0.1em] +\texttt{\textbackslash lenleft\{\#1\}\{\#2\}} & \texttt{\textbackslash lenleft\{3.2mm\}{[}} & $\lenleft{3mm}[$\tabularnewline\addlinespace[0.1em] +\texttt{\textbackslash lenmiddle\{\#1\}\{\#2\}} & \texttt{\textbackslash lenmiddle\{3.2mm\}|} & $\lenmiddle{3mm}|$\tabularnewline\addlinespace[0.1em] +\texttt{\textbackslash lenright\{\#1\}\{\#2\}} & \texttt{\textbackslash lenright\{3.2mm\}{]}} & $\lenright{3mm}]$\tabularnewline\addlinespace[0.1em] \multicolumn{3}{l}{\emph{delimiter \#2 of height exactly \#1 obtained by scaling the above one}}\tabularnewline\addlinespace[0.1em] -\texttt{\textbackslash{}reallenleft\{\#1\}\{\#2\}} & \texttt{\textbackslash{}reallenleft\{3.2mm\}{[}} & $\reallenleft{3mm}[$\tabularnewline\addlinespace[0.1em] -\texttt{\textbackslash{}reallenmiddle\{\#1\}\{\#2\}} & \texttt{\textbackslash{}reallenmiddle\{3.2mm\}|} & $\reallenmiddle{3mm}|$\tabularnewline\addlinespace[0.1em] -\texttt{\textbackslash{}reallenright\{\#1\}\{\#2\}} & \texttt{\textbackslash{}reallenright\{3.2mm\}{]}} & $\reallenright{3mm}]$\tabularnewline +\texttt{\textbackslash reallenleft\{\#1\}\{\#2\}} & \texttt{\textbackslash reallenleft\{3.2mm\}{[}} & $\reallenleft{3mm}[$\tabularnewline\addlinespace[0.1em] +\texttt{\textbackslash reallenmiddle\{\#1\}\{\#2\}} & \texttt{\textbackslash reallenmiddle\{3.2mm\}|} & $\reallenmiddle{3mm}|$\tabularnewline\addlinespace[0.1em] +\texttt{\textbackslash reallenright\{\#1\}\{\#2\}} & \texttt{\textbackslash reallenright\{3.2mm\}{]}} & $\reallenright{3mm}]$\tabularnewline \bottomrule \end{tabular} \par\end{center} +\subsection{Example with \texttt{\textbackslash nthleft}} -\subsection{Example with \texttt{\textbackslash{}nthleft}} - -\texttt{\footnotesize{}\textbackslash{}nrthleft0{[}\textbackslash{}nthleft1{[}\textbackslash{}nthleft2{[}\textbackslash{}nthleft3{[}\textbackslash{}nthleft4{[}\textbackslash{}nthleft5{[}\textbackslash{}nthleft6{[}}{\footnotesize \par} +\texttt{\footnotesize{}\textbackslash nrthleft0(\textbackslash nthleft1(\textbackslash nthleft2(\textbackslash nthleft3(\textbackslash nthleft4(\textbackslash nthleft5(\textbackslash nthleft6(}{\footnotesize \par} \[ \nthleft0(\nthleft1(\nthleft2(\nthleft3(\nthleft4(\nthleft5(\nthleft6( \] +\subsection{Example with \texttt{\textbackslash big},\texttt{\textbackslash Big},\texttt{\textbackslash bigg},\texttt{\textbackslash Bigg}} - -\subsection{Example with \texttt{\textbackslash{}big},\texttt{\textbackslash{}Big},\texttt{\textbackslash{}bigg},\texttt{\textbackslash{}Bigg}} - -\texttt{\footnotesize{}{[}\textbackslash{}big{[}\textbackslash{}Big{[}\textbackslash{}bigg{[}\textbackslash{}Bigg{[}}{\footnotesize \par} +\texttt{\footnotesize{}(\textbackslash big(\textbackslash Big(\textbackslash bigg(\textbackslash Bigg(}{\footnotesize \par} \[ (\big(\Big(\bigg(\Bigg( \] -The above uses the \texttt{\textbackslash{}big} commands from the +The above uses the \texttt{\textbackslash big} commands from the \texttt{amsmath} package. The \texttt{amsmath} package corrects issues with the original \TeX{} commands, but I could still notice inconsistencies, -such as \texttt{\textbackslash{}big} starting at size 2, under some -font combinations. \texttt{\textbackslash{}nthleft}, \texttt{\textbackslash{}nthright} -and \texttt{\textbackslash{}nthmiddle} are implemented in a more robust +such as \texttt{\textbackslash big} starting at size 2, under some +font combinations. \texttt{\textbackslash nthleft}, \texttt{\textbackslash nthright} +and \texttt{\textbackslash nthmiddle} are implemented in a more robust way. - \section{License} This work may be distributed and/or modified under the conditions diff --git a/Master/texmf-dist/tex/latex/perfectcut/perfectcut.sty b/Master/texmf-dist/tex/latex/perfectcut/perfectcut.sty index 87baaff7904..672333d6da0 100644 --- a/Master/texmf-dist/tex/latex/perfectcut/perfectcut.sty +++ b/Master/texmf-dist/tex/latex/perfectcut/perfectcut.sty @@ -2,23 +2,23 @@ %%%%%%%%%%%%%%%%%%% %%% %%% Author: Guillaume Munch-Maccagnoni -%%% http://www.pps.univ-paris-diderot.fr/~munch/ -%%% +%%% http://guillaume.munch.name/ +%%% %%% This work may be distributed and/or modified under the conditions of %%% the LaTeX Project Public License, either version 1.3 of this license %%% or (at your option) any later version. Refer to the README file. -%%% %%% -\ProvidesPackage{perfectcut}[03/11/2014 Perfect Cut v2.0] +%%% +\ProvidesPackage{perfectcut}[04/22/2017 Perfect Cut v2.2] %%% Option processing \newif\ifcut@mathstyle@ -\cut@mathstyle@true +\cut@mathstyle@false \newif\ifcut@realVert@ \cut@realVert@false \newif\ifcut@fixxits@ \cut@fixxits@false -\DeclareOption{nomathstyle}{\cut@mathstyle@false} -\let\cutstyle\textstyle +\DeclareOption{nomathstyle}{\cut@mathstyle@false}%backwards compat +\DeclareOption{mathstyle}{\cut@mathstyle@true} \DeclareOption{realVert}{\cut@realVert@true} \DeclareOption{fixxits}{\cut@fixxits@true} \ProcessOptions* @@ -29,6 +29,7 @@ \newmuskip\cutbarskip \newmuskip\cutinterbarskip \newmuskip\cutangleouterskip +\newmuskip\cutcasebarskip \newif\ifcutdebug %%% Exported commands %%See end of file for a more detailed description of the commands @@ -54,6 +55,7 @@ \cutangleskip=0.0mu plus 8mu minus 1.0mu \cutangleouterskip=0.0mu plus 8mu minus 0.0mu \cutinterbarskip=1.4mu plus 0mu minus 0mu +\cutcasebarskip=3.0mu plus 5.0mu minus 1.5mu \cutdebugfalse%% print the size after each \rangle? %%% Various reimplementations of \left, \right and \middle. %% \nthleft{4}\langle ==> fourth size of \langle; begins at 0 @@ -83,9 +85,12 @@ %% setting up mathstyle \ifcut@mathstyle@ \RequirePackage{mathstyle} - \def\currentcutstyle{\currentmathstyle} + \def\cut@currentcutstyle{\currentmathstyle} + \def\cut@setcurrentcutstyle{} \else - \def\currentcutstyle{\cutstyle} + \RequirePackage{scalerel} + \def\cut@setcurrentcutstyle{\ThisStyle} + \def\cut@currentcutstyle{\SavedStyle} \fi %% sets the behaviour of delimiters to always grow while evaluating #1 @@ -94,24 +99,24 @@ \global\delimitershortfall=-0.1pt%that's the trick to get perfect growth \count0=\delimiterfactor% \global\delimiterfactor=901\relax% - \hbox{$\m@th\currentcutstyle#1$}% + \hbox{$\m@th\cut@currentcutstyle#1$}% \global\delimitershortfall=\skip0% \global\delimiterfactor=\count0% } %% scale #2 to size #1 (length) \newcommand{\cut@resizetoheight}[2]{% - \resizebox{!}{#1}{\hbox{$\m@th\currentcutstyle#2$}}% + \resizebox{!}{#1}{\hbox{$\m@th\cut@currentcutstyle#2$}}% } \newsavebox\cut@boxi \newsavebox\cut@boxj %% scale #2 to the size of #1. Assumes that #1 goes above and below the base line. \newcommand{\cut@resizetoheightof}[2]{% - \sbox{\cut@boxi}{$\m@th\currentcutstyle#1$}% - \sbox{\cut@boxj}{$\m@th\currentcutstyle#2$}% + \sbox{\cut@boxi}{$\m@th\cut@currentcutstyle#1$}% + \sbox{\cut@boxj}{$\m@th\cut@currentcutstyle#2$}% \raisebox{-\dp\cut@boxi}{% - \resizebox{!}{\ht\cut@boxi+\dp\cut@boxi}{% + \resizebox{\width}{\ht\cut@boxi+\dp\cut@boxi}{% \raisebox{\dp\cut@boxj}{\usebox{\cut@boxj}}% }% }% @@ -128,17 +133,17 @@ %% used in order to have vertical bars of the perfect size \newcommand{\cut@matchingldelim}[2]{\mathopen{\cut@resizetoheightof{#1}{\cut@nextldelim{#2}{#1}}}} \newcommand{\cut@matchingrdelim}[2]{\mathclose{\cut@resizetoheightof{#1}{\cut@nextrdelim{#2}{#1}}}} -\newcommand{\cut@matchingmdelim}[2]{\mathrel{\cut@resizetoheightof{#1}{\cut@nextmdelim{#2}{#1}}}} +\newcommand{\cut@matchingmdelim}[2]{\mathord{\cut@resizetoheightof{#1}{\cut@nextmdelim{#2}{#1}}}} %% gives the delimiter #2 which is immediately longer than #1 (length) -\newcommand{\cut@lengthldelim}[2]{\mathopen{\cut@setshortfall{\cut@nextldelim#2{\rule[-0.101pt]{0pt}{#1}}}}} -\newcommand{\cut@lengthrdelim}[2]{\mathclose{\cut@setshortfall{\cut@nextrdelim#2{\rule[-0.101pt]{0pt}{#1}}}}} -\newcommand{\cut@lengthmdelim}[2]{\mathrel{\cut@setshortfall{\cut@nextmdelim#2{\rule[-0.101pt]{0pt}{#1}}}}} +\newcommand{\cut@lengthldelim}[2]{\mathopen{\cut@setcurrentcutstyle{\cut@setshortfall{\cut@nextldelim#2{\rule[-0.101pt]{0pt}{#1}}}}}} +\newcommand{\cut@lengthrdelim}[2]{\mathclose{\cut@setcurrentcutstyle{\cut@setshortfall{\cut@nextrdelim#2{\rule[-0.101pt]{0pt}{#1}}}}}} +\newcommand{\cut@lengthmdelim}[2]{\mathord{\cut@setcurrentcutstyle{\cut@setshortfall{\cut@nextmdelim#2{\rule[-0.101pt]{0pt}{#1}}}}}} -%% like the previous one but resized to exactly match #1 (length) -\newcommand{\cut@reallengthldelim}[2]{\mathopen{\cut@resizetoheight{#1}{\cut@nextldelim#2{\rule[-0.101pt]{0pt}{#1}}}}} -\newcommand{\cut@reallengthrdelim}[2]{\mathclose{\cut@resizetoheight{#1}{\cut@nextrdelim#2{\rule[-0.101pt]{0pt}{#1}}}}} -\newcommand{\cut@reallengthmdelim}[2]{\mathrel{\cut@resizetoheight{#1}{\cut@nextmdelim#2{\rule[-0.101pt]{0pt}{#1}}}}} +%% like the previous one but resized to exactly match #1 (length) +\newcommand{\cut@reallengthldelim}[2]{\mathopen{\cut@setcurrentcutstyle{\cut@resizetoheight{#1}{\cut@nextldelim#2{\rule[-0.101pt]{0pt}{#1}}}}}} +\newcommand{\cut@reallengthrdelim}[2]{\mathclose{\cut@setcurrentcutstyle{\cut@resizetoheight{#1}{\cut@nextrdelim#2{\rule[-0.101pt]{0pt}{#1}}}}}} +\newcommand{\cut@reallengthmdelim}[2]{\mathord{\cut@setcurrentcutstyle{\cut@resizetoheight{#1}{\cut@nextmdelim#2{\rule[-0.101pt]{0pt}{#1}}}}}} %I don't get anything about this bug which affects the %alignment with respect to the math axis @@ -165,10 +170,10 @@ \def\cut@tempnextdelim{#3{#2}}% \cut@setshortfall{\cut@iter{#1}\cut@tempnextdelim}% } -%% \cut@nthxdelim gives the #1-th size of the delimiter #2 -\newcommand{\cut@nthldelim}[2]{\mathopen{\cut@nthdelim{#1}{#2}{\cut@nextldelim}}} -\newcommand{\cut@nthrdelim}[2]{\mathclose{\cut@nthdelim{#1}{#2}{\cut@nextrdelim}}} -\newcommand{\cut@nthmdelim}[2]{\mathrel{\cut@nthdelim{#1}{#2}{\cut@nextmdelim}}} +%% \cut@nthxdelim gives the #1-th size of the delimiter #2 +\newcommand{\cut@nthldelim}[2]{\mathopen{\cut@setcurrentcutstyle{\cut@nthdelim{#1}{#2}{\cut@nextldelim}}}} +\newcommand{\cut@nthrdelim}[2]{\mathclose{\cut@setcurrentcutstyle{\cut@nthdelim{#1}{#2}{\cut@nextrdelim}}}} +\newcommand{\cut@nthmdelim}[2]{\mathord{\cut@setcurrentcutstyle{\cut@nthdelim{#1}{#2}{\cut@nextmdelim}}}} %%%% now the main algorithm @@ -209,9 +214,9 @@ %computing recursively \setcounter{\cut@localheight}{-1}% \expandafter\sbox\csname\cut@localsavebox{0}\endcsname% - {$\m@th\currentcutstyle#2$}% + {$\m@th\cut@currentcutstyle#2$}% \expandafter\sbox\csname\cut@localsavebox{1}\endcsname% - {$\m@th\currentcutstyle#3$}% + {$\m@th\cut@currentcutstyle#3$}% \addtocounter{\cut@localheight}{#1}% %exporting values outside the local scope \setcounter{cut@finalheight}{\value{\cut@localheight}}% @@ -227,7 +232,7 @@ %% Calls to cut primitives inside #2 and #4 will have a smaller height. %% Arguments #1, #3 and #5 can access the current height in two different %% forms via \cut@n and \count0. -\newcommand{\cut@computeBinary@IncreaseHeight}[5]{% +\newcommand{\cut@computeBinary@IncreaseHeight}[5]{\cut@setcurrentcutstyle{% \cut@computeBinary@main{1}{#2}{#4}% \@ifundefined{c@\cut@localheight}{}{% if #2 and #4 did not contain any cut primitive \ifnum\value{cut@finalheight}>\value{\cut@localheight}% @@ -241,14 +246,14 @@ #3% \usebox{\cut@boxright}% #5% -} +}} %% Displays #1#2#3#4#5. Arguments #2 and #4 can contain other cut primitives. %% Does not increase the current height computed by cut primitives inside #2 %% and #4. %% Arguments #1, #3 and #5 can access the current height in two different %% forms via \cut@n and \count0. -\newcommand{\cut@computeBinary@CurrentHeight}[5]{% +\newcommand{\cut@computeBinary@CurrentHeight}[5]{\cut@setcurrentcutstyle{% \cut@computeBinary@main{0}{#2}{#4}% \ifnum\value{cut@finalheight}<0% \setcounter{cut@finalheight}{0}% @@ -265,14 +270,14 @@ #3% \usebox{\cut@boxright}% #5% -} +}} %% Displays #1#2#3#4#5. Arguments #2 and #4 can contain other cut primitives. %% Does not increase the current height computed by cut primitives inside #2 %% and #4 but the height to display is increased by 1. %% Arguments #1, #3 and #5 can access the height height in two different %% forms via \cut@n and \count0. -\newcommand{\cut@computeBinary@CurrentHeightPlusOne}[5]{% +\newcommand{\cut@computeBinary@CurrentHeightPlusOne}[5]{\cut@setcurrentcutstyle{% \cut@computeBinary@main{0}{#2}{#4} \@ifundefined{c@\cut@localheight}{}{% if #2 and #4 did not contain any cut primitive \ifnum\value{cut@finalheight}>\value{\cut@localheight}% @@ -287,7 +292,7 @@ #3% \usebox{\cut@boxright}% #5% -} +}} %%% Implementation of the particular delimiters @@ -382,9 +387,9 @@ {\nthleft{\cut@n}[% \mskip\cutangleskip}% {#1}% - {\mskip\cutbarskip% + {\mskip\cutcasebarskip% \cut@matchvert{\nthleft{\cut@n}[}% - \mskip\cutbarskip}% + \mskip\cutcasebarskip}% {#2}% {\mskip\cutangleskip% \nthright{\cut@n}]}% |