PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rückgabeparameter Textbox



peyo
29-11-2010, 09:56
Hallo,

ich habe eine Frage.
Ist es möglich, eine Parameter zu bekommen, der mir sagt, wie viel Platz der Text eingenommen hat?
also wenn ich etwas generiere, erstellt Latex ja .aux, .dvi, .log, .pdf, .ps Dateien.
Steht in irgendeiner dieser Dateien so etwas wie:
Die Textbox hat eine höhe von 13 cm, als Parameter?
ich hatte mir schonmal die .log Datei angesehen und soetwas wie:


(typearea) \paperheight = 845.04694pt
(typearea) \textheight = 538.0pt

gefunden. wenn ich das aber umrechne, stimmt das leider nicht.

ich hoffe ihr könnt mir helfen,
Danke und LG
peyo

peyo
30-11-2010, 07:52
Wird beim ersten Latex durchlauf eine weitere Datei generiert?

ich weiß, dass man bei Seitenanzahlangaben Latex 2 mal durchlaufen muss, weil es ja beim ersten mal nicht weiß, wie viele Seiten das Dokument besitzt.
Ist es möglich, über diesen Weg herauszufinden, wie lange der Text, Tabelle, Box etc. ist?
ich weiß, dass ich die Breite meist einstellen kann und die sich auch nicht verändert.

Vielen Dank schonmal für Eure Bemühungen,
LG

Peyo

LuPi
30-11-2010, 10:34
wenn ich das aber umrechne, stimmt das leider nicht.

Das dürfte aber an Deiner Umrechnung liegen. ;)

Wenn Du Breite und Höhe (vielleicht auch noch Tiefe) eines nahezu beliebigen "Blockes" wissen willst, kannst Du diesen in eine box packen und diese dann ausmessen lassen. (Stichworte \savebox, \usebox usw.)

Falls das das ist, was Du suchst.

peyo
30-11-2010, 12:09
ja genau das ist es.

hättest du ein minimalbeispiel mit dem ausmessen?

ich weiß nicht, von wo ich dann die größe der box bekomme.

LuPi
30-11-2010, 12:20
Ansatzweise:


% Preamble:
\usepackage{xcalc}
\newsavebox{\mysavebox}
\newlength{\mywidth}
\newlength{\myrest}

\savebox{\mysavebox}{Hier kommt Dein Material hin!}
\setlength{\mywidth}{\wd\mysavebox+<margin>}
\setlength{\myrest}{\textwidth-\mywidth}
\usebox{\mysavebox}


Einfacher und zielgerichteter geht so etwas, wenn Du ein Minimalbeispiel spendierst.

peyo
30-11-2010, 12:30
okay danke,

und wo krieg ich jetzt die länge der box her?

