Cara menggambar garis vertikal dengan tinggi parbox di sebelahnya

Dec 04 2020

Saya mencoba membuat bagian kecil untuk cv di mana nama bagian dan garis vertikal harus berada di sebelah konten. Nama bagian harus berada di tengah dan garis vertikal harus tepat setinggi konten. Ini adalah hasil yang diinginkan:

Sekarang dengan kode saya, saya tidak tahu bagaimana mengatur tinggi garis vertikal untuk mendapatkan ketinggian yang tepat \parbox. Inilah mengapa untuk demonstrasi, saya setel ini ke 1cm. Adakah yang tahu bagaimana mendapatkan keluaran yang saya inginkan dengan sedikit modifikasi pada kode saya atau cara yang lebih baik untuk mencapai ini?

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

Saya juga mencoba mengakses tinggi parbox, yang tidak berhasil untuk saya: Tinggi akses a \ parbox

Terima kasih sebelumnya.

Keluaran saya:

Jawaban

4 RuixiZhang Dec 04 2020 at 20:57

Bagaimana dengan kode berikut? Dokumentasi disediakan dalam kode sebagai komentar.

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