Hallo,

ich versuche auf einer Seite drei Spalten zu erzeugen, die ich unabhängig voneinader befüllen kann und die optisch durch eine Trennlinie abgegrenzt sind. Ich habe versucht, das ganze mit minipages zu realisieren und die Trennlinien mit tikz zu zeichnen, bin aber an der Ausrichtung an der oberen Kante gescheitert.

Leider habe ich bei meiner Recherche nichts gefunden, das in die Richtung geht in die ich will. Falls es elegantere Lösungen gibt, bin ich für Alternativen offen :).

Hier mein Minimalbeispiel:

Öffne in Overleaf
\documentclass[ngerman, oneside, ]{scrartcl}
\KOMAoptions{
    paper=a4,
    fontsize=12pt,
    headings=normal,
    headlines=0,
    footlines=1,
    parskip=half,
}

\raggedbottom

\listfiles

\usepackage{polyglossia}
%\setdefaultlanguage[spelling=new, babelshorthands=true]{german}
%Muss hinter den tikzlibrarys stehen!!!

\usepackage{fontspec}
\usepackage{empheq}
\usepackage{unicode-math}
\usepackage[autostyle,german=quotes]{csquotes}

\setmainfont{Libertinus Serif}
\setromanfont{Libertinus Serif}
\setsansfont[Scale=MatchUppercase]{TeX Gyre Heros}
\setmonofont[Scale=MatchUppercase]{Consolas}
\setmathfont{Libertinus Math}

\usepackage{tikz}
\usepackage{pgf}
\setdefaultlanguage[spelling=new, babelshorthands=true]{german}

\usepackage{etoolbox} 
\newbool{solution}