LuPi
30-11-2010, 12:38
Schau Dir mal diesen thread (http://groups.google.com/group/de.comp.text.tex/browse_thread/thread/1ee72cfdfe3fd231/c3f6446f54f66c02) an.

peyo
30-11-2010, 12:46
ah okay danke.
eins versteh ich noch nicht
wo schreibe ich dann


\ht\MessBox


mein Code schaut so aus:


\documentclass[12pt,a4paper,twoside]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\pagestyle{empty}


\begin{document}
\newsavebox\MessBox
\savebox{\MessBox}{Das zu messende}
\begin{lrbox}{\MessBox}Das zu messende\end{lrbox}

\end{document}

LuPi
30-11-2010, 12:52
Wenn Du die Ausgabe in der log-Datei haben möchtest, kannst Du Folgendes machen:


\documentclass[12pt,a4paper,twoside]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\pagestyle{empty}


\begin{document}
\newsavebox\MessBox
\savebox{\MessBox}{Das zu messende}
\begin{lrbox}{\MessBox}Das zu messende\end{lrbox}

\showthe\ht\MessBox
\showthe\wd\MessBox
\showthe\dp\MessBox

\end{document}

peyo
30-11-2010, 13:01
Hallo LuPi,
Dieser Codeteil kann bei mir nicht verarbeitet werden.
Ich kriege als ausgabe auf der Commandozeile ein ?.


\showthe\ht\MessBox
\showthe\wd\MessBox
\showthe\dp\MessBox

:(
Edit: man muss den Codeteil außerhalb von \end{document} schreiben

Edit: leider ist mein Dokument leer und irgendwelche Angaben habe ich auch nicht bekommen :/

LuPi
30-11-2010, 15:00
Dann bin ich hier mit meinem Latein am Ende. Mein pdfLaTeX spuckt mir in der Log-Datei (und an der Konsole) folgende Zeilen aus:


\MessBox=\box27

> 8.26465pt.
l.13 \showthe\ht\MessBox

?
> 0.0pt.
l.14 \showthe\dp\MessBox

?
> 86.82878pt.
l.15 \showthe\wd\MessBox

?


Dass das Ergebnis ein leeres Dokument ist, ist klar, da die Box nur bestückt wird, aber nicht gesetzt. Wenn Du dem Ganzen ein \usebox{\MessBox} hinterschickst, ist das Dokument auch nicht mehr leer.

peyo
01-12-2010, 06:50
hallo =)

hab den Code:


\documentclass[12pt,a4paper,twoside]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\pagestyle{empty}


\begin{document}
\newsavebox\MessBox
\savebox{\MessBox}{Das zu messende Das zu messende Das zu messende
Das zu messende Das zu messende Das zu messende Das zu messende Das zu messende}
\begin{lrbox}{\MessBox}Das zu messende Das zu messende Das zu messende
Das zu messende Das zu messende Das zu messende\end{lrbox}

\end{document}

\showthe\ht\MessBox
\showthe\wd\MessBox
\showthe\dp\MessBox


jetzt mal mit dem Aufruf: pdflatex minipage123.tex ausprobiert.

Meine Log Datei schaut jetzt so aus:


...
Package typearea Info: These are the values describing the layout:
(typearea) DIV = 12
(typearea) BCOR = 0.0pt
(typearea) \paperwidth = 597.50793pt
(typearea) \textwidth = 448.13095pt
(typearea) DIV-departure = -6/100
(typearea) \evensidemargin = 27.31467pt
(typearea) \oddsidemargin = -22.47766pt
(typearea) \paperheight = 845.04694pt
(typearea) \textheight = 635.5pt
(typearea) \topmargin = -41.72441pt
(typearea) \headheight = 18.125pt
(typearea) \headsep = 21.75pt
(typearea) \topskip = 12.0pt
(typearea) \footskip = 50.75pt
(typearea) \baselineskip = 14.5pt
(typearea) on input line 832.
...


Meine Kommandozeile hat das ausgespuckt:


This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6)
%&-line parsing enabled.
entering extended mode
(./minipage123.tex
LaTeX2e <2005/12/01>
Babel <v3.8h> and hyphenation patterns for english, usenglishmax, dumylang, noh
yphenation, german, ngerman, loaded.
(/usr/share/texmf-texlive/tex/latex/koma-script/scrartcl.cls
Document Class: scrartcl 2006/07/30 v2.95b KOMA-Script document class (article)

(/usr/share/texmf-texlive/tex/latex/koma-script/scrkbase.sty
(/usr/share/texmf-texlive/tex/latex/koma-script/scrlfile.sty
Package scrlfile, 2006/03/28 v2.95 KOMA-Script package (loading files)
Copyright (C) Markus Kohm

) (/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty))
(/usr/share/texmf-texlive/tex/latex/base/size12.clo)
(/usr/share/texmf-texlive/tex/latex/koma-script/typearea.sty
Package typearea, 2006/07/30 v2.95b KOMA-Script package (type area)
Copyright (C) Frank Neukam, 1992-1994
Copyright (C) Markus Kohm, 1994-2002

)) (/usr/share/texmf-texlive/tex/latex/base/fontenc.sty
(/usr/share/texmf-texlive/tex/latex/base/t1enc.def))
(/usr/share/texmf-texlive/tex/latex/base/inputenc.sty
(/usr/share/texmf-texlive/tex/latex/base/utf8.def
(/usr/share/texmf-texlive/tex/latex/base/t1enc.dfu)
(/usr/share/texmf-texlive/tex/latex/base/ot1enc.dfu)
(/usr/share/texmf-texlive/tex/latex/base/omsenc.dfu)))
(/usr/share/texmf-texlive/tex/generic/babel/babel.sty
(/usr/share/texmf-texlive/tex/generic/babel/ngermanb.ldf
(/usr/share/texmf-texlive/tex/generic/babel/babel.def))) (./minipage123.aux)
(./minipage123.aux) )
No pages of output.
Transcript written on minipage123.log.


Leider bekomme ich die Ausgabe nicht so, wie du sie bekommst :/

mache ich noch etwas falsch?

Danke für eure Hilfe

u_fischer
01-12-2010, 09:24
Warum schreibst du die \showthe-Befehle hinter \end{document}? \end{document} ist nun mal das Ende der Kompilation. Da kannst du Romane hinschreiben, LaTeX wird sie nicht sehen.

