Re: Rechnen in LaTeX
Dirk Hünniger (via tex-d-l Mailing List) <[email protected]>
| Newsgroups | gmane.comp.tex.german |
|---|---|
| Message-ID | <[email protected]> |
Hallo,
ich habe nun die entsprechende Lösung zusammengebaut. Sie ist unten
angegeben. Nochmals vielen Dank für die vielen hilfreichen Hinweise. Die
Idee ist statt \linewidth einfach \linewidth - 2*\tablecolsep
-\arrayrulewidth zu nehmen, dann werden die inneren geschachtelten
Tabellen nicht zu breit.
Viele Grüße Dirk
PS: Lösung:
\documentclass[fontsize=11pt,paper=A4,BCOR=12mm,DIV=13]{scrbook}
\usepackage{array,lipsum}
\begin{document}
\ExplSyntaxOn
\newcommand\mycellwidth[1]
{
\dim_eval:n
{
\fp_eval:n
{
(
\dim_to_decimal:n{\linewidth}
- \dim_to_decimal:n{2\tabcolsep+\arrayrulewidth}
)*#1
} pt
}
}
\ExplSyntaxOff
\lipsum[1]
\begin{tabular}{|p{0.47143\linewidth}|p{0.47143\linewidth}|}
\begin{tabular}{|p{\mycellwidth{0.47143}}|p{\mycellwidth{0.47143}}|}
\hline bla & bla \\ \hline
\end{tabular} &
\begin{tabular}{|p{\mycellwidth{0.47143}}|p{\mycellwidth{0.47143}}|}
\hline la & la \\ \hline
\end{tabular}
\end{tabular}
\lipsum[1]
\end{document}
On 12/16/24 19:36, Dirk Hünniger wrote:
> Hallo,
>
> das Ziel was ich im Moment verfolge ist eine "automatische
> Spaltenbreite". Hierzu kann ich bereits eine relative Breite der i-ten
> Spalte im Verhältnis zum insgesamt für alle Spalten einer Tabelle
> verfügbaren Platz in meinem Programm berechnen, diese Zahl nenne ich
> p_i. p_i liegt zwischen 0.0 und 1.0 . Die Summe von p_i über alle i
> ist 1.0 .
>
> In allererster Näherung ist die Spaltenbreite der i-ten Spalte p_i
> \cdot \linewidth. Jetzt ist noch zu berücksichtigen, dass der
> tatsächlich für alle Spalten insgesamt zur Verfügung stehende Platz
> etwas kleiner ist als \linewidth. Er ist \linewidth - (2 \cdot
> \tabcolsep + \arrayrulewidth) \cdot \ncols - \arrayrulewidth. Wobei
> \ncols die Anzahl der Spalten der Tabelle ist. Ich möchte daher die
> Tabelle wie folgt hinschreiben (angenommen p_i=0.333 für i \in
> \{1,2,3\}) :
>
> \begin{tabular}{|p{0.333\scaledlinewidth(3)}|p{0.333\scaledlinewidth(3)}|p{0.333\scaledlinewidth(3)}|}
>
>
> \hilne bla & bla \\ \hline
>
> \end{tabular}
>
> Der Wert von \scaledlinewidth(x) soll eine vom Parameter x abhängige
> Funktion sein, wobei x die Anzahl der Spalten in der zu setzten der
> Tabelle ist und nach dem oben gesagten nach folgender Formel berechnet
> werden soll:
>
> \scaledlinewidth(x) := \linewidth - (2 \cdot \tabcolsep +
> \arrayrulewidth)\cdot x - \arrayrulewidth
>
> Die Frage die ich nun habe ist. Wie schreibe ich das in LaTeX hin.
> Also wie bekomme ich LaTeX dazu diese Rechnung durchzuführen. Ich
> möchte sie gerne in LaTeX selbst ausführen und nicht in meinem Haskell
> Programm außen herum machen, das ich sonst \linewidth im Haskell Code
> entsprechend verwalten müsste. \scaledlinewidth muss dabei nicht
> zwingend eine Funktion sein, nur soll die Kopfzeile für das tabular
> aus dem Haskell Code heraus ausgegeben werden können, welche zwar 3
> als Anzahl der Spalten und [0.333, 0.333, 0.333] also die p_i kennt
> aber eben nicht \tabcolsep und nicht \arrayrulewidth und nicht
> insbesondere nicht \linewidth
>
> Viele Grüße Dirk
>
--
FAQ: http://texfragen.de/
Durchsuchbares Archiv: https://www.listserv.dfn.de/sympa/arc/tex-d-l
Unsubscribe/Verwaltung: https://www.listserv.dfn.de/sympa/info/tex-d-l