Wie fügt man eine vertikale Linie zwischen Beamer-Spalten ein, die mit dem Befehl \column erstellt wurden?

Wie fügt man eine vertikale Linie zwischen Beamer-Spalten ein, die mit dem Befehl \column erstellt wurden?

Hinweis: Diese Frage unterscheidet sich vonhttps://tex.stackexchange.com/a/95188/18588weil diese Frage mit der columnUmgebung zusammenhängt, diese hier sich aber auf den \columnBefehl bezieht.

Mein Code:

\documentclass{beamer}
\begin{document}

\begin{frame}
\frametitle{Lorem Ipsum}
\begin{columns}[t]
  \column{.5\textwidth}
  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
  eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
  ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
  aliquip ex ea commodo consequat.

  \column{.5\textwidth}
  Duis aute irure dolor in reprehenderit in voluptate velit esse
  cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
  cupidatat non proident, sunt in culpa qui officia deserunt mollit
  anim id est laborum.
\end{columns}
\end{frame}

\end{document}

Dadurch wird eine Folie mit zwei Spalten erstellt. Ich möchte nun eine Trennlinie zwischen den beiden Spalten einfügen. Ich habe diese Antwort beihttps://tex.stackexchange.com/a/95188/18588bereits und das funktioniert gut mit \begin{column}und \end{column}. Wie kann ich es \columnnur mit dem Befehl zum Laufen bringen?

Antwort1

Hier ist ein Workaround, den ich gefunden habe:

\documentclass{beamer}
\begin{document}

\begin{frame}
\frametitle{Lorem Ipsum}
\begin{columns}[T]
  \column{.49\textwidth}
  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
  eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
  ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
  aliquip ex ea commodo consequat.

  \column{.01\textwidth}
  \rule{.1mm}{.7\textheight}

  \column{.49\textwidth}
  Duis aute irure dolor in reprehenderit in voluptate velit esse
  cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
  cupidatat non proident, sunt in culpa qui officia deserunt mollit
  anim id est laborum.
\end{columns}
\end{frame}

\end{document}

Hier ist die Ausgabe:

Screenshot der Ausgabe

Hier sind die Änderungen, die am ursprünglichen Code in der Frage vorgenommen wurden:

  • Die Option tfür die columnsUmgebung wurde geändert in T. Hier ist eine Beschreibung dieser Option aus demBeamer-Benutzerhandbuch(Abschnitt 12.7: Aufteilen eines Rahmens in mehrere Spalten):

    Tist ähnlich wie die tOption, richtet aber Tdie Oberkanten der ersten Zeilen aus, während tdie sogenannten Grundlinien der ersten Zeilen ausgerichtet werden. Wenn in Verbindung mit der tOption seltsame Dinge passieren (wenn beispielsweise eine Grafik mit der tOption plötzlich „nach unten fällt“, anstatt „nach oben zu gehen“), versuchen Sie stattdessen diese Option.

  • Die Breite der beiden Textspalten wurde von auf reduziert, .5\textwidthum .49\textwidthPlatz für eine neue Spalte mit der Breite zu schaffen .01\textwidth. Diese neue Spalte wird zwischen die beiden vorhandenen Textspalten eingefügt. Diese neue Spalte würde die vertikale Linie enthalten.

  • In der neuen Spalte mit dem Befehl wurde eine vertikale Linie hinzugefügt \rule. Hier ist eine Beschreibung des \ruleBefehls vonDie nicht ganz so kurze Einführung in LATEX 2ε(Abschnitt 6.7: Regeln):

    Vor einigen Seiten ist Ihnen vielleicht der Befehl aufgefallen.

    \rule[lift]{width}{height}
    

    Bei normaler Verwendung erzeugt es eine einfache Blackbox.

    \rule{3mm}{.1pt}%
    \rule[-1mm]{5mm}{1cm}%
    \rule{3mm}{.1pt}%
    \rule[1mm]{1cm}{5mm}%
    \rule{3mm}{.1pt}
    

    Screenshot der Abbildung in Abschnitt 6.7 von lshort.pdf

    Dies ist nützlich, um vertikale und horizontale Linien zu zeichnen. Die Linie auf der Titelseite wurde beispielsweise mit einem \ruleBefehl erstellt.