peyo
01-12-2010, 10:08
hatte das gestern mal ausprobiert, und da kam dann ein ? bei der Konsole.

Hab jetzt wieder
\documentclass[12pt,a4paper,twoside]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\pagestyle{empty}


\begin{document}
\newsavebox\MessBox
\savebox{\MessBox}{\begin{tabularx}{12cm}[t]{p{6cm}}Das zu messende Das zu messende \\Das zu messende
Das zu messende Das zu messende Das zu messende Das zu messende Das zu messende\end{tabularx}}
\begin{lrbox}{\MessBox}{\begin{tabularx}{12cm}[t]{p{12cm}}Das zu messende Das zu messende Das zu messende
Das zu messende Das zu messende Das zu messende\end{tabularx}}\end{lrbox}
\usebox{\MessBox}

\showthe\ht\MessBox
\showthe\wd\MessBox
\showthe\dp\MessBox


\end{document}



Danke für die Hilfe, man musste 3 mal enter drücken um alle Abfragen zu bekommen ^^
Geht das auch ohne Enter zu drücken?

Ich bekomme auch eine Ausgabe im PDF Dokument, allerdings verstehe ich nicht, welchen tabularx Befehl ich für die Ausgabe brauche.
Den oberen oder den unteren und welchen Text er dann abmisst. den bei \begin{lrbox}{\MessBox} oder den bei \savebox{\MessBox}.

Bitte nochmals um Hilfe,

Vielen Dank

u_fischer
01-12-2010, 11:11
Danke für die Hilfe, man musste 3 mal enter drücken um alle Abfragen zu bekommen ^^
Geht das auch ohne Enter zu drücken?

Nun, du kannst \scrollmode einstellen. Aber normalerweise willst du \showthe ja nicht dauernd im Dokument haben, es ist ja nur zum Testen, und da willst du die Ausgabe ja vielleicht sofort sehen.

Wenn du Messwerte irgendwo verwenden willst, kannst du das direkt tun:


\rule{\ht\MessBox}{\wd\MessBox}


Den oberen oder den unteren und welchen Text er dann abmisst.

Nun, ich empfehle einen Test: Ändere eine der beiden und schau, was \showthe macht. Oder füge auch \showthe-Befehle vor dem zweiten Code ein.

peyo
01-12-2010, 12:56
danke für den tipp.

hat alles geklappt was ich gebraucht habe :o

peyo
02-12-2010, 05:54
Hallo Leute,

eine Frage zu dem Thema hab ich leider immernoch:
Mein Code:

\documentclass[12pt,a4paper,twoside]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\pagestyle{empty}
\scrollmode


\begin{document}

\newsavebox\MessBox
\savebox{\MessBox}{}
\begin{lrbox}{\MessBox}{\begin{tabularx}{12cm}[t]{p{12cm}}Das zu messende Das zu messende Das zu messende
Das zu messende Das zu messende Das zu messende
Das zu messende Das zu messende Das zu messende
Das zu messende Das zu messende Das zu messende
Das zu messende Das zu messende Das zu messende
Das zu messende Das zu messende Das zu messende
Das zu messende Das zu messende Das zu messende\end{tabularx}}\end{lrbox}
\usebox{\MessBox}
%\rule{\ht\MessBox}{\wd\MessBox}

\showthe\ht\MessBox
\showthe\wd\MessBox
\showthe\dp\MessBox


\end{document}



Meine Werte:

> 10.14995pt.
l.24 \showthe\ht\MessBox

> 341.43306pt.
l.25 \showthe\wd\MessBox

> 76.85004pt.
l.26 \showthe\dp\MessBox

Wenn ich das jetzt umrechnen lasse über diesen Rechner:
http://www.print-assistant.de/tools_prepress_mm_cm_didot-punkt_pica-punkt_inch.html

bekomme für ht: 3.58 mm
die breite wd: 12.04 cm <- Stimmt
dp: 2.71 cm

weder ht noch dp stimmen mit meiner Texthöhe überein.

Wisst ihr, wo ich noch einen Fehler mache?
Für jede Hilfe bin ich euch dankbar,
vielen Dank schonmal im Vorraus

LuPi
02-12-2010, 06:55
Bei mir schon (in gewisser Weise) ;)

Die Testhöhe wird hier von der Grundlinie der ersten Zeile gerechnet, die Texttiefe ebenfalls. Wenn Du beide addierst, bekommst Du die Höhe der gesamten Box.

peyo
02-12-2010, 07:15
ah okay.

super danke, ich glaube das passt jetzt =)