summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/noitcrul/noitcrul.dtx
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/noitcrul/noitcrul.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/noitcrul/noitcrul.dtx')
-rw-r--r--macros/latex/contrib/noitcrul/noitcrul.dtx187
1 files changed, 187 insertions, 0 deletions
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
+%<package>\NeedsTeXFormat{LaTeX2e}[2003/12/01]
+%<package>\ProvidesPackage{noitcrul}
+%<package> [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}
+%</driver>
+% \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
+%</package>
+% \end{macrocode}
+%
+% \Finale
+%\endinput
+
+
+%%% Folgendes ist nur für meinen Editor.
+%%%
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End: