PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Marginal Notes unterdrücken



Poseidonius
05-09-2010, 10:16
Hallo zusammen,

ich schreibe an einer größeren Arbeit und möchte meinen vergesslichen Geist bei einzelnen Absätzen mit Notizen am Rand unterstützen, die am Ende, so der Idealfall, mit einer "nomarginnotes" Option verschwinden sollen.

Bisher nutzte ich das package "marginnote", das solche Funktion offenbar nicht bietet. Gibt es da was anderes ?

Vielen Dank für Eure Anregungen

Grüße und einen schönen Sonntag noch

Poseidonius

mechanicus
05-09-2010, 10:18
Hi,

gewöhne die bitte an, ein Minimalbeispiel zu erstellen.

Auf die schnelle:
\def\marginnote#1{}

Gruß
Marco

Poseidonius
05-09-2010, 10:55
Grandios !!!

Anbei noch das Minimalbeispiel ...



\documentclass{book}
\usepackage{marginnote}
% "Abschalten" der Marginnotes
\def\marginnote#1{}

\begin{document}
\marginnote{Einleitung}
Rababel Rabubel Rabum

\marginnote{Ueberblick}
Ehne mehne meck ...

\end{document}


Warum brauche ich an dieser Stelle kein "\renewcommand" verwenden? Ich dachte immer LaTex würde "meckern" wenn ich einen bestehenden Befehl neu definiere? Ich habe es nun mit verschiedenen Sachen ausprobiert - offbar falsche Information. Wo ist also der Unterschied zwischen \set, \newcommand und \renewcommand?

u_fischer
05-09-2010, 14:26
\newcommand meckert, wenn ein Befehl bereits definiert ist, \renewcommand meckert, wenn der Befehl noch nicht definiert ist. Beides sind LaTeX-Befehle. \def ist der interne, primitive TeX-Befehl, er meckert nie, sondern überschreibt gnadenlos auch bereits existierende Definition, dafür sind es nur 4 Zeichen zu tippen.

rais
05-09-2010, 15:10
Moin moin,

Grandios !!!

Anbei noch das Minimalbeispiel ...



\documentclass{book}
\usepackage{marginnote}
% "Abschalten" der Marginnotes
\def\marginnote#1{}


