Randnotizen / Marginalien layout verändern

Layout von Seiten, Rändern, Fusszeilen, usw, modifizieren


huckepick
Forum-Anfänger
Forum-Anfänger
Beiträge: 15
Registriert: Sa 13. Mär 2010, 07:44

Randnotizen / Marginalien layout verändern

Beitrag von huckepick »

Hallo allerseits,

ich schreibe gerade meine Masterarbeit und da gibt es einige Fragen zu klären.

Ich werde mir demnächst mal Latexbücher ausleihen, dennoch fange ich hier an, die Probleme zu posten, die ich nicht mit Hilfe des Internet lösen konnte.

Ich arbeite gern mit Lyx und möchte Zum Beispiel Randnotizen nutzen, um kurzfristig meinen Text zu strukturieren.

Hier erstmal, was ich wünsche umzusetzen:

- Ich möchte die Marginalien grundsätzlich immer auf der linken Seite des Blattes drucken lassen, da ich dort ohnehin 4cm Platz lassen soll.
- Die Marginalien sollen in Schriftgröße der Fußnoten gedruckt sein.
- Ich möchte eine Option haben, mit der ich umschalten kann, ob die Randnotizen gedruckt (also ausgegeben) werden sollen oder nicht.
- Der wenige Text innerhalb der Marginalien soll - wenn möglich - korrekt getrennt werden.
- ich möchte weiterhin die Randnotizfunktion von Lyx nutzen und dennoch \marginnote nutzen


Ich nutze momentan (teilweise durch lyx automatisch generiert) folgende code Teile:

...
\documentclass[12pt,english,ngerman,captions=tableheading, headinclude=false, footinclude=false, german,bibliography=totocnumbered, fontsize=12pt]{scrartcl}
\usepackage[a4paper]{geometry}
\geometry{verbose,tmargin=2.5cm,bmargin=2.5cm,lmargin=4cm,rmargin=1cm}
\usepackage{marginnote}
...

ausserdem:


