PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Randnummern erstellen



cocki
11-05-2005, 20:19
Ich würde gerne in meiner Arbeit Randnummern einfügen. Ich habe bisher nur Basiskenntnisse in tex und mache noch vieles durch trial&error, da ich das System noch nicht ganz durchstiegen habe :D

Ich bin durch einen Freund auf folgende Zeilen gestoßen, durch die es angeblich funzen soll:


\normalmarginpar
\setlength{\marginparwidth}{15mm}
\marginparsep-1mm
\newcounter{marginnr}
\renewcommand{\themarginnr}{\arabic{marginnr}}
\newcommand{\mn}[2][]{%
\stepcounter{marginnr}%
#2%
\marginpar%
[\hfill{\textbf{\themarginnr}}\quad\quad]%
{\quad \textbf{\themarginnr}}%
\protected@edef\@currentlabel{\themarginnr}% ggf. Eintrag in toc
\ifthenelse{\equal{#1}{\@empty}}
{}% nix
else
{\label{#1}}%
}

\renewcommand\@makefntext[1]{%
\setlength{\hangindent}{2em}
\noindent
\hb@xt@\hangindent{%
\hss\@textsuperscript{\normalfont\@thefnmark}\hspa ce{.1em}}#1}
\makeatother


Wenn ich das dann aber so benutze (im Text jeweils \mn{Wort}), fügt er auch brav am Rand ne Randnummer ein - aber in der Console gibt er mir für jede Randnummer einen Error.
Insofern muss da irgendwo ein Fehler sitzen, vielleicht gibt es hier ja jemanden mit viel Ahnung, der das optimieren kann? *liebguck

Sonst hilft es vielleicht dem ein oder anderen, denn unter den Suchbegriffen Randnummer bzw. Randziffer habe ich hier nichts gefunden.

pospiech
11-05-2005, 20:24
Wenn ich das dann aber so benutze (im Text jeweils \mn{Wort}), fügt er auch brav am Rand ne Randnummer ein - aber in der Console gibt er mir für jede Randnummer einen Error.


Und welchen ?
Was hälst du von einem Minimalbeispiel ?

Abgesehen davon sind auf de.comp.text.tex in letzter Zeit einige Threads gelaufen zum Thema margin. Würde sich für dich sicherlich lohnen zu lesen.

Matthias

cocki
12-05-2005, 22:52
Hmm hätte ich mal mitposten sollen. Momentan schwer zu reproduzieren, da ich gerade wieder am Basteln bin (sorry :)). Ich bin auf folgende praktische Seite gestoßen, an der ich mich jetzt entlang hangele und versuche, das Script zu verstehen:

http://www.weinelt.de/latex/index.html

Ich werde mich da mal weiter mit beschäftigen und wenn ich es so habe wie ich es haben will poste ich es hier in überarbeiteter Form (bzw. wenn ich scheitere dann komme ich nochmal mit den Fehlermeldungen ;)).

__________________________________________________ ____________
*Edit*
Ich hab's nach viel Ausprobieren, Grübeln und dem Kauf eines herabgesetzten LaTeX-Buches hinbekommen:

\setlength{\marginparwidth}{15mm}
\marginparsep-1mm
\newcounter{randnummer}
\reversemarginpar

\newcommand{\mn}[2]{%
\stepcounter{randnummer}{#1}
\marginpar{\quad\textbf{\arabic{randnummer}}}{#2}}


Hier die Bedeutung der einzelnen Zeilen (nach meinem Verständnis, bitte weist mich auch Fehler hin, ich lerne gerne):
1: Legt die Breite des Randnotizen-Bereichs fest.
2: Legt den Abstand zwischen Text und Randnotizen fest.
3: Legt einen neuen Zähler mit dem Namen "randnummer" an.
4: Ändert die Position der Randnotizen (wenn ihr die andere Seite wollt: \normalmarginpar)
5: Legt einen neuen Befehl an, der durch "\mn" ausgeführt wird und [2] tasks ausführt.
6: Der erste Task: Der Stepcounter-Befehl lässt den Zähler "randnummer" um eins "wachsen", die #1 steht aber nur für die Nummer des tasks innerhalb der newcommand-Struktur
7: Der Marginpar-Befehl schafft an der ausgeführten Stelle (also später da, wo \mn{} benutzt wird) eine Randnotiz mit dem Inhalt der Klammer (\quad macht nur einen horizontalen Leerraum, \textbf macht den Text in der Klammer fett und \arabic{} gibt die ausgabe des Zählers in der Klammer in arabischen Ziffern).

Ich hoffe das klappt bei euch :)

Grüße, cocki

P.S.: Zum einfügen der Randnummer im Text \mn{Wort} im Text eingeben - die Randnummer erscheint auf Höhe des eingeschlossenen Wortes.

alephone
13-05-2005, 00:43
Hallo cocki,

Glückwunsch zur gefundenen Lösung, das funktioniert soweit ja sehr gut.

Da Du um Hinweise gebeten hattest, falls etwas falsch sein sollte, hier ein Hinweis zu den "Tasks":

Ich habe die Vermutung, Du hast die Bedeutung der [2] falsch verstanden. Diese Zahl gibt die Anzahl der Parameter, die der Befehl besitzt, an. Sie hat nichts mit der Anzahl der einzelnen Einweisungen -- was Du vermutlich mit "Tasks" meinst -- im Befehl zu tun. In Deinem Beispiel bräuchtest Du nur eine [1] anzugeben, da Du nur ein Argument übergeben willst, nämlich das Wort, das mit einer Randnummer versehen werden soll. Anstelle des Platzhalters #1, #2 ... #n wird der entsprechende Wert in der n-ten geschweiften Klammer hinter dem Befehlsaufruf eingesetzt. Versuch mal in Deinem Text folgendes:

\mn{Erstes Argument}{Zweites Argument}

Es wird nach wie vor die Randnummer ausgegeben, aber auch die Inhalte der beiden Klammerpaare.
Die Einklammerung der Platzhalter (also {#1}) ist zwar nicht schädlich, aber hier auch unnötig.

Ich hoffe, das war soweit verständlich und hilft Dir beim Lernen weiter.

Viele Grüße,
Frank

cocki
13-05-2005, 10:05
Hallo Frank,

Vielen Dank für Deine Hinweise und die ausführliche Erklärung, ich hatte das in der Tat falsch verstanden :D

Gruß, Christoph