Thread View: pl.comp.dtp.tex
2 messages
2 total messages
Started by robert
Fri, 11 Dec 2009 13:52
Ostatni wiersz do prawej - jak?
Author: robert
Date: Fri, 11 Dec 2009 13:52
Date: Fri, 11 Dec 2009 13:52
42 lines
2213 bytes
2213 bytes
Witam, po zlozeniu swojej ksiazki chyba bede troche znal latexa.
Mam kolejny problem.
W przypadku niektorych akapitow musze osiagnac efekt, by ostatni wiersz akapitu
dosuniety byl do prawej strony.
W FAQ znalezlem rozwiazanie:
\newcommand{\ostwierszprawo}{%
\setlength{\leftskip}{0pt plus 1fil}%
\setlength{\rightskip}{0pt plus -1fil}%
\setlength{\parfillskip}{0pt plus 1fil}}%
Ale pojawia sie problem, mianowicie mam akapity dwuwierszoe i jednowierszowe
%----------------------
% wszystko dosuniete w lewo:
{\ostwierszprawo{ala}}
{\ostwierszprawo{ala ala ala ala ala ala ala ala ala ala ala ala ala ala ala}}
%----------------------
% wszystko dosuniete w prawo:
{\ostwierszprawo{ala\par}}
{\ostwierszprawo{ala ala ala ala ala ala ala ala ala ala ala ala ala ala ala\par}}
%----------------------
% dobre, ale sam musze decydowac, gdzie wstawic \par:
{\ostwierszprawo{ala}}
{\ostwierszprawo{ala ala ala ala ala ala ala ala ala ala ala ala ala ala ala\par}}
%----------------------
Pytanie: Jak napisac makro bardziej uniwersalne, ktore w przypadku testu
jednowierszowego dosuwalo tekst do lewj strony, a w przypadku wielowierszowego,
ostatni wiersz dosuniety byl do prawej?
Pozdrawiam
Robert
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Re: Ostatni wiersz do prawej - jak?
Author: Jarosław Sokołowski
Date: Fri, 11 Dec 2009 14:45
Date: Fri, 11 Dec 2009 14:45
34 lines
2175 bytes
2175 bytes
Pan robert ma kolejny problem:
> W przypadku niektorych akapitow musze osiagnac efekt, by ostatni wiersz
> akapitu dosuniety byl do prawej strony.
> W FAQ znalezlem rozwiazanie:
> \newcommand{\ostwierszprawo}{%
> \setlength{\leftskip}{0pt plus 1fil}%
> \setlength{\rightskip}{0pt plus -1fil}%
> \setlength{\parfillskip}{0pt plus 1fil}}%
>
> Ale pojawia sie problem, mianowicie mam akapity dwuwierszoe i jednowierszowe
[...]
> Pytanie: Jak napisac makro bardziej uniwersalne, ktore w przypadku
> testu jednowierszowego dosuwalo tekst do lewj strony, a w przypadku
> wielowierszowego, ostatni wiersz dosuniety byl do prawej?
Skonstruować makro w ten sposób, że jego parametr (czyli treść akapitu)
będzie najpierw wykorzystana do złożenia tekstu "na brudno" w osobnym
pudełku (\vbox}, a następnie zmierzy wysokość tego pudełka. Jeśli uzna,
że mieści się tam więcej niż jedna linijka, zastosuje powyższą sztuczkę,
a jeśli nie -- odpuści sobie.
Ja bym makro definiował tak \def\doprawiacz#1\par{........} -- wtedy nie
trzeba brać akapitu w klamry, wystarczy na początku wpisać wywołanie
makra. Wygodniej się pisze.
W brudnopisie składa się tak: \setbox0\vbox{#1}. Póżniej wystarczy
porównać \ht0 z \baselineskip (albo np. 1.8\baselineskip). Jeśli jest
mniejsze, to akapit jest jednowierszowy, jeśli nie -- wielowierszowy.
--
Jarek
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads