2

I am trying to create small sections for a cv where the section name and a vertical line should be next to the content. The section name should be centered and the vertical line should be exactly the height of the content. This is the desired output:

enter image description here

Now with my code, I don't know how to set the vertical line height to get exactly the height of the \parbox. This is why for demonstration, I've set this to 1cm. Does anyone know how to get my desired output with small modifications to my code or an even better way to achieve this?

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

I have also tried accessing the parbox height, which did not work for me: Access height of a \parbox

Thanks in advance.

My output: enter image description here

owmal
  • 325

1 Answers1

4

How about the following code? Documentation is provided in the code as comments.

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

customsection

Ruixi Zhang
  • 9,553
  • 1
    Excellent answer! Just what I was looking for and easy to understand with comprehensive commenting in the code. – owmal Dec 04 '20 at 16:32