summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/undertilde
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/undertilde
Initial commit
Diffstat (limited to 'macros/latex/contrib/undertilde')
-rw-r--r--macros/latex/contrib/undertilde/undertilde.dtx142
-rw-r--r--macros/latex/contrib/undertilde/undertilde.ins4
-rw-r--r--macros/latex/contrib/undertilde/undertilde.pdfbin0 -> 174295 bytes
3 files changed, 146 insertions, 0 deletions
diff --git a/macros/latex/contrib/undertilde/undertilde.dtx b/macros/latex/contrib/undertilde/undertilde.dtx
new file mode 100644
index 0000000000..dad945136c
--- /dev/null
+++ b/macros/latex/contrib/undertilde/undertilde.dtx
@@ -0,0 +1,142 @@
+% \iffalse
+%<*never>
+\documentclass{ltxdoc}
+
+\usepackage[T1]{fontenc}
+\usepackage{undertilde}
+\parindent=15pt
+
+\AtBeginDocument{\CodelineIndex\EnableCrossrefs}
+\AtEndDocument{\PrintIndex}
+\begin{document}
+\def\docdate{2000/08/08}
+\CheckSum{213}
+\DocInput{undertilde.dtx}
+\end{document}
+%</never>
+% \fi
+%
+% \DoNotIndex{\newline,\rightslice,\small,\itshape,\@@apports,\@@competence}
+% \DoNotIndex{\@@date,\@@descr,\@@duree,\@@lieu,\@@titre,\\,\aftergroup}
+% \DoNotIndex{\bigskip,\csname,\def,\edef,\else,\empty}
+% \DoNotIndex{\endcsname,\endtabularx,\ensuremath,\expandafter}
+% \DoNotIndex{\fi,\global,\ifx,\large,\largeurcolonne,\let}
+% \DoNotIndex{\linewidth,\medskip,\newcommand,\newenvironment}
+% \DoNotIndex{\newlength,\pagestyle,\par,\parindent,\phantom}
+% \DoNotIndex{\RequirePackage,\scshape,\setlength,\ta,\tb}
+% \DoNotIndex{\tabularx,\tb,\textbf,\the,\toksdef,\triangleright}
+%
+% \setcounter{tocdepth}{1}
+% \GetFileInfo{undertilde.sty}
+%
+% \title{The \textsf{undertilde} package}
+% \author{Benjamin \textsc{Bayart}\\
+% French Data Network\\
+% \texttt{bayartb@edgard.fdn.fr}}
+% \date{Printed on \today\\Last change on \filedate}
+% \maketitle
+%
+% \begin{abstract}
+% This document describes the use and implementation of the package \textsf{undertilde}
+% to typeset a tilde under one or several math symbols.
+% \end{abstract}
+%
+% \section{Usage}
+%
+% This package provides a |\utilde| command, which behave more or
+% less like the \TeX\ |\tilde| accent, except that the resulting
+% accent is put under the letter. One can think about extending
+% the package to other ``growing accents'' like hat and so on, it
+% is not yet done, maybe in a future release.
+%
+% The syntax is rather evident:
+% \begin{verbatim}
+% \utilde{a} \neq \tilde{a}
+% \end{verbatim}
+%
+% Which produces, in math mode: $\utilde{a} \neq \tilde{a}$.
+% The under accent behaves correctly in all the circumstances where
+% it was tried. The only limit is the one encoded in the font itself,
+% there is a size limit for such accents.
+%
+% It can be used in fractions, square-roots, and so on. It can also
+% span several letters. In some cases, the resulting maths can look
+% strange, like that:
+%\begin{verbatim}
+%\frac{\utilde{ab}}{c} \neq \frac{ab}{c}
+%\end{verbatim}
+%
+% Which result in $\frac{\utilde{ab}}{c} \neq \frac{ab}{c}$.
+%
+% Lets consider this to be a feature and not a bug.
+%
+% \section{How to make this work?}
+%
+% In fact, it's rather easy. In the math fonts, at least the one
+% considered here, the fifth dimension is the minimal amount of
+% white space to be put under a math accent (cf. \TeX{book}).
+%
+% Thus, proceed in N steps:
+% \begin{enumerate}
+% \item Typeset the argument, measure its width.
+% \item Typeset a normal tilde over a ``nothing'' of the same width
+% and of no height.
+% \item Make a stack with the argument, then the tilde, then a negative
+% space to remove the white vertical space added by \TeX.
+% \end{enumerate}
+%
+% \section{Details of the implementation}
+%
+% The usual proclamations:
+% \begin{macrocode}
+%<*package>
+\ProvidesPackage{undertilde}[2000/08/08 v1.0 Tilde under a math object]
+% \end{macrocode}
+%
+% First, we allocate a register to store the value of the fifth
+% fontdimen in the context of the mathematical stuff that is to
+% be typeset (the right font, the right style, the right size).
+%
+% A command to store the current style (display, text, script, etc)
+% that is in use just before the call (|\mathpal@save|).
+%
+% \begin{macrocode}
+\newlength\knuthian@fdfive
+\def\mathpal@save#1{\let\was@math@style=#1\relax}
+% \end{macrocode}
+%
+% Then, the real thing. First, we save the style; then we typeset
+% the argument in box 124.
+%
+% \begin{macrocode}
+\def\utilde#1{\mathpalette\mathpal@save
+ {\setbox124=\hbox{$\was@math@style#1$}%
+% \end{macrocode}
+%
+% Now, the hard thing. The box 125 will, in a firt time contain
+% nothing (it is used to measure the fontdimen 5).
+%
+% \begin{macrocode}
+\setbox125=\hbox{$\fam=3\global\knuthian@fdfive=\fontdimen5\font$}
+% \end{macrocode}
+%
+% Then after, it contains the tilde typeseted over a white rule
+% of the same width than box 124 (the math material that have to
+% be under-tilded).
+%
+% \begin{macrocode}
+\setbox125=\hbox{$\widetilde{\vrule height 0pt depth 0pt width \wd124}$}%
+% \end{macrocode}
+%
+% Then we display, directly in the math formula a box containing
+% the math material (box 124), the tilde (box 125) and a negative
+% skip to ``remove'' the offset added by \TeX\ (the minimal height
+% of the accent, from baseline).
+%
+% \begin{macrocode}
+ \baselineskip=1pt\relax
+ \vtop{\copy124\copy125\vskip -\knuthian@fdfive}}}
+%</package>
+% \end{macrocode}
+%
+% \end{document}
diff --git a/macros/latex/contrib/undertilde/undertilde.ins b/macros/latex/contrib/undertilde/undertilde.ins
new file mode 100644
index 0000000000..4cfb5b3051
--- /dev/null
+++ b/macros/latex/contrib/undertilde/undertilde.ins
@@ -0,0 +1,4 @@
+\input docstrip
+\keepsilent
+\generate{\file{undertilde.sty}{\from{undertilde.dtx}{package}}}
+\endbatchfile
diff --git a/macros/latex/contrib/undertilde/undertilde.pdf b/macros/latex/contrib/undertilde/undertilde.pdf
new file mode 100644
index 0000000000..e2d05516e1
--- /dev/null
+++ b/macros/latex/contrib/undertilde/undertilde.pdf
Binary files differ