Antwort2

Bearbeiten: Hier ist eine Neudefinition der Umgebungsspalten und ihres Spaltenbefehls, um mithilfe von vertikale Linien zwischen den Spalten einzufügen tikz overlay.

Ich habe es so gemacht, indem ich \tikzmarkam Anfang jeder Spalte ein hinzugefügt und dann den Mittelpunkt zwischen diesem \tikzmark + der Breite des Befehls und dem der nächsten Spalte berechnet habe . Einen ähnlichen Trick habe ich auch zum Berechnen der Höhe der (neu definierten) Umgebung \tikzmarkverwendet .columns

Meine columnsUmgebung akzeptiert ein optionales Argument mit drei durch Kommas getrennten verschiedenen Optionen:

  1. Als erstes gibt es die Ausrichtungsoption der \oldcolumsUmgebung (wie tfür oben, bunten und cfür zentrierte vertikal ausgerichtete Spalten)
  2. Die zweite Option ist die Breite der vertikalen Linie, die (nach der zweiten Kompilierung – da sie als Überlagerung hinzugefügt wird) zwischen den Spalten hinzugefügt wird.
  3. Die dritte Option ist die Farbe der obigen vertikalen Linien.

Sie können diesem optionalen Argument 1, 2 oder 3 Optionen hinzufügen, die Reihenfolge muss jedoch wie oben angegeben sein.

Der endgültige Code:

\documentclass[8pt]{beamer}
\usepackage{tikz}
\usetikzlibrary{calc}

\newcounter{mycolcounter}
\newcounter{mylinecounter}
\newcounter{tempcounter}
\newcounter{tempcounterB}
\newlength\availafter
\newlength\initialtextwidth

