Re: Breite von Satzobjekten bestimmen

"Jakob Mendel" (via tex-d-l Mailing List) <[email protected]> Mon, 6 Apr 2026 17:22:51 +0200
Newsgroups gmane.comp.tex.german
Message-ID <[email protected]>
This is a multi-part message in MIME format...

------------=_1775488991-77776-57
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable

Hallo Dirk,

ich kenne mediawiki2latex gar nicht und habe auch nicht die Zeit, mich=20
einzuarbeiten.  Ich kann also nur ins Blaue schie=C3=9Fen:

\documentclass{article}
\usepackage{tabularx}
\begin{document}
\begin{tabularx}{\linewidth}{*<N>X}% <N> ist die Zahl der Spalten
    [Tabellenk=C3=B6rper]
\end{tabularx}
\end{document}

Die Tabellendefinition *<N>X m=C3=BC=C3=9Ftest Du ggf. anpassen, aber das s=
ollte=20
sich automatisieren lassen.  Dann w=C3=A4ren folgende Anforderungen erf=C3=
=BCllt:
- Wenn die Tabelle "zu schmal" ist, wird sie automatisch auf die=20
Zeilenbreite ausgetrieben.
- Wenn es Zeilen mit sehr viel Text gibt, wird dieser Text automatisch=20
umbrochen.

Es bleibt: Was tun, wenn die Tabelle trotz Umbruchs langer Eintr=C3=A4ge=20
immer noch breiter als die Zeile ist?
Falls Deine Heuristik diese Frage nicht zufriedenstellend beantwortet,=20
hilft vielleicht das Paket adjustbox (siehe Paket-Dokumentation und=20
https://tex.stackexchange.com/questions/43069/how-to-replace-a-large-block-=
of-text-by-an-empty-block-of-the-same-size,=20
1. Antwort) mit dem bereits von Uwe angesprochenen \settowidth.  Das=20
folgende Beispiel ist allerdings ungetestet:

\documentclass{article}
%%%
% Source - https://tex.stackexchange.com/a/43072
% Posted by Martin Scharrer, modified by community. See post 'Timeline'=20
for change history
% Retrieved 2026-04-06, License - CC BY-SA 3.0

\usepackage{adjustbox}
\usepackage{varwidth}% wird lt. adjustbox-Dokumentation automat. geladen

\newcommand{\Hide}{%
     \adjustbox{varwidth=3D\linewidth,precode=3D\hphantom}% \hphantom !!!
}
% Usage: \Hide{<content, can be multiple paragraphs>}
%    or  \Hide\bgroup <content, ...> \egroup
%%%
\usepackage{tabularx}
\newlength{\tabwidth}%
\begin{document}
\settowith{\tabwidth}{\Hide{\noindent%
\begin{tabularx}{\linewidth}{*<N>X}%
    [Tabellenk=C3=B6rper]
\end{tabularx}
}}
% \tabwidth und \linewidth vergleichen und ggf. die Schrift skalieren
\begin{tabularx}{\linewidth}{*<N>X}%
    [Tabellenk=C3=B6rper]
\end{tabularx}
\end{document}

Viele Gr=C3=BC=C3=9Fe
Jakob


Am 06.04.26 um 10:48 schrieb Dirk H=C3=BCnniger (via tex-d-l Mailing List):
> Hallo Jakob,
>=20
> ich arbeite an meinem Programm mediawiki2latex [1] welches automatisiert=
=20
> LaTeX Dokumente aus Wikipedia Artikeln o.=C3=A4. erzeugt.=C2=A0 Hierbei k=
ann es=20
> vorkommen, dass der zu konvertierenden Wikipedia Artikel Tabellen=20
> enth=C3=A4lt. Typischerweise sind dort jedoch keine Informationen =C3=BCb=
er die=20
> Spaltenbreiten in solchen Tabellen enthalten. Ich muss sie also=20
> irgendwie selbst festlegen.
>=20
> Wenn die Inhalte der Tabellenzellen schmal genug sind ist alles gut und=20
> ich kann die Tabelle gegebenenfalls k=C3=BCnstlich verbreitern um sie auf=
 die=20