\let\mymarginpar\marginpar
\renewcommand{\marginpar}[1]{\mymarginpar[\raggedleft\footnotesize #1]{\raggedright\footnotesize #1}}

, was mich erfolgreich \marginpar weiternutzen lässt und die Schriftgröße verändert.

...

was an dessen Stelle nicht funktioniert, ist:


\renewcommand*{\marginfont}{\footnotesize}
\renewcommand{\marginpar}[1]{\marginnote[#1]{#1}}

Das liegt sicher daran, dass ich immer noch nicht genau begriffen habe, wie Kommandos (um-)definiert werden.

Mein größtes Problem ist aber die Ausrichtung immer links und die Option zum an- und abschalten der Notizanzeige.

Trotz des fehlenden Minimalbeispiels bin ich für grundlegende Hinweise dankbar.

Bitte beachtet auch meinen post zu automatischen Korrektur von falsch gesetzten Leerzeichen.

Danke euch

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

\documentclass[english,ngerman,%
  captions=tableheading,%
  headinclude=false,footinclude=false,%
  bibliography=totocnumbered,fontsize=12pt]{scrartcl}
\usepackage{babel}
\usepackage[a4paper]{geometry}
\geometry{verbose,tmargin=2.5cm,bmargin=2.5cm,lmargin=4cm,rmargin=1cm}
\usepackage{marginnote}
\usepackage{ragged2e}
\usepackage{blindtext}

\reversemarginpar% Randnotizen links statt rechts (und umgekehrt)
\renewcommand*{\marginfont}{\footnotesize}
\let\marginpar\marginnote% \marginpar ist jetzt identisch mit \marginnote
\let\raggedleftmarginnote\RaggedRight  % --> marginnote und ragged2e
\let\raggedrightmarginnote\RaggedRight % --> marginnote und ragged2e

\begin{document}
\blindtext\marginpar{first marginnote}

\blindtext[5]\marginpar{second marginnote}
\end{document}
Die globale Option german habe ich rausgeworfen, weil Du sonst Trennmuster für die alte Rechtschreibung hast. Wenn Du die für irgend ein Paket wirklich benötigst, solltest Du dir entweder vor ngerman angeben oder nur beim Laden des jeweiligen Pakets.
Die Schriftgröße muss man auch nur einmal angeben, also habe ich 12pt rausgeworfen. Man hätte stattdessen genauso gut fontsize=12pt rauswerfen können.

Wenn Du eigentlich gar nicht \marginnote statt \marginpar verwenden willst, könntest Du auch so etwas machen, um \marginpar umzudefinieren (ungetestet):
\newcommand*{\MarginPar}{}% Anweisung "reservieren"
\let\MarginPar\marginpar% \MarginPar ist jetzt dasselbe wie \marginpar
\renewcommand*{\marginpar}[2][]{% ein optionales und ein normales Argument
  \ifstr{#1}{}{\MarginPar{\footnotesize\RaggedRight #2}}{%
    \MarginPar[{\footnotesize\RaggedRight #1}]{\footnotesize\RaggedRight #2}%
  }%
}
Diese geänderte Anweisung verhält sich allerdings bei leerem optionalem Argument anders als die Originalanweisung. Da Du \marginpar aber ohnehin ohne optionales Argument verwenden wirst, ist das egal.

Achja, ich habe fast etwas vergessen: Um die Randnotizen auszublenden, fügst Du einfach als letztes ein:
\renewcommand{\marginpar}[2][]{}
ein. Das ist dann einfach ein \marginpar, das nichts anderes tut als sowohl das optionale als auch das nicht optionale Argument zu fressen. Das funktioniert dann problemlos, wenn Du beim Einfügen der \marginpar-Anweisungen ein wenig Disziplin übst und nicht sowohl davor als auch dahinter Leerzeichen oder einen Zeilenumbruch hast, also nicht
Und jetzt \marginpar{jetzt} kommt es.
sondern
Und jetzt\marginpar{jetzt} kommt es.
oder
Und jetzt \marginpar{jetzt}kommt es.
schreibst.

Zum Schluss möchte ich Dich noch bitten, zum einen den Code-Button zu verwenden, wenn Du Code einfügst, und zum anderen keine Code-Schnippsel, sondern immer ein vollständiges Minimalbeispiel (← dies ist ein geprüfter Link mit relevanten Informationen!) anzugeben. Das erleichtert und die Arbeit. Am besten schaust Du Dir die Seiten der beiden ersten Links in meiner Signatur mal etwas genauer an.

Viel Erfolgt noch!

huckepick
Forum-Anfänger
Forum-Anfänger
Beiträge: 15
Registriert: Sa 13. Mär 2010, 07:44

Problem gelöst

Beitrag von huckepick »

Hallo Markus, mein Problem ist jetzt erstmal gelöst. Danke dir.

Dennoch sind mir zusätzliche Problemchen aufgefallen / begegnet, die für mich keine Hürde sind, ich wollte sie aber mal wenigstens ansprechen.

Am Ende des Beitrags ist mein nicht-ganz-so-minimal Beispiel, das es aber ermöglicht, verschiedene Kombinationen von Latexblöcken und Problemfälle zu illustrieren. Die Angesprochenen Fälle beziehen sich darauf, dass genannte Blöcke nicht auskommentiert sind, während andere Blöcke sozusagen deaktiviert wurden...

--------

Es beginnt damit, dass ich eine Randnotiz in LYX hatte, in der ich einen Absatz eingefügt hatte. Die Kompilierung - auch im Minimalbeispiel - führt zu unten aufgeführten Fehlermeldungen.

Jetzt habe ich einfach den Absatz aus der Randnotiz genommen.

Es ergab sich aber folgendes Bild:

%%%%%%%%% Fälle
% original marginpar (ohne Block D/E) ohne Absatz in Fussnote also (Block A)
% 3) original marginpar (ohne Block D/E) mit Absatz in Fussnote also (Block C)
% 1) neues marginpar (mit Block D) ohne Absatz = (Block A)
% 2) neues marginpar (mit Block D) mit Absatz = (Block C)
% 4) neues marginpar (mit Block E) mit Absatz = (Block C)
% 5) neues marginpar (mit Block E) ohne Absatz = (Block A)
%%%%%%%%% Fälle

Ergebnis:

Fall 1 :funktioniert
FAll 3: funktioniert
Fall 5: funktioniert

Fazit: Mit original \marginpar ist ein Absatz kein Problem. Nach Umdefinition gibt es Probleme mit Block E (marginpar) und Block D (marginnote). (Fälle 2 und 4)

----------------
Zweites Problem:

#Direkt aufeinander folgende Randnotizen(Block G):

Ausserdem ist mir aufgefallen, dass bei direkt aufeinander folgenden Randnotizen Block D Fussnoten überdruckend setzt, während Block E Die Fussnoten korrekt untereinander setzt.

-> Das ist auch kein wesentliches Problem für mich, ich wähle nun also Block E

----------------------
Und diesmal kein Problem:

Du meintest, es könne Probleme mit dem Verstecken von Randnotizen geben, wenn zwei Leerzeichen oder ein Absatz die Randnotiz umgeben.
Das konnte ich meiner Meinung nach widerlegen, da:

Blockkombination A+F funktioniert jeweils mit Block E oder d genauso wie
Blockkombination g+f mit D oder E funzt


----------

Ich hoffe, die Beschreibung war nicht zu kryptisch. Wie eingangs gesagt, sind ja meine Probleme gelöst. Nur, wer sich für das Thema interessiert, wird hier vielleicht nützliche Informationen finden.

Hier das Mittel-mal-Beispiel:

\documentclass[english,ngerman,%
  captions=tableheading,%
  headinclude=false,footinclude=false,%
  bibliography=totocnumbered,fontsize=12pt]{scrartcl}
\usepackage{babel}
\usepackage[a4paper]{geometry}
\geometry{verbose,tmargin=2.5cm,bmargin=2.5cm,lmargin=4cm,rmargin=1cm}
\usepackage{marginnote}
\usepackage{ragged2e}
\usepackage{blindtext}



%%%%%%%% alternative Blöcke D und E

% Block D
%\reversemarginpar% Randnotizen links statt rechts (und umgekehrt)
%\renewcommand*{\marginfont}{\footnotesize}
%\let\marginpar\marginnote % \marginpar ist jetzt identisch mit \marginnote
%\let\raggedleftmarginnote\RaggedRight  % --> marginnote und ragged2e
%\let\raggedrightmarginnote\RaggedRight % --> marginnote und ragged2e

%Block E
 \newcommand*{\MarginPar}{}% Anweisung "reservieren"
 \let\MarginPar\marginpar% \MarginPar ist jetzt dasselbe wie \marginpar
 \renewcommand*{\marginpar}[2][]{% ein optionales und ein normales Argument
   \ifstr{#1}{}{\MarginPar{\footnotesize\RaggedRight #2}}{%
     \MarginPar[{\footnotesize\RaggedRight #1}]{\footnotesize\RaggedRight #2}%
   }%
 }

%%%%%%%% alternative Blöcke D und E

%Block F
\renewcommand{\marginpar}[2][]{}

\begin{document}

%%%%%%%% alternative Blöcke A, B, C oder G

%Block A
%\blindtext\marginpar{first marginnote}
%\blindtext[5]\marginpar{second marginnote}

%Block B
%blabla\marginpar{first marginnote}


%Block C
%%%%%% Randnotiz mit Absatz aus Lyx
% blabla\marginpar{schaubild!!!!!!!!!!!
%
% Fertigungslogik%
% }

%Block G
blabla

\marginpar{first marginnote}

\marginpar{first marginnote}

blabla

%%%%%%%% alternative Blöcke A, B, C oder G

\end{document}
Und hier die Fehlermeldungen:
Fehlermeldung FAll 2)

Package marginnote Info: \pdfoutput not 0 and \pdflastxpos available.
(marginnote)             Extended position detection mode activated.
LaTeX Info: Redefining \selectfont on input line 18.
Runaway argument?
{schaubild!!!!!!!!!!! 
! Paragraph ended before \@mn@@marginnote was complete.
<to be read again> 
                   \par 
l.42 
     
? 
! Emergency stop.
<to be read again> 
                   \par 
l.42 

%---------------------------------------------
Fehlermeldung FAll 4:

Runaway argument?
{schaubild!!!!!!!!!!! 
! Paragraph ended before \\marginpar was complete.
<to be read again> 
                   \par 
l.50 
     
?

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Re: Problem gelöst

Beitrag von KOMA »

huckepick hat geschrieben:Ausserdem ist mir aufgefallen, dass bei direkt aufeinander folgenden Randnotizen Block D Fussnoten überdruckend setzt, während Block E Die Fussnoten korrekt untereinander setzt.
Du meinst Randnoten nicht Fußnoten, richtig? Dann ist das so gewollt und in der Doku zu marginnote dokumentiert (bei mir in Abschnitt 2): »Note: The margin note will be placed at the current vertical line. This means, if you are using two \marginnote commands at the same line, they will be put on
the same place. This is not a bug but a feature!« Würde \marginnote in jedem Fall so funktionieren wie \marginpar, gäbe es \marginnote gar nicht.
huckepick hat geschrieben:Und diesmal kein Problem:

Du meintest, es könne Probleme mit dem Verstecken von Randnotizen geben, wenn zwei Leerzeichen oder ein Absatz die Randnotiz umgeben.
Das Problem besteht dann in zwei signifikanten Leerzeichen und besteht, wie folgendes sehr minimale Beispiel zeigt:
\documentclass{article}
\renewcommand{\marginpar}[2][]{}

\begin{document}
\raggedright
Hier \marginpar{Test} einmal mit \verb|\marginpar|.\\
Hier einmal ohne \verb|marginpar|.
\end{document}
Wenn Du genau hinschaust oder auch die beiden Zeilen der Ausgabe vergleichst, wirst Du erkennen, dass es sehr wohl ein Problem ist. Das Problem verschwindet, wenn Du entweder dass Leerzeichen nach »Hier« oder das Leerzeichen vor »einmal« entfernst. Bitte beachte für Deine eigene Anwendung, dass Zeilenumbrüche im Quellcode von TeX ebenfalls als Leerzeichen interpretiert werden. Siehe dazu den Link vor obigem Beispiel.

huckepick hat geschrieben:Fehlermeldung FAll 2)
Package marginnote Info: \pdfoutput not 0 and \pdflastxpos available.
(marginnote)             Extended position detection mode activated.
LaTeX Info: Redefining \selectfont on input line 18.
Runaway argument?
{schaubild!!!!!!!!!!! 
! Paragraph ended before \@mn@@marginnote was complete.
<to be read again> 
                   \par 
l.42 
     
? 
! Emergency stop.
<to be read again> 
                   \par 
l.42 
Die Fehlermeldung kommt davon, dass \marginnote nicht mit Absätzen innerhalb von Randnotizen klar kommt. Dafür wurde es schlicht nicht gebaut. Schon aufgrund anderer Beschränkungen von \marginnote gab es dafür bisher auch keine Anforderungen. Testweise, kannst Du statt einer Leerzeile oder \par in der Randnotiz einmal \endgraf ausprobieren. Wenn das zu seltsamen Effekten führt, ist das aber kein Support-Grund.
huckepick hat geschrieben:Fehlermeldung FAll 4:
Da ist mir inzwischen eine weit bessere Lösung eingefallen. Ersetze mal den kompletten Block E durch:
\makeatletter
\g@addto@macro\@marginparreset{\footnotesize\RaggedRight}
\makeatother
Die Lösung ist (für jemanden, der sich in den Interna von LaTeX auskennt) so trivial, dass ich mich wundere, dass ich da nicht schon früher drauf gekommen bin ... :roll:

huckepick
Forum-Anfänger
Forum-Anfänger
Beiträge: 15
Registriert: Sa 13. Mär 2010, 07:44

Beitrag von huckepick »

Wenn Du genau hinschaust oder auch die beiden Zeilen der Ausgabe vergleichst, wirst Du erkennen, dass es sehr wohl ein Problem ist. Das Problem verschwindet, wenn Du entweder dass Leerzeichen nach »Hier« oder das Leerzeichen vor »einmal« entfernst. Bitte beachte für Deine eigene Anwendung, dass Zeilenumbrüche im Quellcode von TeX ebenfalls als Leerzeichen interpretiert werden. Siehe dazu den Link vor obigem Beispiel.
Das sehe ich jetzt ein. War mir nicht aufgefallen, da ich vor den Randnotizen immer einen Zeilenumbruch gesetzt habe und der machte kein Problem.
Code:
\makeatletter
\g@addto@macro\@marginparreset{\footnotesize\RaggedRight}
\makeatother
Funktioniert! Danke :-)

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

huckepick hat geschrieben:War mir nicht aufgefallen, da ich vor den Randnotizen immer einen Zeilenumbruch gesetzt habe und der machte kein Problem.
Ein einfacher Zeilenumbruch ist auch nur ein Leerzeichen. Da passiert genau dasselbe:
\documentclass{article}
\renewcommand{\marginpar}[2][]{}

\begin{document}
\raggedright
Hier
\marginpar{Test} einmal mit \verb|\marginpar|.\\
Hier
einmal ohne \verb|marginpar|.
\end{document}
Etwas anderes ist ein Absatzanfang. Am Absatzanfang befindet man sich im vertikalen Modus und im vertikalen Modus gibt es keine Wortabstände, also spielen Leerzeichen/Zeilenumbrüche im vertikalen Modus keine Rolle. Man muss allerdings sehr genau wissen, was alles den vertikalen Modus beenden kann, wenn man sich darauf verlassen will.

Antworten