\newcommand{\textlsg}[2]{%
    %
    \ifbool{solution}%
    {\par\setlength{\fboxsep}{1.2ex}\fbox{\begin{minipage}[c][{#1-2.4ex}][t]{\columnwidth-2.4ex}\sffamily\bfseries\fontsize{12.5pt}{15pt}\selectfont\color{red}\setlength{\parskip}{\currentparskip}\vspace{-\parskip}%
                #2
            \end{minipage}}}
            {\par\tikz\draw[step=.5cm,line width=.4pt,line cap=round, dash pattern=on 0mm off 1mm] (0,0) grid (\columnwidth,#1);}%
        }

\begin{document}
    \begin{minipage}{17cm}
        \begin{minipage}[10cm]{5cm}
            \vspace{-\ht\strutbox}
            \subsection*{Zeigerdiagramm der Stromstärken}
            \begin{align*}
            I_\mathrm{R} = \frac{U}{R} = \\
            I_\mathrm{L} = \frac{U}{X_\mathrm{L}} =
            \end{align*}

            \vfill
            123
        \end{minipage}\hfill
        \begin{minipage}[10cm]{1cm}\centering
            \tikz\draw(0,0) --++ (0,-10cm);
        \end{minipage}%
        \hfill
        \begin{minipage}[10cm]{5cm}
            \vspace{-\ht\strutbox}
            \subsection*{Zeigerdiagramm der Leistungen}
        \end{minipage}\hfill
        \begin{minipage}[10cm]{1cm}\centering
            \tikz\draw(0,0) --++ (0,-8cm);
        \end{minipage}%
        \hfill
        \begin{minipage}[10cm]{5cm}
            \vspace{-\ht\strutbox}
            \subsection*{Zeigerdiagramm der Widerstände}
            \textlsg{55mm}{...}
        \end{minipage}
    \end{minipage}
\end{document}

gefragt 29 Nov, 17:26

kasiii's gravatar image

kasiii
563
Akzeptiert: 60%

Ich würde verm. \begin{minipage}[10cm][t]{…}\vskip 0pt probieren (das \vskip nur um die Grundlinie nach oben zu legen) oder besser gleich zu adjustbox greifen. Die Trennlinien kann man dann mit \hskip\columnsep\rule[-10cm]{.4pt}{10cm}\hskip\columnsep o. ä. zwischen die minipages basteln. TikZ halte ich dafür für etwas übertrieben. Einfacher geht es ggf. mit multicol. Das bietet direkt mehrspaltigen Satz mit optionaler Trennlinie und natürlich auch wahlweise mit manuellem Spaltenumbruch.

(30 Nov, 02:17) saputello

Dein Code ist übrigens auf Overleaf (siehe automatisch eingefügter Link über Deinem Code) nicht lauffähig, da Fonts verlangt werden, die dort nicht verfügbar sind. Ich bin sicher, dass kannst Du leicht ändern. Bitte achte bei einem Minimalbeispiel immer darauf, dass es wirklich möglichst minimal ist und beispielsweise Font-Umschaltungen, die für das Problem unerheblich sind, unterbleiben. Solche überflüssigen Probleme, können für eine schnelle Bearbeitung sehr hinderlich sein.

(30 Nov, 05:17) saputello

Mir ist leider nicht so ganz klar, was du bezweckst. Wenn es dir darum geht, die minipage-Umgebungen oben bündig anzuordnen, wobei ungeachtet der sehr unterschiedlichen Höhe der obersten Zeile auch der Inhalt der Umgebungen mit ihrer Oberkante bündig ausgerichtet werden sollen, so ist das über das erste optionale Argument der minipage-Umgebung möglich:

Öffne in Overleaf
\documentclass[
  fontsize=12pt,% Schriftgröße besser als Klassenoption!
  headings=normal,
  headlines=0,% eher nicht zu empfehlen
  footlines=1,
  parskip=half
]{scrartcl}

\listfiles
\usepackage[ngerman]{babel}% funktioniert besser mit csquotes

\usepackage{fontspec}
\usepackage{empheq}
\usepackage{unicode-math}
\usepackage[autostyle,german=quotes]{csquotes}

%\setmainfont{Libertinus Serif}% Auf Overleaf nicht verfügbar!
%\setromanfont{Libertinus Serif}% Auf Overleaf nicht verfügbar!
\setsansfont[Scale=MatchUppercase]{TeX Gyre Heros}
%\setmonofont[Scale=MatchUppercase]{Consolas}% Auf Overleaf nicht verfügbar!
%\setmathfont{Libertinus Math}% Auf Overleaf nicht verfügbar!

\usepackage{tikz}
\usepackage{etoolbox} 
\newbool{solution}

\newcommand{\textlsg}[2]{%
    %
    \ifbool{solution}%
    {\par\setlength{\fboxsep}{1.2ex}\fbox{\begin{minipage}[c][{#1-2.4ex}][t]{\columnwidth-2.4ex}\sffamily\bfseries\fontsize{12.5pt}{15pt}\selectfont\color{red}\setlength{\parskip}{\currentparskip}\vspace{-\parskip}%
                #2
            \end{minipage}}}
            {\par\tikz\draw[step=.5cm,line width=.4pt,line cap=round, dash pattern=on 0mm off 1mm] (0,0) grid (\columnwidth,#1);}%
        }

\begin{document}
    \begin{minipage}{17cm}
        \begin{minipage}[t][10cm][t]{5cm}
            \vskip 0pt% Grundlinie festlegen
            \subsection*{Zeigerdiagramm der Stromstärken}
            \begin{align*}
            I_\mathrm{R} = \frac{U}{R} = \\
            I_\mathrm{L} = \frac{U}{X_\mathrm{L}} =
            \end{align*}

            \vfill
            123
        \end{minipage}\hfill
        \begin{minipage}[t][10cm][t]{1cm}\centering
            \vskip 0pt% Grundlinie festlegen
            \tikz\draw(0,0) --++ (0,10cm);
        \end{minipage}%
        \hfill
        \begin{minipage}[t][10cm][t]{5cm}
            \vskip 0pt% Grundlinie festlegen
            \subsection*{Zeigerdiagramm der Leistungen}
        \end{minipage}\hfill
        \begin{minipage}[t][10cm][t]{1cm}\centering
            \vskip 0pt% Grundlinie festlegen
            \tikz\draw(0,0) --++ (0,10cm);
        \end{minipage}%
        \hfill
        \begin{minipage}[t][10cm][t]{5cm}
            \vskip 0pt% Grundlinie festlegen
            \subsection*{Zeigerdiagramm der Widerstände}
            \textlsg{55mm}{...}
        \end{minipage}
    \end{minipage}
\end{document}

oben ausgerichtet

Über das dritte optionale Argument kann man auch den Inhalt der minipage zentrieren, ohne die Ausrichtung der minipage selbst zu ändern. Ändert man in obigem Beispiel die drei \begin{minipage}[t][10cm][t]{5cm} in \begin{minipage}[t][10cm][c]{5cm} so erhält man:

zentriert ausgerichtet

Wie von saputello in seinem Kommentar bereits angedeutet, kann man für einen dreispaltigen Text aber auch einfach Paket multicol verwenden:

Öffne in Overleaf
\documentclass[
  fontsize=12pt,% Schriftgröße besser als Klassenoption!
  headings=normal,
  headlines=0,% eher nicht zu empfehlen
  footlines=1,
  parskip=half
]{scrartcl}

\listfiles
\usepackage[ngerman]{babel}% funktioniert besser mit csquotes

\usepackage{fontspec}
\usepackage{empheq}
\usepackage{unicode-math}
\usepackage[autostyle,german=quotes]{csquotes}

%\setmainfont{Libertinus Serif}% Auf Overleaf nicht verfügbar!
%\setromanfont{Libertinus Serif}% Auf Overleaf nicht verfügbar!
\setsansfont[Scale=MatchUppercase]{TeX Gyre Heros}
%\setmonofont[Scale=MatchUppercase]{Consolas}% Auf Overleaf nicht verfügbar!
%\setmathfont{Libertinus Math}% Auf Overleaf nicht verfügbar!

\usepackage{tikz}
\usepackage{etoolbox} 
\newbool{solution}

\usepackage{multicol}
\setlength{\columnsep}{1cm}% Abstand zwischen den Spalten
\setlength{\columnseprule}{.4pt}% Linie zwischen den Spalten (mittig zum Abstand)

\newcommand{\textlsg}[2]{%
    %
    \ifbool{solution}%
    {\par\setlength{\fboxsep}{1.2ex}\fbox{\begin{minipage}[c][{#1-2.4ex}][t]{\columnwidth-2.4ex}\sffamily\bfseries\fontsize{12.5pt}{15pt}\selectfont\color{red}\setlength{\parskip}{\currentparskip}\vspace{-\parskip}%
                #2
            \end{minipage}}}
            {\par\tikz\draw[step=.5cm,line width=.4pt,line cap=round, dash pattern=on 0mm off 1mm] (0,0) grid (\columnwidth,#1);}%
        }

\begin{document}
  \begin{multicols}{3}
    \subsection*{Zeigerdiagramm der Stromstärken}
    \begin{align*}
      I_\mathrm{R} = \frac{U}{R} = \\
      I_\mathrm{L} = \frac{U}{X_\mathrm{L}} =
    \end{align*}
    \vfill
    123
    \columnbreak
    \subsection*{Zeigerdiagramm der Leistungen}
    \columnbreak
    \subsection*{Zeigerdiagramm der Widerstände}
    \textlsg{55mm}{...}
  \end{multicols}
\end{document}

Dabei wird die Trennlinie durch die Breite \columseprule bestimmt. Der Abstand zwischen den Spalten ist \columnsep. Den manuellen Umbruch der Spalten erreicht man mit \columnbreak.

Verwendung von multicol

Es sei an dieser Stelle noch erwähnt, dass man die Schriftgröße besser bereits beim Laden der Klasse festlegt. Außerdem lädt tikz natürlich bereits pgf so dass man das nicht selbst auch noch erledigen muss. Ich habe im Beispiel außerdem die Fonts auskommentiert, die Overleaf (und mein eigener Rechner) nicht bereitstellt. Außerdem habe ich polyglossia durch babel ersetzt, weil csquotes besser damit kann und somit eine Warnung von csquotes entfällt.

Permanenter link

beantwortet 30 Nov, 06:02

Ijon%20Tichy's gravatar image

Ijon Tichy
5.9k1919

bearbeitet 30 Nov, 06:03

Danke! Da habe ich eindeutig zu kompliziert gedacht. columnbreak ist genau was ich gesucht habe :)

(03 Dez, 15:15) kasiii
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×540
×15
×1

Frage gestellt: 29 Nov, 17:26

Frage wurde angeschaut: 178 Mal

Zuletzt aktualisiert: 03 Dez, 15:15