Как определить разрываемый блок с измененной шириной после первой страницы?

Как определить разрываемый блок с измененной шириной после первой страницы?

Я хочу определить макет с двумя столбцами для потенциально многостраничного резюме.

Предполагается, что левый столбец будет содержать некоторую статическую информацию на первой странице (например, персональные и контактные данные), а затем его размер должен быть изменен для следующих страниц (например, он должен содержать только имя или страницу).

Правый столбец должен быть разделяемым, чтобы в нем можно было разместить несколько страниц контента (например, об образовании, опыте работы и т. д.).


Я пытался реализовать это, используя параметр tcolorboxwith breakableдля реализации правого столбца и overlays для левого столбца. Я использую overlay first/ overlay middle and lasthooks для изменения размера левого столбца.

Проблема в том, что только левая колонка правильно изменяет размер. Кроме того, разрываемый блок не выровнен правильно, и текстовое содержимое выходит за пределы.

Есть ли способ выровнять поля и изменить ширину текста для всех страниц после первой страницы с помощью tcolorbox? Если это невозможно с помощью tcolorbox, как будет выглядеть лучшее решение?


МВЭ

\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}

решение1

Главное отличие в flowframтом, что он заполняет рамку текстом, тогда как tcolorboxдобавляет внутренние разделительные поля. Вам просто нужно не забыть добавить поля самостоятельно, либо уменьшив размер рамки, либо добавив такие вещи, как \leftskipи \rightskip.

Обратите внимание на абзац, где страница была разорвана.

\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}

Связанный контент