Spalten umwandeln, sodass \par in der Spalte funktioniert

Tabellen und Grafiken erstellen und anordnen


Nikolas_Tamere
Forum-Anfänger
Forum-Anfänger
Beiträge: 15
Registriert: Di 16. Mär 2021, 11:28

Spalten umwandeln, sodass \par in der Spalte funktioniert

Beitrag von Nikolas_Tamere »

Hallo liebes Forum,

ich hatte bereits einen Thread in dem mir wirklich toll geholfen wurde (danke nochmals!) und dieses Thema bezieht sich darauf, daher der Link:

viewtopic.php?f=6&t=23687

Ich konnte den Code bei mir miteinfügen, auch konnte ich durch umstellen der Spaltenart bereits den \par Befehl nutzen, leider aber nicht richtig. In Zeile 88 möchte ich, dass 1.1 und 1.2 mittig untereinander steht. Ändere ich die Spalte in eine X Spalte, funktioniert es, aber die Spalte ist viel zu breit (da sie sich ja an die Tabelle anpassen in der Breite). Nutze ich eine definiert breite Spalte wie in folgendem Beispiel (im Code Zeile 73):

\begin{xltabular}{\textwidth}{Sc | C{0.9cm} | X | X | c | c |

habe ich das Problem, dass die beiden Werte zwar mit \par übereinander geschrieben werden können, sie aber in der Zeile nun nicht mehr mittig sind. Wahrscheinlich ist das auch wieder nur ein einzelner Befehl den ich nicht weiß, aber durch Internetrecherche hatte ich bisher leider keinen Erfolg (habe whs. einfach falsch gesucht, weiß aber auch nicht wonach ich suchen soll). Hoffentlich kann mir hier nochmal jemand helfen, ich bin für alle Anregungen sehr dankbar, gerne auch einen Link dahin, wo es erklärt wird!

\documentclass[usegeometry]{scrbook}


% Optionen für das Inhaltsverzeichnis
\KOMAoption{toc}{bibliography,listof}

% Schriftgröße, Trennungsstrich für Kopfzeile, Format A4, Bindungskorrektur für die Innenseite
\KOMAoptions{fontsize=12pt,headsepline=true,paper=a4,BCOR=17mm,headings=normal,captions=tableheading}

\usepackage{geometry}
% Fettgeschriebene Bezeichnungen für Bilder und Tabellen
\setkomafont{captionlabel}{\bfseries}

% Geforderte Schriftart
\usepackage{lmodern}

% Deutsche Trennung
\usepackage[ngerman]{babel}

% Eineinhalb Zeilen Abstand
\usepackage[onehalfspacing]{setspace}

% Wissenschaftliche Tabellen
\usepackage{booktabs}

% Code aus dem Tabellenbeispiel kopiert:
\usepackage[svgnames,table]{xcolor}% Wer tikz lädt, setzt die Optionen besser bei \documentclass oder \PassOptionsToPackage
\usepackage{multirow, makecell, cellspace, bigstrut}
\usepackage{ragged2e}
\usepackage{xltabular}% Paket ersetzt, weil xltabular die umgebung tabularx unverändert lässt.
\keepXColumns
\renewcommand\tabularxcolumn[1]{ >{\arraybackslash}m{#1}}
\usepackage{booktabs}
\newcolumntype{L}[1]{>{\RaggedRight}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\newlength{\lastcolwd}
\settowidth{\lastcolwd}{Bermerkungen}
\newcommand\mymidrule{\specialrule{\lightrulewidth}{0pt}{\belowrulesep}}
\newcommand\mybottomrule{\specialrule{\heavyrulewidth}{0pt}{\belowrulesep}}
\newcommand\mytoprule{\specialrule{\heavyrulewidth}{0pt}{0pt}}

\setlength\cellspacetoplimit{5pt}
\setlength\cellspacebottomlimit{5pt}


\begin{document}
\pagestyle{headings}

\frontmatter

\begin{titlepage}
\begin{center}
hallo
\end{center}
\end{titlepage}

\storeareas\defaultareas
\newgeometry{inner=2.5cm,outer=2.5cm,top=2cm,bottom=1.0cm,includeheadfoot}
\sffamily
\begin{xltabular}{\textwidth}{@{}Sl|X|Sl @{}}% siehe Hinweis zu xltabular oben
  \mytoprule
  \makecell[lc]{B. Buiiea GmbH \& Co. KG \\ Konstruktion und\\ Entwicklung}
   & Datum der Erstellung: 01.01.17 \par\mbox{}\par Erstellt von: Max Mustermann
   & \makecell[lc]{Aktueller Stand: 02.01.17 \\ Index: 00\\ \mbox{}} \\
  \mymidrule
  \multicolumn{3}{@{}c@{}}{Anforderungsliste} \\
  \addlinespace
  \multicolumn{3}{@{} >{\centering}m{\textwidth}@{}}{Bla Bla Bla Bla Bla} \\
  \midrule
  \multicolumn{3}{@{}c@{}}{Projekt-Nr.: 1234567890} \\
  \multicolumn{3}{@{}c@{}}{Projektname}
\end{xltabular}
\begin{xltabular}{\textwidth}{Sc| Sc |X| X| c | c | >{\RaggedRight\bigstrut}m{\lastcolwd}}
  \specialrule{\lightrulewidth}{-4ex}{0pt}
  \multicolumn{6}{@{}c|@{}}{Anforderungen} & \makecell[lt]{F = Fest \\W = Wunsch}\\
  \specialrule{2pt}{0pt}{0pt}
  \rowcolor{Gainsboro}\makecell[c]{F \\ W} & Nr. & Bezeichnung &
  \bigstrut Werte\par\ Daten \par Anforderungen & Zust. & Status & Bermerkungen \\
  \mybottomrule
  \endfirsthead
  \specialrule{2pt}{0pt}{0pt}
  \rowcolor{Gainsboro}\makecell[c]{F \\ W} & Nr. & Bezeichnung &
  \bigstrut Werte\par\ Daten \par Anforderungen & Zust. & Status & Bermerkungen \\
  \mybottomrule
  \endhead
  \multicolumn{1}{c}{} & \multicolumn{1}{Sc}{1} & \multicolumn{5}{l}{\bfseries Funktionen} \\
  \hline
  F & 1.1 \par 1.2 & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. & xy & & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. \\
  \hline
  \multicolumn{1}{c}{} & \multicolumn{1}{Sc}{1} & \multicolumn{5}{l}{\bfseries Funktionen} \\
  \hline
  F & 1.1 & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. & xy & & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. \\
  \hline
  \multicolumn{1}{c}{} & \multicolumn{1}{Sc}{1} & \multicolumn{5}{l}{\bfseries Funktionen} \\
  \hline
  F & 1.1 & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. & xy & & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. \\
  \hline
  \multicolumn{1}{c}{} & \multicolumn{1}{Sc}{1} & \multicolumn{5}{l}{\bfseries Funktionen} \\
  \hline
  F & 1.1 & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. & xy & & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. \\
  \hline \noalign{\penalty-5000}
  \multicolumn{1}{c}{} & \multicolumn{1}{Sc}{1} & \multicolumn{5}{l}{\bfseries Funktionen ! ! ! } \\*
  \hline
  F & 1.1 & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. & xy & & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. \\
  \hline
  \multicolumn{1}{c}{} & \multicolumn{1}{Sc}{1} & \multicolumn{5}{l}{\bfseries Funktionen} \\
  \hline
  F & 1.1 & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. & xy & & Hier steht ein Text. Hier steht ein Text. \par Hier steht ein Text. Hier steht ein Text. \\
  \hline
\end{xltabular}
\normalfont

\cleardoublepage
\defaultareas
Hier geht es normal weiter.

\end{document}

Gute*r Gȧst*in

Re: Spalten umwandeln, sodass \par in der Spalte funktioniert

Beitrag von Gute*r Gȧst*in »

Die C-Spalten in deinem (viel zu großen) Beispiel verwenden p-Spalten. Bei denen wird die oberste Textzeile als Grundlinie verwendet. Es gibt auch b-Spalten. Bei denen ist die unterste Textzeile die Grundlinie. Und dann gibt es m-Spalten, bei denen die Mitte aller Zeilen als Grundlinie verwendet wird. m-Spalten werden bei dir ebenfalls bereits verwendet, beispielsweise für alle X-Spalten. Siehe dazu auch die array-Anleitung.

Wenn das nur an der einen Stelle benötigt wird, kann man dort auch einfach \multicolumn{1}{m{1.5em}|}{\centering 1.1 \par 1.2} oder {\begin{tabular}[c]{@{}c@{}} 1.1 \\ 1.2 \end{tabular}} oder \parbox[c]{1.5em}{\centering 1.1 \\ 1.2} verwenden.


Gute*r Gȧst*in

Re: Spalten umwandeln, sodass \par in der Spalte funktioniert

Beitrag von Gute*r Gȧst*in »

Achso, für den Fall, dass man das in mehreren Zeilen verwenden und deshalb die Spaltendeklaration generell ändern will, würde diese beispielsweise:

\begin{xltabular}{\textwidth}{Sc| >{\centering}m{1.5em} |X| X| c | c | >{\RaggedRight\bigstrut}m{\lastcolwd}}

lauten. Man kann auch das p in der Definition von C in m ändern und dann

\begin{xltabular}{\textwidth}{Sc| C{1.5em} |X| X| c | c | >{\RaggedRight\bigstrut}m{\lastcolwd}}

verwenden.


Nikolas_Tamere
Forum-Anfänger
Forum-Anfänger
Beiträge: 15
Registriert: Di 16. Mär 2021, 11:28

Re: Spalten umwandeln, sodass \par in der Spalte funktioniert

Beitrag von Nikolas_Tamere »

Vielen Dank, es hat geklappt!

Sorry für das zu große Beispiel, obwohl ich mir den Post dazu durchgelesen hatte, kann ich (aufgrund von nicht vorhandenem Wissen) irgendwie noch nicht so wirklich einschätzen was das Essentielle ist :|

Gruß


Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Re: Spalten umwandeln, sodass \par in der Spalte funktioniert

Beitrag von KOMA »

Dass wenn man mit genau einer Zeile einer Tabelle ein Problem hat, man alle anderen Tabellen und weitgehend alle anderen Zeilen dieser Tabelle entfernen könnte, ist jetzt IMHO keine so überraschende Minimierungsmöglichkeit … :roll:

Ideal sind generell Minimalbeispiele, die man in ihrer Vollständigkeit überblicken kann. Wenn man für Anpassungen ewig im Quellcode scrollen muss, ist das etwas lästig. Ja, ich bin gerade in meiner Rolle als Helfer ein fauler Sack! Kleine Beispiele haben aber auch für Dich den Vorteil, dass Du ggf. Änderungen schneller findest, falls der Helfer wieder ein vollständiges Minimalbeispiel als Lösung postet.


Antworten