Ich möchte in folgendem Beispiel, dass die vertikale Linie auf der ersten (und ggf. zweiten) Seite über die ganze Seitenlänge ausgedehnt wird:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{longtable}
\usepackage{blindtext}
\begin{document}
  \begin{longtable}[l]{@{}p{0.8\textwidth}@{\qquad}|l@{}}
  \blindtext\vspace{\baselineskip} & Nummer 1\\
  \blindtext\vspace{\baselineskip} & Nummer 2\\
  \blindtext[2] & Nummer 3\\
  \end{longtable}
\end{document}

Ich kann dies manuell erreichen, indem ich bei \vspace eine manuelle Angabe mache, z.B.

Open in Online-Editor
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{longtable}
\usepackage{blindtext}
\begin{document}
  \begin{longtable}[l]{@{}p{0.8\textwidth}@{\qquad}|l@{}}
  \blindtext\vspace{\baselineskip} & Nummer 1\\
  \blindtext\vspace{19\baselineskip} & Nummer 2\\
  \blindtext[2] & Nummer 3\\
  \end{longtable}
\end{document}

Allerdings ist es einerseits eine Ausprobiererei und sobald sich der Text oben ändert passt es nicht mehr. Kann man dies automatisieren bzw. anders erreichen?

gefragt 31 Jan '16, 14:58

tom75's gravatar image

tom75
2.2k187884
Akzeptiert-Rate: 57%

Was passiert denn, wenn nach der Tabelle Text ist? Oder kommt vor und nach der Tabelle immer ein \clearpage?