das dürfte in die Hose gehen, sobald Du einen (oder beide) der zwei optionalen Parameter verwendest, die \marginnote versteht: verwendest Du den ersten, sieht \marginnote die öffnende, eckige Klammer als erstes/einziges Argument, unterdrückt also nur die Ausgabe dieser `[', "foo] bar" wäre nun sichtbar im Text (bei \marginnote[foo]{bar}). Verwendest Du nur das zweite optionale Argument, wird dieses -- samt eckiger Klammer -- im Text sichtbar, erscheint also als [5pt] (bei \marginnote{bar}[5pt]). Verwendest Du beide optionalen Argumente, kombiniert sich das im Text zu "foo]bar[5pt]" (bei \marginnote[foo]{bar}[5pt]). Dann vllt besser


\documentclass{book}
\usepackage{marginnote}
% "Abschalten" der Marginnotes
\makeatletter
\def\@mn@@marginnote[#1]#2[#3]{%
\endgroup
}
\makeatother
\begin{document}
\marginnote{Einleitung}
Rababel Rabubel Rabum

\marginnote[links]{rechts}[1ex]
Ehne mehne meck ...
\clearpage
\marginnote{Einleitung}
Rababel Rabubel Rabum

\marginnote[links]{rechts}[1ex]
Ehne mehne meck ...

\end{document}

Obwohl so eine Umdefinition von @-haltigen Befehlen nach einem Update auch in die Hose gehen kann, es zwingt den Paketautor ja niemand dazu, diese Befehle so wie sie waren beizubehalten, dann vllt noch besser eine Kombination der Art


\makeatletter
\renewcommand*\marginnote[2][]{%
\@ifnextchar[%]
{\mymarginnote[#1]{#2}}{\mymarginnote[#1]{#2}[]}%
}
\makeatother
\newcommand*\mymarginnote{}
\def\mymarginnote[#1]#2[#3]{}
das sollte auch solche Updates überstehen, weil es sich um die internen Befehle von marginnote nicht zu kümmern braucht, lediglich an der Syntax vom \marginnote-Befehl selbst darf sich dabei nix geändert haben.;)

MfG

mechanicus
05-09-2010, 15:21
Hi,

@Rainer,

dann wäre aber das Paket twoopt besser geeignet:


\usepackage{twoopt}
\renewcommandtwoopt{\marginnote}[3][][]{}


Gruß
Marco

rais
05-09-2010, 15:51
Moin Marco,


dann wäre aber das Paket twoopt besser geeignet:


\usepackage{twoopt}
\renewcommandtwoopt{\marginnote}[3][][]{}


damit drehst Du aber die Reihenfolge der Parameter um:
Original: \marginnote[]{}[]
Nach Umdefinition per twoopt: \marginnote[][]{}.
Zum Glück gibt's ja auch noch xparse;-)


\usepackage{xparse}
\RenewDocumentCommand\marginnote{omo}{}

MfG

mechanicus
05-09-2010, 15:55
Moin Marco,

damit drehst Du aber die Reihenfolge der Parameter um:
Original: \marginnote[]{}[]
Nach Umdefinition per twoopt: \marginnote[][]{}.
Zum Glück gibt's ja auch noch xparse;-)


\usepackage{xparse}
\RenewDocumentCommand\marginnote{omo}{}

MfG

Hi,

ich habe die Reihenfolge wirklich nicht beachtet :o

Gruß
Marco

cookie170
05-09-2010, 18:13
Hallo Rainer und Marco,

tolle Diskussion über ein Allerweltsproblem. Zumindest ich schreibe häufig Dokumente mit allen mögliche Anmerkungen im Rand (marginfix ist da ein erheblicher Fortschritt), die ich aber bisher alle per Hand vor dem Versenden des pdf beseitigt habe.

xparse gehört zum L-3 Projekt, twoopt zum Paketezoo von Heiko, der morgen auch anders aussehen kann: Welcher der beiden Methoden, Anmerkungen zu streichen, würdet ihr mehr Zukunft einräumen?

Gruß,
Alexander

rais
05-09-2010, 20:36
Moin Alexander,


tolle Diskussion über ein Allerweltsproblem.

mir war gar nicht klar, daß es sich hier um ein Allerweltsproblem handelt.


Zumindest ich schreibe häufig Dokumente mit allen mögliche Anmerkungen im Rand (marginfix ist da ein erheblicher Fortschritt),
marginfix (http://dante.ctan.org/tex-archive/help/Catalogue/entries/marginfix.html) kenn ich noch nicht -- das mag damit zusammenhängen, daß es bei TeXLive derzeit nicht dabei ist.


die ich aber bisher alle per Hand vor dem Versenden des pdf beseitigt habe.

Wer macht denn sowas? :D


xparse gehört zum L-3 Projekt, twoopt zum Paketezoo von Heiko, der morgen auch anders aussehen kann:
@Marco: Alexander kann schon sehr direkt (http://mrunix.de/forums/showpost.php?p=319545&postcount=7) sein, nich?;-)


Welcher der beiden Methoden, Anmerkungen zu streichen, würdet ihr mehr Zukunft einräumen?

dazu kann ich nichts sagen ...


Difficult to see...always in motion is the future
(Schwer zu sehen ... in ständiger Bewegung ist die Zukunft)

:D
Auf der einen Seite könnte Heiko entscheiden, Dinge wie []{}[] in seinem twoopt-Paket mit zuzulassen, auf der anderen Seite könnten Joseph und Co entscheiden, xparse zu knicken ... oder Markus entscheidet sich, daß \marginnote eine andere Reihenfolge der Parameter vertragen könnte ...
Davon abgesehen, derzeit funktioniert der Ansatz per twoopt in diesem Zusammenhang eh nicht, wie Dir


\documentclass{book}
\usepackage{marginnote,twoopt}
\renewcommandtwoopt{\marginnote}[3][][]{}
\begin{document}
bla\marginnote[links]{rechts}[1ex]
\end{document}

demonstriert.

MfG

mechanicus
05-09-2010, 21:21
@Marco: Alexander kann schon sehr direkt (http://mrunix.de/forums/showpost.php?p=319545&postcount=7) sein, nich?;-)

Das stimmt :D




xparse gehört zum L-3 Projekt, twoopt zum Paketezoo von Heiko, der morgen auch anders aussehen kann: Welcher der beiden Methoden, Anmerkungen zu streichen, würdet ihr mehr Zukunft einräumen?

weder noch. Ich bin der Überzeugung, dass sich evtl. interne Algorithmen des Paketes marginnote ändern, aber definitiv nicht die Anweisung. Daher denke ich, dass die Lösung von Rainer

\makeatletter
\renewcommand*\marginnote[2][]{%
\@ifnextchar[%]
{\mymarginnote[#1]{#2}}{\mymarginnote[#1]{#2}[]}%
}
\makeatother
\newcommand*\mymarginnote{}
\def\mymarginnote[#1]#2[#3]{}
die zweckmäßigste ist.

Vielleicht könnten wir Markus vorschlagen, wirklich eine Option mit ins Paket aufzunehmen, welche die Randnotizen nicht ausgibt.

Gruß
Marco

cookie170
06-09-2010, 13:19
Hallo,

während man schreibt oder Korrektur liest, fällt einem doch ständig irgendetwas ein, was man hier noch braucht, nachlesen will, überprüfen oder ergänzen muss. Oder man liest eine schönen Satz, der vielleicht gut passt, irgendwo in der Literatur und will vermeiden, hinterher stundenlang zu suchen. Die Methode, derartiges als Kommentar in die Datei zu schreiben, ist ja unpraktischer als irgendwo ins pdf, in verschiedenen Farben.

Um diese kurzen Notizen will ich mich nicht weiter kümmern müssen. Bisher war es so, dass Randnotizen teilweise übereinander gedruckt wurden oder am Ende der Seite ins Bodenlose liefen. Dieses Problem löst marginfix, aber offenbar um den Preis, dass \raggedbottom nicht mehr einwandfrei funktioniert, da muss ich noch experimentieren.

In der endgültigen Version muss ich alle Anmerkungen rückstandsfrei entsorgen und die Beseitigung sollte den Zeilen- wie auch den Seitenumbruch unangetastet lassen.

Ich habe dazu folgende Zeilen zusammengebaut:


%%% Randnoten mit marginfix und perpage
\newcounter{Rnnr}
\MakePerPage{Rnnr}% Zähler beginnt neu auffe nächste Seite, Paket
% perpage, es gibt noch zref-perpage
\renewcommand{\theRnnr}{\alph{Rnnr}}
\newcommand{\Anm}[1]{%
\stepcounter{Rnnr}%Randnotennummer um eins erhöhen
\textcolor{red}{\textsuperscript{\textit{\theRnnr} }}% Anker im Text
\marginpar{% Randnotiz
\RaggedRight% Flattersatz
\textcolor{red}{\sffamily{\textsuperscript{\theRnn r}}}% Randnotennummer
\scriptsize% kleine Schrift
\textcolor{red}{#1}}}%Randnotentext


Ich verwende grundsätzlich microtype. Daher wäre es ein rarer Ausnahmefall, dass eine hochgestellte Ziffer zu einem anderen Zeilen-, geschweige denn Seitenumbruch führt. Natürlich, eine Garantie habe ich nicht.

Solange man \marginpar nicht mit optionalen Argumenten verwendet, reicht also zur Beseitigung (muss ich noch ausprobieren)


\def\marginpar#1{}.

Ansonsten hat man die Wahl zwischen xparse & Co.

Im Grunde sind das kurze Fußnoten im Rand. Für meine Arbeitsweise sehr fördern.

Gruß,
Alexander

rais
06-09-2010, 15:41
Moin Alexander,


Um diese kurzen Notizen will ich mich nicht weiter kümmern müssen. Bisher war es so, dass Randnotizen teilweise übereinander gedruckt wurden oder am Ende der Seite ins Bodenlose liefen. Dieses Problem löst marginfix, aber offenbar um den Preis, dass \raggedbottom nicht mehr einwandfrei funktioniert, da muss ich noch experimentieren.

es gibt auf ctt gerade eine Diskussion microtype vs. ragged2e (http://groups.google.com/group/comp.text.tex/browse_thread/thread/204a6f1348511d9d/d04a71634e5ca3e8?lnk=gst&q=microtype+ragged2e#d04a71634e5ca3e8), vllt trifft das auch auf Dich zu.


In der endgültigen Version muss ich alle Anmerkungen rückstandsfrei entsorgen und die Beseitigung sollte den Zeilen- wie auch den Seitenumbruch unangetastet lassen.

Ich habe dazu folgende Zeilen zusammengebaut:


%%% Randnoten mit marginfix und perpage
\newcounter{Rnnr}
\MakePerPage{Rnnr}% Zähler beginnt neu auffe nächste Seite, Paket
% perpage, es gibt noch zref-perpage
\renewcommand{\theRnnr}{\alph{Rnnr}}
\newcommand{\Anm}[1]{%
\stepcounter{Rnnr}%Randnotennummer um eins erhöhen
\textcolor{red}{\textsuperscript{\textit{\theRnnr} }}% Anker im Text
\marginpar{% Randnotiz
\RaggedRight% Flattersatz
\textcolor{red}{\sffamily{\textsuperscript{\theRnn r}}}% Randnotennummer
\scriptsize% kleine Schrift
\textcolor{red}{#1}}}%Randnotentext

Ich verwende grundsätzlich microtype. Daher wäre es ein rarer Ausnahmefall, dass eine hochgestellte Ziffer zu einem anderen Zeilen-, geschweige denn Seitenumbruch führt. Natürlich, eine Garantie habe ich nicht.

Öhmm, hier war eigentlich von \marginnote die Rede, nicht von \marginpar.


Solange man \marginpar nicht mit optionalen Argumenten verwendet, reicht also zur Beseitigung (muss ich noch ausprobieren)


\def\marginpar#1{}.

Ansonsten hat man die Wahl zwischen xparse & Co.

Ehrlich gesagt versteh ich immer weniger, was Du eigentlich willst. Wenn Du Dir eh schon Deinen eigenen Befehl für die Randnotizen gebaut hast, warum definierst Du Dir diesen nicht entsprechend um? So in der Art


\newif\ifskipmarginpars
\skipmarginparsfalse
%\skipmarginparstrue

%%% Randnoten mit marginfix und perpage
\newcounter{Rnnr}
\MakePerPage{Rnnr}% Zähler beginnt neu auffe nächste Seite, Paket
% perpage, es gibt noch zref-perpage
\renewcommand{\theRnnr}{\alph{Rnnr}}
\newcommand{\Anm}[1]{%
\stepcounter{Rnnr}%Randnotennummer um eins erhöhen
\textcolor{red}{\textsuperscript{\textit{\theRnnr} }}% Anker im Text
\marginpar{% Randnotiz
\RaggedRight% Flattersatz
\textcolor{red}{\sffamily{\textsuperscript{\theRnn r}}}% Randnotennummer
\scriptsize% kleine Schrift
\textcolor{red}{#1}}}%Randnotentext
\ifskipmarginpars
\renewcommand\Anm[1]{}%
\fi

Bei Bedarf kommentierst Du dann einfach die Zeile mit dem \skipmarginparstrue ein und gut ist.

BTW: Im Gegensatz zu \marginnote versteht \marginpar nur einen optionalen Parameter[1], das könntest Du also auch ganz normal mit


\renewcommand\marginpar[2][]{}
erledigen ... aber dann hättest Du noch Deine selbstgebastelten Nummern im Text ...

[1] so marginfix da nicht dran dreht.

MfG

cookie170
06-09-2010, 16:00
Moin Alexander,

es gibt auf ctt gerade eine Diskussion microtype vs. ragged2e (http://groups.google.com/group/comp.text.tex/browse_thread/thread/204a6f1348511d9d/d04a71634e5ca3e8?lnk=gst&q=microtype+ragged2e#d04a71634e5ca3e8), vllt trifft das auch auf Dich zu.

Ja, das ist interessant, weil ich ragged2e und microtype verwende, aber selten Gleitumgebungen mit eigenen Titeln.


Öhmm, hier war eigentlich von \marginnote die Rede, nicht von \marginpar.

Naja, es wurde auch nach Alternativen gefragt und marginfix erscheint mir als ein erheblicher Fortschritt, aus den beschriebenen Gründen.


Ehrlich gesagt versteh ich immer weniger, was Du eigentlich willst. Wenn Du Dir eh schon Deinen eigenen Befehl für die Randnotizen gebaut hast, warum definierst Du Dir diesen nicht entsprechend um? So in der Art


\newif\ifskipmarginpars
\skipmarginparsfalse
%\skipmarginparstrue

%%% Randnoten mit marginfix und perpage
\newcounter{Rnnr}
\MakePerPage{Rnnr}% Zähler beginnt neu auffe nächste Seite, Paket
% perpage, es gibt noch zref-perpage
\renewcommand{\theRnnr}{\alph{Rnnr}}
\newcommand{\Anm}[1]{%
\stepcounter{Rnnr}%Randnotennummer um eins erhöhen
\textcolor{red}{\textsuperscript{\textit{\theRnnr} }}% Anker im Text
\marginpar{% Randnotiz
\RaggedRight% Flattersatz
\textcolor{red}{\sffamily{\textsuperscript{\theRnn r}}}% Randnotennummer
\scriptsize% kleine Schrift
\textcolor{red}{#1}}}%Randnotentext
\ifskipmarginpars
\renewcommand\Anm[1]{}%
\fi

Bei Bedarf kommentierst Du dann einfach die Zeile mit dem \skipmarginparstrue ein und gut ist.

Oh, danke, Lösungen Nr. 4+5. Sehr elegant. \newif, my ass. Was es alles gibt.


BTW: Im Gegensatz zu \marginnote versteht \marginpar nur einen optionalen Parameter[1], das könntest Du also auch ganz normal mit


\renewcommand\marginpar[2][]{}
erledigen ... aber dann hättest Du noch Deine selbstgebastelten Nummern im Text ...

Ja, und die in rot oder einer anderen Farbe, denn irgendwann will ich ja verschiedene Farben einführen und dann auch mal testen, ob auch links auf andere Textteile im Rand funktionieren.

Mal wieder vielen Dank für Deine Hilfe. Du hast genau gesehen, was ich will, aber mangels TeX-Kenntnissen nicht hinkriege.

Ich hoffe nur, dass Poseidonuius nicht vor Lachen erstickt ist, immerhin war seine Anfrage vor ein paar Tagen mit einem Einzeiler beantwortet und inzwischen sind wir bei 20 Zeilen Code.

Aber mir hat's weitergeholfen,

Gruß,
Alexander

rais
12-09-2010, 20:43
Moin Alexander,

\newif, my ass. Was es alles gibt.

siehe `texdoc TeXbyTopic', Abschnitt 13.6.


Mal wieder vielen Dank für Deine Hilfe.

Da ja nich für.;-)


Ich hoffe nur, dass Poseidonuius nicht vor Lachen erstickt ist, immerhin war seine Anfrage vor ein paar Tagen mit einem Einzeiler beantwortet und inzwischen sind wir bei 20 Zeilen Code.

Das bezweifle ich, a) seh ich daran nichts Lächerliches und b) war just dieser Einzeiler (potentiell) fehlerbehaftet.


Aber mir hat's weitergeholfen,

und das ist Imho die Hauptsache ;-)

MfG