Anzeige:
Ergebnis 1 bis 12 von 12

Thema: Tweaking fncychap v1.34

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.01.2009
    Beiträge
    32

    Tweaking fncychap v1.34

    Hallo @all!

    Da mir hier so super geholfen wurde möchte ich kurz ein paar Ideen zum Package fncychap in der aktuellen Version 1.34 hier für andere interessierte Leser deponieren. Entschuldigt, wenn ich Ausdrücke falsch verwende... ich bin kein LaTeX-Profi... auf jeden Fall im Moment noch nicht

    Grundsätzlich geht es mir um die Abstände welche ich optisch als zu gross empfinde und, leider, habe ich noch keine für mich brauchbaren Anleitungen zu diesem Thema gefunden.

    Alle Änderungen werden im jeweiligen Dokument vorgenommen. Ich empfinde diese Lösung als "sauberer", da das Verändern der *.sty Datei permanent sind und somit, vielleicht in einem anderen Fall, unerwünscht.

    Für Anfänger, wie ich es bin, kurz die Einleitung zu jeder dieser Veränderungen im Dokument welche vor "\begin{document}" ein zu fügen sind (stimmts, mechanicus?):

    Code:
    \makeatletter
    ... >>> Hier die jeweiligen Veränderungen einfügen!
    \makeatother
    Ich verwende das Layout "Glenn". Wenn man die fncychap.sty studiert (bei mir zu finden unter "C:\Programme\MiKTeX 2.7\tex\latex\fncychap", was aber je nach LaTeX Packet verschieden sein kann), was ich auf jeden Fall anrate, versteht man schnell, dass je nach Layout eine entsprechend andere Massnahme nötig ist und meine Vorlagen entsprechend abgeändert werden müssen. Aber es ist nicht so schwierig! Eigentlich kann man die entsprechenden Zeilen mit Copy/Paste in sein Dokument übernehmen und noch ein wenig abändern...

    Zum Beispiel wird aus:
    \renewcommand{\DOTI}

    einfach nur
    \renewcommand\DOTI

    ...ist wirklich keine Hexerei und die restlichen Zeilen können mehrheitlich genau so belassen werden, wie man sie aus der fncychap.sty herauskopiert.


    Grundsätzlich aber kann man folgendes festhalten:

    1. Abstand für Kapitel oben verringern
    Diese Einstellung ist für alle Layouts gültig. Es wird der Abstand vom Kapitel-Layout OBEN verringert indem man mit der Zahl bei "\vspace" experimentiert. Das gilt nicht für ToC usw...
    In meinem Fall also:

    Code:
    \renewcommand*\@makechapterhead[1]{%
    \vspace*{-10\p@} % Hier wird der Abstand oben verringert
    {\parindent \z@ \raggedright \normalfont
    \ifnum \c@secnumdepth >\m@ne
    \if@mainmatter%
    \DOCH
    \fi
    \fi
    \interlinepenalty\@M
    \DOTI{#1}
    }}
    Ab hier unterscheiden sich die Informationen, je nach gewünschtem Layout. Alle Layouts sind aber innerhalb der fncychap.sty mit "%%%%%%% Layout DEF" gekennzeichnet und sind somit schnell in einem Editor auffindbar.

    2. Kapitelabstand unten verringern.
    Grundsätzlich wird über "DOTI" der Abstand UNTEN definiert. Dies geschieht erst global, wird aber jeweils von den Layouts überschrieben. Es ist deshalb wichtig, die vom gewünschten Layout angegebenen Parameter zu verwenden.

    In meinem Fall für "Glenn":
    Code:
    \renewcommand\DOTI[1]{%
        \addtolength{\pyy}{-4pt}
        \settoheight{\myhi}{\CTV\FmTi{#1}}
        \addtolength{\myhi}{\py}
        \addtolength{\myhi}{-1\RW}
        \vskip -1\pyy
        \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt
        \raggedleft\CTV\FmTi{#1}\par\nobreak
        \vskip 50\p@} % Hier wird der Abstand nach unten angegeben
    3. Abstand für Index neu definieren.
    Dies geschieht über "DOTIS" welcher genauso erst global, dann im jeweiligen Layout definiert wird.

    Bei mir und für "Glenn" sieht es so aus:
    Code:
    \renewcommand\DOTIS[1]{%
    \setlength{\py}{25pt}  % eller vad man vill >>>Hier wir übrigens die Höhe der "Box" definiert.
        \setlength{\pyy}{\py}
        \setlength{\backskip}{\py}
        \addtolength{\backskip}{2pt}
        \addtolength{\pyy}{\RW}
        \setlength{\myhi}{\baselineskip}
        \addtolength{\myhi}{\pyy}
        \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak
        \vskip -1\backskip
        \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 3pt %
        \raggedleft\CTV\FmTi{#1}\par\nobreak
        \vskip 30\p@ % Hier wird der Abstand nach unten angegeben
    Nachtrag: Mit viel Schützenhilfe und ein paar höchst logischen Überlegungen ("\tableofcontents" kommt nach "\begin{document}"... danke Marco!) hier nun noch das fehlende Teil.

    4 . ToC (also der Seitenindex usw.) nach oben verschieben. Dieser Bereich ist global definiert (wie auch der Punkt 1) und nicht vom jeweiligen Layout abhängig.

    Auch dieser Teil wird mit

    Code:
    \makeatletter
    .... >>>  Veränderungen einfügen!
    \makeatother
    eingeleitet!

    Code:
    \def\@makeschapterhead#1{%
    
    % Nicht zu verwechseln mit makechapterhead von Punkt 1!
    
      \vspace*{50\p@} % Hier wird der Abstand nach oben verringert 
      {\parindent \z@ \raggedright
        \normalfont
        \interlinepenalty\@M
        \DOTIS{#1}
        \vskip 40\p@
      }}

    Ich hoffe diese kurze Erklärung hilft Anfängern wie mir und ich bedanke mich nochmals ganz herzlich bei Marco für die unermüdliche Schützenhilfe!

    P.s.: Vielleicht ist es noch wichtig zu sagen, dass alle Werte für die Abstände auch minus (z.B. {-50\p@} sein können), man muss einfach ein wenig experimentieren!
    Geändert von X-Bit (09-01-2009 um 12:48 Uhr)

  2. #2
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Zitat Zitat von X-Bit Beitrag anzeigen
    Alle Änderungen werden im jeweiligen Dokument vorgenommen. Ich empfinde diese Lösung als "sauberer", da das Verändern der *.sty Datei permanent sind und somit, vielleicht in einem anderen Fall, unerwünscht.
    Wenn ein update der sty-Datei kommt, sind deine Änderungen hinfällig. Also richtige Entscheidung
    Zitat Zitat von X-Bit Beitrag anzeigen
    Für Anfänger, wie ich es bin, kurz die Einleitung zu jeder dieser Veränderungen im Dokument welche vor "\begin{document}" ein zu fügen sind (stimmts, mechanics?):

    Code:
    \makeatletter
    ... >>> Hier die jeweiligen Veränderungen einfügen!
    \makeatother
    Das gilt nur, wenn ein @ in der Zeichenfolge steht. Das ist eine reine Vorsichtsmassnahme, dass nicht ein Laie so einfach im Makro rumspielt.
    Aber du weiß ja Ausnahmen bestätigen die Regel. Man kann das auch innerhalb anwenden

    Zitat Zitat von X-Bit Beitrag anzeigen
    Zum Beispiel wird aus:
    \renewcommand{\DOTI}

    einfach nur
    \renewcommand\DOTI
    Das ist genau das selbe. Man kann die Klammer setzen, muss aber nicht.

    Auf den bestem Wege ein Profi zu werden
    Die absoluten Profis (rais, voss, sommerfee,....) kommen aber bestimmt noch.

    Gruß
    Marco

  3. #3
    Registrierter Benutzer
    Registriert seit
    02.01.2009
    Beiträge
    32
    ...jetzt hab ich vielleicht noch eine echt dumme Frage:

    Ich würde gerne in meinem Dokument den Hinweis auf LaTeX 2e machen. \LaTeX macht ja den Schriftzug richtig, wie krieg ich aber das "2e" sauber hin?!

    Ich habs mal mit

    Code:
    \begin{equation}
    \LaTeX
    \
    2\epsilon
    \end{equation}
    versucht aber da erhalte ich immer noch ein (0.1) rechts davon.

    Kann mir da wer helfen?!

  4. #4
    Registrierter Benutzer Avatar von localghost
    Registriert seit
    01.11.2006
    Ort
    Braunschweig
    Beiträge
    3.413

    Arrow Simpel

    Zitat Zitat von X-Bit Beitrag anzeigen
    [...]Ich würde gerne in meinem Dokument den Hinweis auf LaTeX 2e machen. \LaTeX macht ja den Schriftzug richtig, wie krieg ich aber das "2e" sauber hin?! [...]
    Code:
    \LaTeXe

    MfG
    Thorsten¹
    TeX und LaTeX, Fragen und Antworten – TeXwelt

    ¹ Es tut mir Leid. Meine Antworten sind begrenzt. Sie müssen die richtigen Fragen stellen.
    ² System: openSUSE 13.1 (Linux 3.11.10), TeX Live 2013, TeXworks 0.5 (r1351)

  5. #5
    Registrierter Benutzer
    Registriert seit
    02.01.2009
    Beiträge
    32

    Lightbulb ...stimmt!

    Tja... was man weiss, das weiss man

    Danke!

  6. #6
    Registrierter Benutzer
    Registriert seit
    02.01.2009
    Beiträge
    32
    Zitat Zitat von X-Bit Beitrag anzeigen
    ....
    Wo ich noch nicht dahinter gekommen bin, ist, wo der Abstand OBEN vom ToC geändert werden kann. Allfällige Hinweise oder Beobachtungen sind herzlich erwünscht!

    Ich hoffe diese kurze Erklärung hilft Anfängern wie mir!

    Wir sind hier wohl kurz vom Thema abgekommen... Zur Komplettierung des kleinen "How-To´s" wäre ich froh, wenn mir jemand hier noch kurz unter die Schulter greifen könnte

    Besten Dank!

  7. #7
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Hallo,

    wir wollen natürlich diese Frage nicht unter den Tisch fallen lassen:
    Code:
    \documentclass[12pt,ngerman]{scrreprt}
    \usepackage{babel}
    \usepackage[showframe]{geometry}
    \usepackage{blindtext}
    \usepackage[Glenn]{fncychap}
    
    \makeatletter
    %Abstand nach oben für Kapitel:
    \def\@makechapterhead#1{%
      \vspace*{10\p@}%% Hier wird der Abstand oben verringert
      {\parindent \z@ \raggedright \normalfont
        \ifnum \c@secnumdepth >\m@ne
          \if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 040920
            \DOCH
          \fi
        \fi
        \interlinepenalty\@M
        \if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 060424
          \DOTI{#1}%
        \else%
          \DOTIS{#1}%
        \fi
      }}
    %Abstand nach unten für Kapitel:
    \renewcommand\DOTI[1]{%
        \addtolength{\pyy}{-4pt}
        \settoheight{\myhi}{\CTV\FmTi{#1}}
        \addtolength{\myhi}{\py}
        \addtolength{\myhi}{-1\RW}
        \vskip -1\pyy
        \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt
        \raggedleft\CTV\FmTi{#1}\par\nobreak
        \vskip 50\p@} % Hier wird der Abstand nach unten angegeben
    %Abstand Toc oben
    \def\@makeschapterhead#1{%
      \vspace*{5\p@}%% Hier wird der Abstand oben verringert
      {\parindent \z@ \raggedright
        \normalfont
        \interlinepenalty\@M
        \DOTIS{#1}
        \vskip 40\p@
      }}
    %Abstand Toc unten
    \renewcommand\DOTIS[1]{%
    \setlength{\py}{20pt}  % eller vad man vill >>>Hier wir übrigens die Höhe der "Box" definiert.
        \setlength{\pyy}{\py}
        \setlength{\backskip}{\py}
        \addtolength{\backskip}{2pt}
        \addtolength{\pyy}{\RW}
        \setlength{\myhi}{\baselineskip}
        \addtolength{\myhi}{\pyy}
        \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak
        \vskip -1\backskip
        \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 3pt %
        \raggedleft\CTV\FmTi{#1}\par\nobreak
        \vskip 0\p@} % Hier wird der Abstand nach unten angegeben
    \makeatother
    
    \begin{document}
    \tableofcontents
    \chapter{foo}
    \blindtext[3]
    \chapter{foo}
    \blindtext[3]
    \end{document}
    Gruß
    Marco

  8. #8
    Registrierter Benutzer
    Registriert seit
    02.01.2009
    Beiträge
    32
    Marco... wenn ich jetzt sage "das wollt ich auch gleich schreiben"... dann würd ich lügen !

    Ich hab das jetzt probiert, analog zu den Beispielen oben, entsprechend zu verpacken... doch leider scheint das so nicht zu klappen.

    Hier mein Minimalbeispiel:

    Code:
    %----Präambel
    
    \documentclass[paper=a4,12pt,DIV12]{scrreprt}
    \usepackage[ngerman]{babel} %Trennungen, Schriftsatz; Neue deutsche Rechtschreibung
    \usepackage[showframe]{geometry}
    \usepackage[ansinew]{inputenc} %Dateicodierung
    \usepackage[T1]{fontenc} %Umlaute, Sonderzeichen...
    \usepackage[Glenn]{fncychap} 
    \usepackage{scrpage2} 
    \usepackage{blindtext}
    
    %Abstand Toc oben
    
    \makeatletter
    \def\@makeschapterhead#1{%
      \vspace*{-35\p@}%% Hier wird der Abstand oben verringert
      {\parindent \z@ \raggedright
        \normalfont
        \interlinepenalty\@M
        \DOTIS{#1}
        \vskip 40\p@
      }}
    \makeatother
    
    
    
    %---Header
    \begin{document}
    \chapter{foo}
    \blindtext[3]
    \end{document}
    ...wie du siehst hab ich einen unsinnigen Wert von -35 eingegeben aber leider ohne Effekt!

    Ich habe, spasseshalber, auch mit "\renewcommand*\@makeschapterhead[1]" experimentiert. War aber auch nicht das Gelbe vom Ei

    Irgendwie mag ich mich daran erinnern, dass ich was ähnliches auch schon probiert habe, aber auf keinen grünen Zweig kam...

    Kannst du dir das nochmals anschauen....

    Danke und Gruss!
    Geändert von X-Bit (09-01-2009 um 00:01 Uhr)

  9. #9
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Hallo,

    was soll sich denn bei dir ändern? du hast kein tableofcontents-Aufruf

    Gruß
    Marco

  10. #10
    Registrierter Benutzer
    Registriert seit
    02.01.2009
    Beiträge
    32

    Question

    ...stimmt!

    Hier hab ich es noch mit Toc!

    Code:
    %----Präambel
    
    \documentclass[paper=a4,12pt,DIV12]{scrreprt}
    \usepackage[ngerman]{babel} %Trennungen, Schriftsatz; Neue deutsche Rechtschreibung
    \usepackage[showframe]{geometry}
    \usepackage[ansinew]{inputenc} %Dateicodierung
    \usepackage[T1]{fontenc} %Umlaute, Sonderzeichen...
    \usepackage[Glenn]{fncychap} 
    \usepackage{scrpage2} 
    \usepackage{blindtext}
    
    %---TOC erstellen
    \tableofcontents  
    
    %Abstand Toc oben
    
    \makeatletter
    \def\@makeschapterhead#1{%
      \vspace*{-80\p@}%% Hier wird der Abstand oben verringert
      {\parindent \z@ \raggedright
        \normalfont
        \interlinepenalty\@M
        \DOTIS{#1}
        \vskip 40\p@
      }}
    \makeatother
    
    
    
    %---Header
    \begin{document}
    \chapter{foo}
    \blindtext[3]
    \end{document}
    Funktioniert aber irgendwie trotzdem nicht

  11. #11
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Hallo:

    achte darauf, wo du tableofcontents aufrufst:

    Code:
    \begin{document}
    %---TOC erstellen IM DOKUMENT
    \tableofcontents 
    \chapter{foo}
    \blindtext[3]
    \end{document}
    sonst weiß latex ja gar nicht wohin damit.

    Gruß
    Marco

  12. #12
    Registrierter Benutzer
    Registriert seit
    02.01.2009
    Beiträge
    32
    ...so kann ich lange probieren!

    Ich habe im ersten Kommentar das ganze vervollständigt und nochmals heissen Dank an dich.

    Geniales Forum hier... und, ich habe mein Manual fertig gestellt und werde gerne und bald wieder mit LaTeX arbeiten... ich frage mich, warum ich nicht früher darauf aufmerksam geworden bin, ich hätte mir nächtelanges Gefummel ersparen können!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •