Wie kann ich nach der ersten Seite eine teilbare Box mit geänderter Breite definieren?

Wie kann ich nach der ersten Seite eine teilbare Box mit geänderter Breite definieren?

Ich möchte für einen – möglicherweise mehrseitigen – Lebenslauf ein Side-by-Side-Layout mit zwei Spalten definieren.

Die linke Spalte soll auf der ersten Seite einige statische Informationen enthalten (z. B. persönliche Daten und Kontaktdaten) und dann für die folgenden Seiten in der Größe angepasst werden (z. B. nur den Namen oder die Seite enthalten).

Die rechte Spalte muss umteilbar sein, um möglicherweise mehrere Seiten mit Inhalten aufzunehmen (z. B. für Ausbildung, Berufserfahrung usw.).


Ich habe versucht, dies tcolorboxmit breakableParametern für die rechte Spalte und overlays für die linke Spalte zu implementieren. Ich verwende overlay first/ overlay middle and lastHooks, um die Größe der linken Spalte zu ändern.

Das Problem besteht darin, dass nur die linke Spalte richtig skaliert wird. Darüber hinaus ist die Trennbox nicht richtig ausgerichtet und der Textinhalt läuft über.

Gibt es eine Möglichkeit, die Kästchen auszurichten und die Textbreite für alle Seiten nach der ersten Seite mit anzupassen tcolorbox? Wenn dies mit nicht möglich ist tcolorbox, wie sähe dann eine bessere Lösung aus?


MWE

\documentclass[a4paper, 12pt]{article}

%
%! Dependencies
%
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{geometry}
\usepackage{titleps}
\usepackage{tikz}
\usepackage{tcolorbox}

\usepackage{blindtext}

%
%! Settings
%
\usetikzlibrary{positioning}
\tcbuselibrary{skins, breakable}

%! blank page style
\newpagestyle{blank}{%
    \setheadrule{0pt}%
    \setfootrule{0pt}%
    \sethead{}{}{}%
    \setfoot{}{}{}%
}

%! blank page geometry
\newgeometry{%
    %! ignore header, footer, margin par
    noheadfoot%
    , nomarginpar%
    , ignoreall%
    , width=\paperwidth%
    , height=\paperheight%
}
\savegeometry{blank}

\pagestyle{blank}
\loadgeometry{blank}

%
%! Document
%
\begin{document}

\begin{tcolorbox}[%
    show bounding box%
    , colback=white%
    , colframe=white
    , borderline={0pt}{0pt}{white}%
    , sharp corners%
    , breakable%
    , height fixed for=all%
    , text width=0.65\paperwidth%
    , overlay first={%
        \tikz{%
            \draw[use as bounding box, fill=black] rectangle (0.3\paperwidth, \paperheight);%
            \node[text=white, below right=0pt and 0pt of current bounding box.north west] {%
                \begin{tabular}{l}
                    0.3\textbackslash paperwidth\\
                    side\\  
                    bar
                \end{tabular}
            };%
        }%
    }%
    , overlay middle and last={%
        \tikz{%
            \draw[use as bounding box, fill=black] rectangle (0.15\paperwidth, \paperheight);%
            \node[text=white, below right=0pt and 0pt of current bounding box.north west] {%
                \begin{tabular}{l}
                    0.15\\
                    \textbackslash paperwidth\\
                    side\\  
                    bar
                \end{tabular}
            };%
        }%      
    }%
]%
\blindtext[10]
\end{tcolorbox}

\end{document}

Antwort1

Der Hauptunterschied flowframbesteht darin, dass der Rahmen mit Text gefüllt wird, während tcolorboxinnere Trennränder hinzugefügt werden. Sie müssen nur daran denken, die Ränder selbst hinzuzufügen, entweder indem Sie die Größe des Rahmens verringern oder Dinge wie \leftskipund hinzufügen \rightskip.

Beachten Sie den Absatz, bei dem die Seite umgebrochen wurde.

\documentclass[a4paper, 12pt]{article}

%
%! Dependencies
%
%\usepackage[utf8]{inputenc}
%\usepackage[T1]{fontenc}

\usepackage[margin=0pt]{geometry}% use entire page
\usepackage{flowfram}
\usepackage{tikz}
\usepackage{lipsum}

\AtBeginDocument{\pagestyle{empty}}

%
%! Settings
%
\newstaticframe[1]{0.3\paperwidth}{\paperheight}{0pt}{0pt}[first]
\newstaticframe[>1]{0.15\paperwidth}{\paperheight}{0pt}{0pt}[second]

\setstaticframe*{first,second}{backcolor=black,textcolor=white}

\begin{staticcontents*}{first}
\begin{center}
default is vertically centered
\end{center}
\end{staticcontents*}

\begin{staticcontents*}{second}
But you can use \verb$\vspace*{\fill}}$ to force text to the top or bottom.
\vspace*{\fill}
\end{staticcontents*}

\newflowframe[1]{0.65\paperwidth}{\paperheight}{.35\paperwidth}{0pt}
\newflowframe[>1]{0.8\paperwidth}{\paperheight}{.2\paperwidth}{0pt}
\begin{document}
\lipsum[1-12]
\end{document}

verwandte Informationen