So zeichnen Sie eine vertikale Linie mit genau der Höhe einer Parbox daneben

Dec 04 2020

Ich versuche, kleine Abschnitte für einen Lebenslauf zu erstellen, in denen der Abschnittsname und eine vertikale Linie neben dem Inhalt stehen sollten. Der Abschnittsname sollte zentriert sein und die vertikale Linie sollte genau der Höhe des Inhalts entsprechen. Dies ist die gewünschte Ausgabe:

Mit meinem Code weiß ich nicht, wie ich die vertikale Linienhöhe einstellen soll, um genau die Höhe der zu erhalten \parbox. Aus diesem Grund habe ich dies zur Demonstration auf 1 cm eingestellt. Weiß jemand, wie ich meine gewünschte Ausgabe mit kleinen Änderungen an meinem Code erhalten kann oder wie ich dies noch besser erreichen kann?

\documentclass[12pt]{standalone}

\usepackage{tikz}

\newcommand{\lorem}{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus.}

\newcommand{\customsection}[2]{
    \begin{minipage}{0.05\textwidth}
        \rotatebox[origin=c]{90}{#1}
        \hspace{0.01cm}
        \begin{tikzpicture}
            \fill [bottom color=red, top color=blue] (0cm, 0cm) rectangle (-0.05cm, 1cm);
        \end{tikzpicture}
    \end{minipage}
    \parbox[c]{0.85\textwidth}{
        #2
    }
}


\begin{document}
    \customsection{TEST}{\lorem \\ \lorem \\ \lorem}
\end{document}

Ich habe auch versucht, auf die Parbox-Höhe zuzugreifen, was bei mir nicht funktioniert hat: Zugriffshöhe einer \ parbox

Danke im Voraus.

Meine Ausgabe:

Antworten

4 RuixiZhang Dec 04 2020 at 20:57

Wie wäre es mit dem folgenden Code? Die Dokumentation wird im Code als Kommentar bereitgestellt.

\documentclass[12pt]{standalone}

\usepackage{tikz}

\newcommand{\lorem}{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus.}

% Define owmal's box to store the \parbox
\newsavebox\owmalsbox

% Notice where `%' are added to suppress end-of-line spaces!
\newcommand{\customsection}[2]{%
% First we save \parbox into \owmalsbox.
% We also use \strut both at the beginning and at the end,
% and this will ensure that the first line and the last line
% have the same height (in most cases).
    \sbox\owmalsbox{%
        \parbox[c]{0.85\textwidth}{%
            \strut#2\strut
        }%
    }%
% The total height of the \parbox is now available as
% \the\ht\owmalsbox+\the\dp\owmalsbox, so we can put our
% side-way text at (\the\ht\owmalsbox+\the\dp\owmalsbox)/2,
% and draw our rectangle accordingly. The minipage has the
% optional argument `c' to go with `\parbox[c]...' above.
% Notice again the use of \strut in the side-way text.
    \begin{minipage}[c]{0.05\textwidth}
        \begin{tikzpicture}
            \node [rotate=90, above] at
                (-0.05cm, {(\the\ht\owmalsbox+\the\dp\owmalsbox)/2})
                    {\strut#1};
            \fill [bottom color=red, top color=blue]
                (0cm, 0cm)
                    rectangle
                (-0.05cm, \the\ht\owmalsbox+\the\dp\owmalsbox);
        \end{tikzpicture}%
    \end{minipage}%
% The following additional space depends on how you setup
% the minipage (it is 0.05\textwidth wide for now).
% Adjust these if necessary.
    \hspace{0.5cm}%
% Finally we typeset \owmalsbox by releasing its content
% (and also destroy its content).
    \unhbox\owmalsbox
}

\begin{document}
    \customsection{TEST}{\lorem \\ \lorem \\ \lorem}
\end{document}