Precnievajuce vzorce.

Zdenek Wagner wagner at cesnet.cz
Tue May 16 12:44:53 CEST 2006


On Tue, 16 May 2006, Marian Lekavy wrote:

> Dakujem.
> TeX rozdeluje vzorce okolo znamienok, ale ja potrebujem skor nastavit,
> aby cely vzorec (resp. jeho nerozdelitelnu cast) dal automaticky na novy
> riadok tak, aby tato cast neprecnievala.
> Priklad je $\{MAB(S_{init}, S_{final})\}$, kde nie je ziaduce aby sa
> rozdelila cast pred ciarkou, ale kedze je ta cast dost dlha a precnieva
> zo stlpca, bolo by dobre, aby bola na novom riadku. TeX mi to
> automaticky nespravi, pravdepodobne preto, aby na riadku neostali prilis
> dlhe medzery medzi slovami (text je v pomerne uzkych stlpcoch). Ja by
> som na druhej strane skor akceptoval dlhsie medzery medzi slovami, nez
> text vycnievajuci pol centimetra zo stlpca.
>
To se nastavuje pomoci parametru \tolerance a pripadne \emergencystretch
(viz napr. TBN). Velke mezery ovsem take nejsou zadouci, protoze text
vypadajici stejne ohavne jako soucasne ceske noviny je spatne citelny.
Hodne pomuze hz-algoritmus, ale pokud mate v uzkem sloupci dlouhe
nezlomitelne vyrazy, nepomuze nic jineho nez zasah do textu a presouvani,
pridavani nebo vypousteni slov (viz jakakoliv dobra ucebnice typografie).

> S pozdravom,
>
> Marian Lekavy
>
>
>
> JaromĂ­r Kuben wrote:
>
> > Matej Kosik napsal(a):
> >
> >> stMarian Lekavy wrote:
> >>
> >>
> >>> Mam mensi problem so vzorcami. TeX nezalamuje vzorce obcas sa stane, ze
> >>> vzorec precnieva mimo stlpca. Ide mi hlavne o "in-line" vzorce,
> >>> ktore su
> >>> priamo v texte (nie na samostatnom riadku).
> >>> Neviete mi poradit, ako by som tomu mohol zabranit a sposobit, aby sa
> >>> takyto precnievajuci vzorec dal na novy riadok? Kedze tam je tych
> >>> vzorcov pomerne vela, nerad by som to cele formatoval natvrdo rucne.
> >>>
> >>> Dakujem.
> >>>
> >>
> >>
> >> Ahoj,
> >>
> >> Urobil som mikropokus s TeX-om a zda sa, ze on je v celku schopny
> >> rozumnym sposobom rozdelovat vzorce na viac riadkov.
> >>
> >> Tak napriklad v takomto dokumente (text si nevsimaj)
> >>
> >>
> >> http://altair.dcs.elf.stuba.sk/~kosik/tmp44/a.pdf
> >> http://altair.dcs.elf.stuba.sk/~kosik/tmp44/a.tex
> >> (zamerne dvojstlpcovy styl)
> >>
> >> som raz presiel do "math" modu a to takto:
> >>
> >>     $a+b+c$
> >>
> >> ako vidis, TeX to vysadzal v celku rozumne. T.j. ak sa to nezmestilo
> >> na ten riadok, kde ta vec zacala, tak ten "vzorec" roztrhol na
> >> vhodnom mieste a cast je na jednom a cast na druhom riadku. Nestalo
> >> sa to, ze by tam cosi "precnievalo". Mozno je prob
> >>
> >> To delenie matematickych vyrazov na viac riadkov je asi vacsinou
> >> ziaduce, teda aspon ked sa jedna o aspon trochu rozumny vzorec,
> >> rovnicu alebo nieco podobne. Zivot je ale zlozity, a ak na nejakom
> >> mieste nechces aby sa ti dany kus niecoho rozdelil na
> >>
> >>
> >>
> > Dobry den.
> >
> >>     \mbox{$a+b+c$}
> >>
> >>
> > Lepsi je
> >                      ${a+b+c}$
> > Pouceni najdete napr.v TeXbooku naruby P. Olsaka.
> >
> > V ceske sazbe by se pri deleni mely opakovat symboly +,-,= a pod.
> > To zajisti v LaTeXu napr. tento kod:
> >
> > %Opakovåní symbolů binårních operací a relací při zalomení řådku
> > %Autor: Josef Tkadlec tkadlec at fel.cvut.cz
> >
> > \relpenalty     =10000      % aby se nelåmalo v jiných neŞ oťetřených
> > \binoppenalty   =10000
> > \exhyphenpenalty=1000       % aby spĂ­ĹĄe nouzovÄ› (implicitnÄ› je 50)
> >                            % "lokĂĄlnÄ›" lze zakĂĄzat {...}
> >
> > \def\neq {\mathrel{\not=}}  % aby nedochĂĄzelo k lĂĄmĂĄnĂ­ \not=/=
> > \let\ne=\neq
> >
> > \def\OpakujPrikaz #1#2{\let #2=#1
> >  \def #1{#2\nobreak\discretionary{}{\hbox{$#2$}}{}}}
> > \def\OpakujZnak #1#2{\mathchardef #2=\mathcode`#1
> >  \activedef #1{#2\nobreak\discretionary{}{\hbox{$#2$}}{}}
> >  \uccode`\~=0 \mathcode`#1="8000 }
> > \def\activedef #1{\uccode`\~=`#1 \uppercase{\def~}}
> >
> > \OpakujPrikaz {\neq }{\neqORI}  \let \ne=\neq
> > %\OpakujPrikaz {\leq }{\leqORI}  \let \le=\leq
> > %\OpakujPrikaz {\geq }{\geqORI}  \let \ge=\geq
> > \OpakujPrikaz {\leqq}{\leqqORI}  \let \le=\leqq \let \leq=\leqq
> > \OpakujPrikaz {\geqq}{\geqqORI} \let \ge=\geqq  \let \geq=\geqq
> > \OpakujPrikaz {\cup }{\cupORI}
> > \OpakujPrikaz {\cap }{\capORI}
> > \OpakujPrikaz {\times }{\timesORI}
> > \OpakujZnak <{\lessORI}
> > \OpakujZnak >{\greaterORI}
> > \OpakujZnak +{\plusORI}
> > \AtBeginDocument {\OpakujZnak ={\eqORI} \OpakujZnak -{\minusORI}}
> >
> > Opakovani dalsich symbolu lze nadefinovat podobne.
> > Aby fungovalo to \leqq a \geqq (nerovnost s rovnitkem, ne jen s jednou
> > carkou),
> > je treba pouzit
> > \usepackage{amsfonts}
> > \DeclareMathSymbol{\leqq}         {\mathrel}{AMSa}{"35}
> > \DeclareMathSymbol{\geqq}         {\mathrel}{AMSa}{"3D}
> >
> > Zdravi
> >                 Jaromir Kuben
> >
> >> tak sa mi nerozdeli. Ostane v celku.
> >> --
> >> Matej Kosik
> >>
> >>
> >
> >
>

Zdenek Wagner
e-mail: wagner at cesnet.cz

see also http://hroch486.icpf.cas.cz/wagner/
         http://icebearsoft.euweb.cz





More information about the csTeX mailing list