távolság a lap aljától

 ( bzs | 2018. február 13., kedd - 13:38 )

Sziasztok.

Egy ifthen-jellegű dolgot szeretnék csinálni a lap alján a laptörés megakadályozására, mert ezidáig semmit sem találtam rá, hogy az utolsó 5-6 sort, azt a 3-4 cm-t ne törje pont ott, ahol nem kéne.

Azt szeretném megkérdezni -- mivel nem hiszem el, hogy nincs ilyen -- hogy mivel lehet lekérdezni az éppen aktuális sor távolságát a szedéstükör aljától. Ha ez megvan, szerintem tudok már drótozni belőle valamit. A cél az, hogy amikor egy \section*{valami} elkezdődik, a következő 5-6 sornyi anyag normál betűmérettel szedve ne törjön.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

A nowidow csomag nem lenne jó?

Itt írtam neked, hogy először érdemes a csomagok között szétnézni - szinte biztos, hogy már másnál is előfordult hasonló igény, és közülük valaki már biztosan meg is oldotta.

Ez igen!

234 oldalon csak egy hiba, az sem annyira gáz.

\usepackage[defaultlines=4,all]{nowidow}

Nem tudom, mit művelt, előbb csinálom, utána olvasom ilyenkor az új cuccokat. Gondosan átnézem.

Kösz szépen!

--------
igen, mondtad már, emlékszem mindenkinek a szavaira. Csak ez a csomag nagyon rejtve volt.

Igazán nincs mit :)

\usepackage[defaultlines=5,all]{nowidow}

5-tel már a fejezeteket kezdő, 4 soros iniciálé is rendben van. Fattyúsorokat sem láttam 230 oldal draftján...

8=)

Ha jól értem, azt szeretnéd, hogy 5-6 sor után ne legyen oldaltörés, csak 7-től felfelé. TeX-ben, XeTeX-ben a megoldás (működik LaTeX és XeLaTeX alatt is):

%az alábbi az első 5 sor után nem enged oldalt törni
\clubpenalties 10000 10000 10000 10000 10000

%az alábbi az utolsó 5 sor előtt nem enged törni
\widowpenalties 10000 10000 10000 10000 10000 

Így soronként meg lehet adni, hogy mennyire nem kívánatos a sortörés, n darab sort együtt tartani, közvetlenül a section mögé beszúrhatod. Működik akárhány sorral, csak akkor annyi értéket kell is kell felsorolni. Ez a szépsége a plain TeX-es megoldásoknak, nem kell semmilyen csomagot használni, így nincs \usepackage{kutyafule, faxtuggyami, feketemagia, titkosjelszo, szopok} és hasonlókkal kínlódás, rettenet megkönnyíti az ember életét, nem kell annyi csomagot ismerni, fejben tartani, azoknak a dokumentációját is mindig átnyálazni, meg mivel nem kellenek csomagok, ezért azok nem ütik egymást. Elég csak egyszer a TeX makrókat megtanulni hozzá, és utána minden megoldható a segítségükkel.

Egy dologra szeretném felhívni a figyelmed: mindegy melyik módszert használod, a plain TeX-eset vagy a LaTeX nowido csomagját, általában működik, de vannak esetek, amikor az n darab sor előtti törést nem tudod megakadályozni. Ugyanis néha úgy jön ki, hogy nem tud a TeX motor (ami a LaTeX alatt is ketyeg) máshol törni, és hiába vitted fel a penalty-jét a maximumra, akkor is be fogja vállalni, és ott fog törni, mivel a többi törési megoldás sem lesz jobb. Ritka, de megesik, olyankor a bekezdéseket át kell szervezni kézzel.


„Pár marék nerd-et leszámítva kutyát se érdekel már 2016-ban a Linux. Persze, a Schönherz koliban biztos lehet villogni vele, de el kéne fogadni, ez már egy teljesen halott platform. Hagyjuk meg szervergépnek…” Aron1988@PH Fórum

> nem kell annyi csomagot ismerni, fejben tartani, azoknak a dokumentációját is mindig átnyálazni
Azért sokszor van olyan eset, hogy egyszerűbb egy (sokak által tesztelt/használt) csomagot behívni, mint több tíz sort bepötyögni. Ha meg ezt a több tíz sort sok dokumentumban kellene használni, akkor várhatólag megcsinálod, hogy \input-tal hívod be - kvázi csináltál egy csomagot :)

Lehet \inputtal is, kvázi saját csomagként. A saját csomagod csak jobban fogod ismerni, meg érted mit csinál, nem más gányolta össze, meg később sem fog más csomagot ütni. Nem lesznek meglepetések, rejtett csomagparaméterek. A fordítási idő is sokkal gyorsabb .sty csomagok nélkül.

Lehet viszont úgy is, hogy a doksi elejére beilleszted, ez egyetlen sorral fogja terhelni a forráskódot:
\def\dontbreak{\clubpenalties 10000 10000 10000 10000 10000 \widowpenalties 10000 10000 10000 10000 1000}

Aztán csak meg kell hívni \dontbreak formában.


„Pár marék nerd-et leszámítva kutyát se érdekel már 2016-ban a Linux. Persze, a Schönherz koliban biztos lehet villogni vele, de el kéne fogadni, ez már egy teljesen halott platform. Hagyjuk meg szervergépnek…” Aron1988@PH Fórum

Értem én, mit akarsz mondani, csak az az "egyetlen sor" ebben az esetben annyi. Aztán lesz ilyen igény, az már plusz kettő sor, jajj, meg az is jó lenne, az még négy sor, stb.

Azt elismerem, hogy a saját csomagját jobban ismeri az ember - viszont nekem nincs annyi időm, hogy az igényeimet kb. lefedő csomagokat készítgessek. Meg persze tudásom sincs annyi :)
/Nem csak ilyen egyszerű igényeim vannak./

Erre nekem hiba lép fel:

! Missing number, treated as zero.

\par
l.96

?
! Missing number, treated as zero.

\par
l.96

?
! Missing number, treated as zero.

\par
l.96

?
! Missing number, treated as zero.

\par
l.96

? ^Z

Holnap kipróbálom neked, csak minimális működő kódot példának passzints ide, meg hogy milyen fordítóval dolgozol.


„Pár marék nerd-et leszámítva kutyát se érdekel már 2016-ban a Linux. Persze, a Schönherz koliban biztos lehet villogni vele, de el kéne fogadni, ez már egy teljesen halott platform. Hagyjuk meg szervergépnek…” Aron1988@PH Fórum