From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/noitcrul/noitcrul.dtx | 187 +++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 macros/latex/contrib/noitcrul/noitcrul.dtx (limited to 'macros/latex/contrib/noitcrul/noitcrul.dtx') diff --git a/macros/latex/contrib/noitcrul/noitcrul.dtx b/macros/latex/contrib/noitcrul/noitcrul.dtx new file mode 100644 index 0000000000..8410c6b0b2 --- /dev/null +++ b/macros/latex/contrib/noitcrul/noitcrul.dtx @@ -0,0 +1,187 @@ +% \iffalse meta-comment +% +%% (C) 2006 Paul Ebermann +%% +%% Package noitcrul - Unterstreichungen ohne "Italic correction". +%% +%% Die Datei noitcrul.dtx sowie die dazugehörige +%% noitcrul.ins sowie die damit generierte +%% noitcrul.sty stehen unter der +%% "LaTeX Project Public License" (LPPL, zu finden +%% unter http://www.latex-project.org/lppl/, sowie +%% auch in den meisten TeX-Distributionen in +%% texmf/docs/latex/base/lppl*.txt), Version 1.3b oder +%% später (nach Wahl des Verwenders). +%% +%% Der 'maintenance-status' ist (zur Zeit) 'author-maintained'. +%% +%% Das heißt u.a., die Dateien dürfen frei vertrieben werden, +%% bei Änderungen (durch andere Personen als Paul Ebermann) +%% ist aber der Name der Datei zu ändern. +% +% \fi +% +% \iffalse +%\NeedsTeXFormat{LaTeX2e}[2003/12/01] +%\ProvidesPackage{noitcrul} +% [2006/04/11 v0.2 Unterstreichungen ohne italic correction (PE)] +% +%<*driver> +\documentclass[draft,ngerman]{ltxdoc} +\usepackage{noitcrul} +\usepackage{pauldoc} +\begin{document} + \DocInput{noitcrul.dtx} +\end{document} +% +% \fi +% +% \changes{v0.1}{2006/03/23}{Erste Fassung} +% \changes{v0.2}{2006/04/11}{Packagename von \pack{underline} zu +% \pack{noitcrul} geändert, wegen +% CTAN-Namenskonflikt.} +% +% \GetFileInfo{noitcrul.sty} +% +% +% \title{Das \pack{noitcrul}-Package -- Schönere Unterstreichungen\thanks{% +% Dieses Dokument gehört zu \pack{noitcrul}~\fileversion, +% vom~\filedate.}} +% \author{Paul Ebermann\thanks{\texttt{Paul-Ebermann@gmx.de}}} +% +% \maketitle +% +% \begin{abstract} +% Das Package stellt eine verkürzte Unterstreichung im Mathemodus +% -- $\noitUnderline{M}_k$ statt $\underline{M}_k$ -- zur Verfügung. +% Dadurch wirkt es bei folgenden Indizees ästhetischer. +% \end{abstract} +% +% \tableofcontents +% +% \section{Benutzerdoku} +% +% Betrachtet man \fbox{$\underline{M}_k$} und \fbox{$M_k$}, so stellt man fest, dass +% das $k$ im zweiten Fall näher am $M$ sitzt als im ersten Fall. Der Grund ist, das +% die Unterstreichung noch ein Stück überhängt -- um die sogenannte \emph{italics correction}, +% d.h. die Länge, die $M$ oben mehr als unten nach rechts ragt. Dieses Paket bietet +% nun (für den Mathemodus\footnote{Ich habe das nur für den Mathemodus benötigt +% (für Kategoriensymbole wie $\noitUnderline{AM}_k$), eine Implementation für den +% Textmodus wäre sogar noch einfacher, denke ich -- kommt vielleicht in einer +% späteren Version.}) eine Unterstreichung, welche nicht überhängt. +% +% \noindent\DescribeMacro{\noitUnderline}\marg{formel} unterstreicht \meta{formel} +% mit vermindertem rechten Überhang. Beispielsweise ergibt '\noitUnderline{M}_k' +% \fbox{$\noitUnderline{M}_k$}. +% +% \StopEventually{\PrintChanges\PrintIndex} +% +% \CheckSum{25} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% Das Package \pack{robustcommand} stellt uns Hilfsmittel zur Kommandodefinition +% zur Verfügung. +% \begin{macrocode} +\RequirePackage{robustcommand} +% \end{macrocode} +% +% \begin{macro}{\neg@it@corr}\noindent\marg{formel} +% +% Dies fügt an der aktuellen Stelle eine negative \emph{italics correction}, wie sie +% nach \meta{formel} eingefügt würde, ein. +% +% Da wir zum Ausmessen der Formel eine '\hbox' brauchen, müssen +% wir darin wieder in den (richtigen) Mathemodus wechseln, also +% rufen wir einfach mit '\mathpalette' ein weiteres Makro auf, +% welches dann die eigentliche Arbeit macht. +% \begin{macrocode} +\newcommand*{\neg@it@corr} + {\mathpalette\neg@it@corr@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\neg@it@corr@}\noindent\marg{mathstyle}\marg{formel} +% \begin{macrocode} +\newcommand*{\neg@it@corr@}[2] +{% +% \end{macrocode} +% Zunächst messen wir die Formel mit und ohne '\/' aus, speichern die Länge +% in Längenregistern.\footnote{\cs{dimen@} und \cs{dimen@ii} sind vom +% \LaTeX-Kernel (bzw. auch schon von \PlainTeX) für temporäre lokale +% Zuweisungen vorgesehen} +% Da '\settowidth' eine '\hbox' aufmacht, müssen wir +% darin wieder in den Mathemodus wechseln, und mit \meta{mathstyle} auch +% noch in den richtigen Stil, aus dem heraus '\neg@it@corr' aufgerufen wurde. +% \begin{macrocode} + \settowidth{\dimen@}{$#1#2\/_{}$}% + \settowidth{\dimen@ii}{$#1#2_{}$}% +% \end{macrocode} +% Dann berechnen wir die Differenz der beiden Längen, und geben das ganze +% gleich noch aus (zu Debug-Zwecken). \footnote{Im Logfile erscheinen immer vier +% Ausgaben, weil \cs{mathpalette} in Wirklichkeit das Makro für jeden Stil +% einmal "`ausführt"' (expandiert), und erst die \TeX-Engine später entscheidet, +% welche der vier gesetzten Formeln wirklich genommen wird, da sich der Stil auch +% noch im Nachhinein ändern kann. Daher geben wir den Namen des Stils gleich mit +% aus.} +% \begin{macrocode} + \advance \dimen@ by -\dimen@ii% + \PackageInfo{noitcrul}{#1: \the\dimen@}% +% \end{macrocode} +% Jetzt die eigentliche Aktion: wir fügen diesen Abstand als negativen Kern hier ein. +% \begin{macrocode} + \kern -\dimen@% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\noitUnderline}\noindent{formel} +% +% Hier das Makro, für das wir das alles machen \ldots +% \begin{macrocode} +\robust@new@command{\noitUnderline}[1] +% \end{macrocode} +% Wir setzen \meta{formel}, und rufen '\neg@it@cor'\marg{formel} auf +% (was ja wieder etwas zurück geht). +% Das ganze unterstreichen wir dann mit '\underline'. +% \begin{macrocode} + {\underline{#1\neg@it@corr{#1}}} +% \end{macrocode} +% \end{macro} +% +% Das war es. +% \begin{macrocode} +\endinput +% +% \end{macrocode} +% +% \Finale +%\endinput + + +%%% Folgendes ist nur für meinen Editor. +%%% +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: -- cgit v1.2.3