\newcommand\tikzmark[1]{\begin{tikzpicture}[overlay,remember picture]\coordinate (#1);\end{tikzpicture}}

\newcommand\DrawLines[3]{\draw[line width=\ArgB,color=\ArgC]let\p1=(#1),\p2=(#2),\p3=(#3)in($(\x1,0)+({(\x2+\x3+\csname ColWidth\Alph{tempcounter}\endcsname)/2},\y1)$)--($(\x1,0)+({(\x2+\x3+\csname ColWidth\Alph{tempcounter}\endcsname)/2},{\textheight-\availafter})$);}


\newcommand\lcolumn[1]{\stepcounter{mycolcounter}\setlength\textwidth{\initialtextwidth}\xdef\temp{\the\dimexpr#1}\expandafter\expandafter\expandafter\global\expandafter\let\csname ColWidth\Alph{mycolcounter}\endcsname\temp\oldcolumn{#1}\tikzmark{ColStart\Alph{mycolcounter}}}

\let\oldcolumns\columns%
\let\endoldcolumns\endcolumns%
\renewenvironment{columns}[1][c]{%
\xdef\ArgA{c}%
\xdef\ArgB{1pt}%
\xdef\ArgC{black}
\xdef\Arg{#1}%
\setlength{\initialtextwidth}{\textwidth}%
\tikzmark{ColStart}%
\setcounter{mycolcounter}{0}%
\setcounter{mylinecounter}{0}%
\foreach \k[count=\m from 0] in \Arg {\ifnum\m=0\xdef\ArgA{\k}\else\ifnum\m=1\xdef\ArgB{\k}\else\xdef\ArgC{\k}\fi\fi}
\oldcolumns[\ArgA]\let\oldcolumn\column\let\column\lcolumn%
}{%
\endoldcolumns%
\setcounter{mylinecounter}{\numexpr\the\value{mycolcounter}-1\relax}%
\setlength{\availafter}{\dimexpr\textheight-\pagetotal\relax}%
\setcounter{tempcounter}{0}%
\setcounter{tempcounterB}{1}%
\foreach \col[count=\i from 0]in{1,...,\arabic{mylinecounter}}{%
\stepcounter{tempcounter}%
\stepcounter{tempcounterB}%
\begin{tikzpicture}[overlay,remember picture]%
\DrawLines{ColStart}{ColStart\Alph{tempcounter}}{ColStart\Alph{tempcounterB}}%
\end{tikzpicture}%
}%
\let\column\oldcolumn%\
}


\begin{document}

\begin{frame}
  \frametitle{Lorem Ipsum}

  \begin{columns}
           \column{0.25\textwidth}%
          \noindent1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \\
          \begin{tikzpicture}[inner sep=0,outer sep=0]
        \draw[<->] (0,0)--(\textwidth,0);
        \end{tikzpicture}
          \column{0.25\textwidth}%
          \noindent1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \\
      \begin{tikzpicture}[inner sep=0,outer sep=0]
        \draw[<->] (0,0)--(\textwidth,0);
        \end{tikzpicture}
      \column{0.25\textwidth}%
      \noindent1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \\
      \begin{tikzpicture}[inner sep=0,outer sep=0]
        \draw[<->] (0,0)--(\textwidth,0);
        \end{tikzpicture}
\end{columns}

    \begin{columns}[c,0.1pt,blue]
      \column{0.3\textwidth}%
      1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \\
      \begin{tikzpicture}[inner sep=0,outer sep=0]
        \draw[<->] (0,0)--(\textwidth,0);
        \end{tikzpicture}
      \column{0.4\textwidth}%
      1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\\
      \begin{tikzpicture}[inner sep=0,outer sep=0]
        \draw[<->] (0,0)--(\textwidth,0);
        \end{tikzpicture}
      \column{0.2\textwidth}%
      \large 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \\
      \begin{tikzpicture}[inner sep=0,outer sep=0]
        \draw[<->] (0,0)--(\textwidth,0);
      \end{tikzpicture}
    \end{columns}

    \begin{columns}[b,0.3pt]
          \column{0.33\textwidth}%
          1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \\
      \begin{tikzpicture}[inner sep=0,outer sep=0]
        \draw[<->] (0,0)--(\textwidth,0);
        \end{tikzpicture}
      \column{0.43\textwidth}%
      \scriptsize1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \\
      \begin{tikzpicture}[inner sep=0,outer sep=0]
        \draw[<->] (0,0)--(\textwidth,0);
        \end{tikzpicture}
      \column{0.23\textwidth}%
      1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \\
      \begin{tikzpicture}[inner sep=0,outer sep=0]
        \draw[<->] (0,0)--(\textwidth,0);
      \end{tikzpicture}
    \end{columns}

        \begin{columns}[t,2pt,green]
          \column{0.23\textwidth}%
          1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \\
      \begin{tikzpicture}[inner sep=0,outer sep=0]
        \draw[<->] (0,0)--(\textwidth,0);
        \end{tikzpicture}
      \column{0.23\textwidth}%
      \footnotesize 1 1 1 1 1 1  1 1 1 1 1 1 1 1 1 1 1 1 \\
      \begin{tikzpicture}[inner sep=0,outer sep=0]
        \draw[<->] (0,0)--(\textwidth,0);
        \end{tikzpicture}
      \column{0.23\textwidth}%
      1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\\
      \begin{tikzpicture}[inner sep=0,outer sep=0]
        \draw[<->] (0,0)--(\textwidth,0);
      \end{tikzpicture}
        \end{columns}

\begin{columns}[c,2pt,red]
          \column{0.23\textwidth}%
          \tiny1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \\
      \begin{tikzpicture}[inner sep=0,outer sep=0]
        \draw[<->] (0,0)--(\textwidth,0);
        \end{tikzpicture}
      \column{0.53\textwidth}
      1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \\
      \begin{tikzpicture}[inner sep=0,outer sep=0]
        \draw[<->] (0,0)--(\textwidth,0);
        \end{tikzpicture}
    \end{columns}

   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
\end{frame}

\end{document}

Ausgabe:

Bildbeschreibung hier eingeben

verwandte Informationen