Benutzerdefinierter Rahmen für Glossar- und Indexseiten

Benutzerdefinierter Rahmen für Glossar- und Indexseiten

Ich bereite ein technisches Buch in Latex vor und verwendeKOMA-Skript srcbookKlasse und ich möchte NUR Glossar- und Indexseiten einen grauen Rahmen hinzufügen. Die Idee ist, sie leichter auffindbar zu machen, wenn das Buch geschlossen ist, wie im Beispiel unten:

Index-Seite

Ich habe ähnliche Lösungen mit fancyhdroder gesehen tikz, aber (1) weiß ich nicht, ob sie direkt angewendet werden können, ohne KOMA zu beeinträchtigen, und (2) habe ich keine Möglichkeit gefunden, den Rahmen nur auf Index-/Glossarseiten zu beschränken, und ich bin sicher, dass es eine offensichtliche Möglichkeit geben muss, beides zu tun.

UPDATE: Ich habe eine Lösung gefunden (siehe unten), bei der ich die Pakete eso-picund verwende ifthen, um den Rahmen zu zeichnen und die Umgebung etoolboxzu patchen und zu steuern, wo sie angezeigt wird.theindex

Antwort1

backgroundSie können das Paket in Kombination mit TikZ und dem definierten Knoten verwenden current page:

\documentclass{scrbook}
\usepackage[]{background}
\backgroundsetup{contents={}}
\usepackage{lipsum}
\usepackage{imakeidx}

\makeindex
\begin{document}
\index{a}\lipsum[1-10]

\AddEverypageHook{%
   \tikz[remember picture,overlay]\draw[line width=1cm](current page.north east) rectangle (current page.south east);%
}
\printindex
\end{document}

Antwort2

Ich beantworte meine eigene Frage in der Hoffnung, dass sie später jemand nützlich findet.

Meine Lösung ist inspiriert und basiert aufdiese Antwortda die Verwendung von Tikz ein seltsames Verhalten mit der scrbookKlasse zeigt (zumindest in meinem System). Ich habe zwei neue Befehle erstellt \addthumbindex, \clearthumbindexmit denen der Thumbindex aktiviert bzw. deaktiviert werden kann. Der erste Befehl erhält die Farbe und Breite des Thumbindex als obligatorische Argumente, und Sie können auch ein optionales bleedArgument angeben, wenn Sie in A4 drucken müssen, es aber auf B5 zugeschnitten haben möchten (das MWE unten zeigt ein Beispiel).

Diese Lösung ist allerdings nicht perfekt: Wie Sie im folgenden Bild sehen können, konnte ich den Rand auf der Seite nicht entfernen, BEVOR der eigentliche Index beginnt, daher suche ich immer noch nach einer Lösung (ob es nun eine Verbesserung meiner oder eine ganz andere Methode ist). BEARBEITEN: BEHOBEN.

\documentclass[b5paper]{scrbook}
\usepackage[a4,cam,center]{crop} % to show cropping marks (if needed)
\usepackage{xcolor}              % to have colors 
\usepackage{eso-pic}             % put things into background 
\usepackage{ifthen}              % support for conditionals
\usepackage{imakeidx}            % to create the index

\usepackage{lipsum}              % for sample text

\definecolor{thumbindexgray}{RGB}{102,102,102}

% patch `begin{theindex}` to add the border
\AtBeginEnvironment{theindex}{\addthumbindex[bleed]{.5cm}{thumbindexgray}}

% patch `end{theindex}` to clear the border
\AtEndEnvironment{theindex}{\clearthumbindex}

\newcommand{\addthumbindex}[3][]{
    \newlength{\thumbindexwidth}
    \setlength{\thumbindexwidth}{#2}

    \ifthenelse{\equal{#1}{bleed}}{
        %\clearpage (not needed if we patch 'theindex' environment)
        \AddToShipoutPicture{% from package eso-pic: put something to the background
            \ifthenelse{\isodd{\thepage}}{
                % odd page: right bar
                \AtPageLowerLeft{% start the bar at the bottom right of the page
                    \put(\LenToUnit{\dimexpr\paperwidth+\thumbindexwidth-2\thumbindexwidth},
                         \LenToUnit{\dimexpr-\thumbindexwidth}){% move it to the top right
                        \color{#3}\rule{2\thumbindexwidth}{\LenToUnit{\dimexpr\paperheight+2\thumbindexwidth}}%
                    }%
                }%
            }%
            {%
                % even page: left bar
                \AtPageLowerLeft{% start the bar at the left bottom of the page
                    \put(\LenToUnit{\dimexpr\thumbindexwidth-2\thumbindexwidth},
                         \LenToUnit{\dimexpr-\thumbindexwidth}){% move it to the top right
                        \color{#3}\rule{2\thumbindexwidth}{\LenToUnit{\dimexpr\paperheight+2\thumbindexwidth}}%
                    }%
                    %\color{#3}\rule{\thumbindexwidth}{\LenToUnit\paperheight}%
                }%
            }%
        }
    }
    {
        %\clearpage (not needed if we patch 'theindex' environment)            
        \AddToShipoutPicture{% from package eso-pic: put something to the background
            \ifthenelse{\isodd{\thepage}}{
                % odd page: right bar
                \AtPageLowerLeft{% start the bar at the bottom right of the page
                    \put(\LenToUnit{\dimexpr\paperwidth-\thumbindexwidth},0){% move it to the top right
                        \color{#3}\rule{\thumbindexwidth}{\LenToUnit\paperheight}%
                    }%
                }%
            }%
            {%
                % even page: left bar
                \AtPageLowerLeft{% start the bar at the left bottom of the page
                    \color{#3}\rule{\thumbindexwidth}{\LenToUnit\paperheight}%
                }%
            }%
        }
    }
}

\newcommand{\clearthumbindex}{
    \clearpage
    \ClearShipoutPicture
}

\makeindex

\begin{document}

\input{fake_index.tex} % just a collection of \index{XXX}\lipsum[1-10]

% \addthumbindex[bleed]{.5cm}{thumbindexgray} % (not needed if patching 'theindex')
\printindex
% \clearthumbindex{}  % (not needed if patching 'theindex')

\end{document}

EDIT: Ich habe eine Lösung gefunden, indem ich die durch die Verwendung des Pakets theindexgenerierte Umgebung gepatcht habe . Zur künftigen Bezugnahme: Der Code funktioniert sowohl in als auch in und ich gehe davon aus, dass etwas Ähnliches mit Glossaren oder Akronymlisten funktionieren wird. Ich habe meine Änderungen am obigen Code hinzugefügt und unten ein Bild des Endergebnisses.makeindexetoolboxpdflatexxelatex

Endergebnis

verwandte Informationen