(31 Jan '16, 15:40) Johannes

Nach der Tabelle kommt kein Text.

(31 Jan '16, 16:17) tom75

Und davor? Beginnt die Tabelle immer auf einer neuen Seite? Wenn dem so ist, kannst du mit dem Paket scrlayer-scrpage die Linie ziehen, ohne das longtable darin involviert ist.

(31 Jan '16, 16:45) Johannes

Nein, vor der Tabelle ist normalerweise ein Text, der ca 1/4 Seite lang ist. Trotzdem: Wie würde es ohne einen solchen Text mit scrlayer-scrpage gehen?

(31 Jan '16, 20:36) tom75

Wenn man nicht longtable für diese Pseudotabelle verwendet, kann man beispielsweise den Textbereich mit Hilfe der addmargin-Umgebung von KOMA-Script einschränken und das Nummer … sowie die Linie mit dem Paket marginnote. Soll die Linie tatsächlich bis zum Ende der Seite gehen, kann man sie einfach über das Ende der Seite hinaus ragen lassen:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{marginnote}
\usepackage{blindtext}
\newcommand*{\specialmarginnote}[1]{%
  \leavevmode
  \marginnote{%
    \makebox[0pt][r]{%
      \makebox[.2\textwidth][l]{%
        \raisebox{0pt}[0pt][0pt]{%
          \rule[\dimexpr\ht\strutbox-\paperheight]{.4pt}{\dimexpr\paperheight}%
        }\enskip
        #1%
      }%
    }%
  }%
}
\begin{document}
\blindtext
\begin{addmargin}[0pt]{.2\textwidth}
  \KOMAoptions{parskip=full-}\selectfont
  \parbox{\linewidth}{\specialmarginnote{Nummer 1}\blindtext}%

  \parbox{\linewidth}{\specialmarginnote{Nummer 2}\blindtext}%

  \parbox{\linewidth}{\specialmarginnote{Nummer 3}\blindtext[2]}%
\end{addmargin}
\end{document}

Die beiden Seiten sehen dann so aus:

über die ganze Seitenhöhe

Dass die Linie tatsächlich unter den unteren Rand der Seite hinaus ragt, ist dabei normalerweise kein Problem.

Soll die Linie allerdings nur bis zum unteren Rand, also bis zum Ende des Textbereichs ragen, muss man bei dieser Lösung einiges an Aufwand treiben. Zwar kann man mit \pagegoal theoretisch feststellen, wie weit die Seite bereits gefüllt ist. Allerdings stimmt dessen Wert nicht immer, wenn wie in diesem Beispiel eine größere Box erst durch den Seitenumbruch auf der nächsten Seite landet. Man muss dann tatsächlich noch eine Art Erkennung für den Umbruch einbauen. Das könnte dann beispielsweise so aussehen (wobei diese Lösung pdflatex voraussetzt und beispielsweise mit dem aktuellen lualatex nicht funktioniert):

Open in Online-Editor
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{blindtext}
\usepackage{marginnote}
%\usepackage{showframe}
\newcounter{pagetotal}
\makeatletter
\AtBeginDocument{%
  \@tempdima=\dimexpr\pdfpageheight-1in-\voffset-\topmargin-\headheight-\headsep-\topskip-\baselineskip\relax
  \@tempcnta=\@tempdima
  \immediate\write\@auxout{%
    \string\def\string\detectnewpagelimit{\the\@tempcnta}%
  }%
}
\newcommand*{\detectnewpagelimit}{49100000}
\newcommand*{\savepagetotal}{%
  \stepcounter{pagetotal}%
  \pdfsavepos
  \protected@write\@auxout{}{\string\expandafter
    \string\gdef\string\csname\space pagetotal\thepagetotal\string\endcsname
    {\noexpand\number\pdflastypos}}%
  \@ifundefined{pagetotal\thepagetotal}{%
    \typeout{War undefiniert}%
    \expandafter\let\csname pagetotal\thepagetotal\endcsname
    \detectnewpagelimit
  }{%
    \typeout{Wert: \@nameuse{pagetotal\thepagetotal}}%
  }%
  \ifnum\@nameuse{pagetotal\thepagetotal}<\detectnewpagelimit
    \def\additionaloffset{\pagetotal}%
  \else
    \typeout{Limit reached!}%
    \let\additionaloffset\z@
  \fi
}
\newcommand*{\specialmarginnote}[1]{%
  \leavevmode
  \marginnote{%
    \makebox[0pt][r]{%
      \makebox[.2\textwidth][l]{%
        \raisebox{0pt}[0pt][0pt]{%
          \savepagetotal
          \rule[\dimexpr\ht\strutbox-\textheight+\additionaloffset]{.4pt}{\dimexpr\textheight-\additionaloffset}%
        }\enskip
        #1%
      }%
    }%
  }%
}
\makeatother
\begin{document}
\blindtext
\begin{addmargin}[0pt]{.2\textwidth}
  \KOMAoptions{parskip=full-}\selectfont
  \parbox{\linewidth}{\specialmarginnote{Nummer 1}\blindtext}%

  \parbox{\linewidth}{\specialmarginnote{Nummer 2}\blindtext}%

  \parbox{\linewidth}{\specialmarginnote{Nummer 3}\blindtext[2]}%
\end{addmargin}
\end{document}

bis zum Textbereichsende

Sollen wie in dem Beispiel Boxen gesetzt werden, dann könnte man natürlich auch die Höhe der Box ausmessen und bei Bedarf erst einmal einen Seitenumbruch einfügen:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{marginnote}
\usepackage{blindtext}
\newcommand*{\specialmarginnote}[1]{%
  \leavevmode
  \marginnote{%
    \makebox[0pt][r]{%
      \makebox[.2\textwidth][l]{%
        \raisebox{0pt}[0pt][0pt]{%
          \rule[\dimexpr\ht\strutbox-\textheight+\pagetotal]{.4pt}{\dimexpr\textheight-\pagetotal}%
        }\enskip
        #1%
      }%
    }%
  }%
}
\newsavebox\specialtextbox
\newcommand\specialboxwithnote[2]{%
  \savebox\specialtextbox{\parbox[t]{.8\textwidth}{#1}}%
  \ifdim\dimexpr\pagegoal-\pagetotal\relax<\dimexpr\ht\specialtextbox+\dp\specialtextbox\relax
    \newpage
  \else
    \par
  \fi
  \leavevmode\specialmarginnote{#2}\usebox\specialtextbox\par
}
\begin{document}
\blindtext
\begin{addmargin}[0pt]{.2\textwidth}
  \KOMAoptions{parskip=full-}\selectfont
  \specialboxwithnote{\blindtext}{Nummer 1}
  \specialboxwithnote{\blindtext}{Nummer 2}
  \specialboxwithnote{\blindtext\blindtext}{Nummer 3}
\end{addmargin}
\end{document}

mit Boxen

Einen ganz anderen Ansatz böte übrigens die Verwendung von reledpar. Dabei kann man recht komfortabel zwei miteinander verknüpfte Spalten mit Trennlinie nebeneinander setzen, wobei man die Spalten auch unterschiedlich breit machen kann.

Ebenfalls möglich wäre die Verwendung von scrlayer-notecolumn, einem Designbeispiel für Pakete unter Verwendung des KOMA-Script-Pakets scrlayer. Allerdings dürfte das nur sinnvoll zu verwenden sein, wenn nicht nur ein Teil der ersten Seite in zwei Spalten aufgeteilt werden soll, sondern die ganze Seite oder wie im ersten Beispiel die Linie unten aus der Seite heraus ragen darf.

Permanenter link

beantwortet 17 Jun '16, 14:00

saputello's gravatar image

saputello
11.1k154365
Akzeptiert-Rate: 51%

bearbeitet 17 Jun '16, 14:22

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×39
×3
×1

gestellte Frage: 31 Jan '16, 14:58

Frage wurde gesehen: 6,488 Mal

zuletzt geändert: 17 Jun '16, 14:22