> vollen Seitenbreite einzupassen. Das ist auch so schon implementiert und=
=20
> funktioniert soweit. Wenn es aber mindestens eine Zelle gibt die sehr=20
> viel Text enth=C3=A4lt muss dieser Text umbrochen werden. Auch das habe i=
ch=20
> bereits mit gewissen Heuristiken implementiert und es funktioniert auch=20
> bereits in vielen F=C3=A4llen hinreichend gut. Auch gibt es eine Heuristi=
k=20
> die die gesamte Tabelle kleiner skaliert wenn zu viele Texte in Zellen=20
> umbrochen werden m=C3=BCssten.
>=20
> Ich habe jetzt aber noch mal angefangen dar=C3=BCber Gedanken zu machen w=
ie=20
> man das korrekter hinbekommen kann. Und beim bisherigen nachdenken ist=20
> mir eingefallen, dass man eben kleinstm=C3=B6gliche Spaltenbreite als=20
> Eingabewert f=C3=BCr diese Rechnung ben=C3=B6tigt und deswegen stelle ich=
 diese=20
> Frage.
>=20
> Viele Gr=C3=BC=C3=9Fe Dirk
>=20
> [1] https://mediawiki2latex.wmcloud.org/
>=20
> On 4/6/26 10:11, Jakob Mendel (via tex-d-l Mailing List) wrote:
>> Hallo Dirk,
>>
>>> [...] Bei der Sache mit tabularx bin ich leider nicht weiter=20
>>> gekommen. So wie ich das verstehe werden zuerst die Breiten aller=20
>>> Spalten, die kein X haben,=C2=A0 berechnet und diese Summe wird dann vo=
n=20
>>> der vorgegebenen Maximalbreite abgezogen und das Ergebnis durch die=20
>>> Anzahl Spalten mit X geteilt und dann wird dieser Wert als=20
>>> Spaltenbreite der Spalten mit X festgelegt.
>> Das verstehe ich ebenso.
>>
>>> Leider kann ich aber dadurch auch nicht die unten erkl=C3=A4rte=20
>>> Minimalbreite eines Satzobjekts bestimmen. Folgendes Minimalbeispiel
>>>
>>> \documentclass{article}
>>> \usepackage{tabularx}
>>> \begin{document}
>>> \newsavebox{\mybox}\sbox{\mybox}{\begin{tabularx}{13pt}{|X|}
>>> $\begin{array}{cc}a&b\end{array}$
>>> \end{tabularx}}\the\wd\mybox{}
>>> \end{document}
>>>
>>> Liefert immer noch die Ausgabe 13.0 pt.
>> Das sollte so sein: Wenn Du die Breite (d. h. die Gesamtbreite) der=20
>> Tabelle auf 13pt setzt und diese Tabelle in eine Box packst, wird die=20
>> Box genau 13pt breit.
>>
>>> Ich will halt herausfinden wie breit ein Satzobjekt minimal seien=20
>>> muss egal wie h=C3=A4ufig es umbrochen wird.
>> Mir ist bisher nicht klar, *wof=C3=BCr* Du die kleinstm=C3=B6gliche=20
>> Spaltenbreite brauchst: Willst Du eine Tabelle mit m=C3=B6glichst schmal=
en=20
>> Spalten erzeugen?=C2=A0 Oder willst Du eine m=C3=B6glicht schmale Tabell=
e=20
>> erzeugen, um z. B. umflie=C3=9Fenden Text von optimaler Zeilenl=C3=A4nge=
 zu haben?
>>
>> Falls letzteres zutrifft, sieh Dir mal die Pakete wrapfig und wrapfig2=20
>> (Umgebung wraptable) an.
>>
>> Uwes Hinweis auf \settowidth ist auf alle F=C3=A4lle hilfreich.
>>
>> Viele Gr=C3=BC=C3=9Fe
>> Jakob
>>
>=20
>=20



------------=_1775488991-77776-57
Content-Type: text/plain; charset="UTF-8"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0

-- 
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
------------=_1775488991-77776-57--