% \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: