PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Spalten bzw. Zellenbreite ermitteln



MrBenBen100
26-04-2013, 13:37
Hi,

ich hab mal ein ganz spezielle Frage. Und zwar erstelle ich im Moment interaktive PDFs mit Textfeldern. Das heiß ich baue mir eine Tabelle und innerhalb dieser Tabelle fülle ich manche Zellen mit PDF-Formular-Textfeldern.
Mein Problem ist jetz, dass ich die Tabelle über die komplette Seite machen will. Das ist ja mit der tabularx-Umgebung kein Problem. Aber das große Problem hierbei ist, dass ich es gerne schaffen würde, dass wenn ich einer Tabellenspalte den Typ X zuweise, also die Breite automatisch bestimmt wird, sich auch das Textfeld der Länge anpasst. Das heißt konkret ich bräuchte einen Befehl, der mir die aktuelle Spaltenbreite bzw. Zeilenbreite ermitteln kann.
Ich poste einmal ein lauffähiges Minimalbeispiel. Dadurch wird bestimmt klarer, was ich benötige.



\documentclass[headlines=3.2]{scrreprt}
\usepackage{tabularx}
\usepackage{eforms}
\begin{document}
\begin{table}[!h]
\begin{tabularx}{\textwidth}{|l|X|}
\hline
Ausstellungsdatum: & \textField{ausstellungsdatum}{10.5cm}{1em} \\
\hline
\end{tabularx}
\end{table}
\end{document}



In diesem Beispiel wäre es z.B. mein Wunsch, dass ich nicht von Hand dem Textfeld 10.5cm zuwesien muss, sondern dass Latex sich selber die Spaltenbreite ermittelt und das Feld optimal anpasst. Ich hoffe mein Problem ist verständlich ausgedrückt. Ich hab leider keine Ahnung, ob das überhaupt funktioniert und befürchte, wenn es funktioniert, dass es keine einfache Lösung ist. Aber ich warte einfach mal auf eure Vorschläge ;-). Schon mal danke für die Antworten :-)

u_fischer
26-04-2013, 13:45
Du bist doch ganz normal in einer \parbox.


\documentclass{book}
\usepackage{tabularx}
\begin{document}
\begin{tabularx}{\textwidth}{|l|X|}
\hline
Ausstellungsdatum: & \rule{\linewidth}{0.4pt}\\
\hline
\end{tabularx}


\begin{tabular}{|l|p{3cm}|}
\hline
Ausstellungsdatum: & \rule{\linewidth}{0.4pt}\\
\hline
\end{tabular}
\end{document}

MrBenBen100
26-04-2013, 13:57
Genial danke! Das funktioniert ja perfekt! Mit \linewidth hab ich noch nie gearbeitet. Such sich der Befehl selbstständig die Breite einer vordefinierten Box heraus?

u_fischer
26-04-2013, 14:38
Nein, LaTeX setzt an diversen Stellen \linewidth auf die Zeilenbreite. U.a. auch in \parbox (und damit in p-Spalten) und minipage.

MrBenBen100
29-04-2013, 08:05
Okay, jetzt habe ich hier ein neues Problem. Der Befehl \linewidth funktioniert perfekt bei normalen Tabellenspalten. Verwende ich jetzt aber den Befehl \multicolumn ermittelt er nicht mehr die richtige Breite. Hier einmal ein Minimalbeispiel.



\documentclass{scrreprt}
\usepackage{tabularx}
\usepackage{eforms}
\begin{document}
\begin{table}[!h]
\begin{tabularx}{\textwidth}{|l|X|X|}
\hline
Ausstellungsdatum & \multicolumn{2}{X|}{\tft{\linewidth}{ausstellungsd atum}} \\
\hline
\end{tabularx}
\end{table}
\end{document}

u_fischer
29-04-2013, 10:54
Du kannst sowas versuchen und dann \hsize benutzen:


\documentclass{scrreprt}
\usepackage{tabularx}
\usepackage{lipsum}
\begin{document}
\begin{table}[!h]
\begin{tabularx}{\textwidth}{|l|X|X|}
\hline
abc & abc & abc\\
Ausstellungsdatum & \multicolumn{2}{>{\hsize=\dimexpr 2\hsize+2\tabcolsep}X|}{%
\lipsum[1]
\par\rule{\hsize}{0.4pt}}\\
\hline
\end{tabularx}
\end{table}
\end{document}