Article View: pl.comp.dtp.tex
Article #16803Re: Wyrównanie pionowe etykiet /overbrace
From: Tomasz Minkiewicz
Date: Tue, 07 Dec 2010 11:34
Date: Tue, 07 Dec 2010 11:34
88 lines
5435 bytes
5435 bytes
On Mon, 6 Dec 2010 17:37:02 +0000 (UTC)
Jarosław Sokołowski <jaros@lasek.waw.pl> wrote:
> >>> Jest z tym jednak pewien problem estetyczny. Otóż niektóre nazwane
> >>> człony w obrębie jednego równania są niskie, a inne to całki czy piętrowe
> >>> ułamki. W takiej sytuacji zarówno klamerka, jak i tekst nad nią skacze
> >>> w pionie, a to wygląda nieładnie.
> >>> Czy da się zrobić, żeby teksty nad klamrami były wyrównane do wspólnej
> >>> linii bazowej? Klamry chyba lepiej nie, bo jeśli są blisko równania to
> >>> łatwiej jednym rzutem oka określić, co dokładnie obejmują, ale jeśli
> >>> i one miałyby być wyrównane, to jest to do przyjęcia.
> >>>
> >>> Da się to jakoś elegancko zrobić?
> >>
> >> Nie wiem czy to elegancko, ale ludzie w takich sytuacjach często radzą
> >> sobie umieszczając w odpowiednich miejscach konstrukcję podobną do tej,
> >> którą D.E. Knuth zdefiniował jako "\strut".
> >>
> >> W praktyce jest to coś takiego: \vrule height8.5pt depth3.5pt width0pt.
> >> Przed każdy opisem (albo po) wstawiamy taki zerowej szerokości, a więc
> >> niewidoczny, prostokąt, który jednak ma określoną wysokość i głębokość.
> >
> > Ale nie mam pojęcia, jaką poszczególne \vrule powinny mieć głębokość.
> > Człony równania mają wysokość bardzo różną. Dobieranie wartości
> > na oko raczej nie wchodzi w grę. Czy jestem w stanie dobrać się
> > w kodzie do położenia i wysokości etykiet poszczególnych członów
> > równania?
>
> Dowcip polega na tym, że to nie mają być "poszczególne \vrule", tylko
> jedno takie samo "\vrule" dla wszystkich elementów składających się na
> wiersz wzoru matematycznego. W wierszu tym występuje wiele elementów
> opisanych jako \overbrace{X_n}^{Y_n}. Kolejne wyrażenia X mają różną
> wysokość, co powoduje, że i klamry nie stoją w jednej linii.
Tak.
> A wyrażenia
> Y nad klamrami mają różną głębokość, co z kolei sprawia, że ich linia
> bazowa jest różnie oddalona od klamer.
Nie.
Linia bazowa etykiet jest zawsze tak samo oddalona od klamer.
Właśnie o to mi chodzi, żeby była oddalona różnie.
> Proponowałem zrobić coś takiego:
>
> \def\Vh{\vrule width0pt height20pt depth0pt}
> \def\Vd{\vrule width0pt height0pt depth10pt}
>
> \overbrace{\Vh X_1}^{\Vd Y_1} ... \overbrace{\Vh X_n}^{\Vd Y_n}
>
> Odpowiednie wysokości i głębokości w definicjach należy dobrać i ustawić
> przed ich użyciem we wzorze. Być może przed każdym z osobna, ale jest
> nadzieja, że te same wartości wystarczą dla całego tekstu.
Coś mi umyka w Twojej propozycji, bo wydaje mi się, że ją rozumiem, ale
nie widzę, jak ona się ma do mojego problemu. Ja nie chcę zmieniać
położenia wyrażeń pod klamrami – \Vh jest mi niepotrzebne. Za to \Vd mi
nie wystarczy. Musiałbym zdefiniować kilkadziesiąt różnych \VdXX
(ręcznie i na oko). Nie ma jednej wartości przesunięcia, która by się
stosowała do wszystkich równań, a nawet wszystkich członów jednego
równania.
Przykład: http://www.geo.uni.lodz.pl/~tommink/033.pdf
Litera B jest znacznie niżej niż D, litery A i C są na tej samej
wysokości, obie o włos niżej niż D. Litera D, która jest najwyżej,
wyznacza poziom, na którym chciałbym mieć również litery A, B i C.
Jeśli trzeba, można razem z literami A, B i C podnieść „ich” klamry.
Wyrażenia pod klamrami mają zostać tam gdzie są, ich środki wyrównane
w pionie.
Da się tak?
> > Nie dałoby się po prostu jakoś powiedzieć texowi: wyrównaj górną
> > krawędź wskazanego boxa z górną krawędzią zewnętrznego boxa aktualnego
> > otoczenia matematycznego?
>
> Nie sądzę, że się da. Gdyby TeXowi dało się prostymi słowami powiedzieć
> wszystko, to by te słowa przestały być proste. TeX w łatwy sposób robi
> to, co jest typowe, a nietypowe rzeczy trzeba robić nietypowo.
W programie graficznym opartym o koncepcję boxową (czy blokową) trudno
uznać za operację nietypową wyrównywanie dowolnych krawędzi dowolnych
boxów (zawierających się w sobie czy sąsiadujących). Właściwie trudno
wymyślić operację bardziej typową.
--
Tomasz Minkiewicz <tommink@gmail.com>
Technical Details
Message-ID:
<20101207123443.70fcf824@sultan>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!news.man.lodz.pl!not-for-mailReferences:
<20101206115622.5f82f7b7@sultan> <slrnifpinr.vu6.jaros@falcon.lasek.waw.pl> <20101206170416.4ec629a3@sultan> <slrnifq7pu.9h5.jaros@falcon.lasek.waw.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!news.man.lodz.pl!not-for-mail
From: Tomasz Minkiewicz <tommink@gmail.com>
Newsgroups: pl.comp.dtp.tex
Subject: Re: Wyrównanie pionowe etykiet /overbrace
Date: Tue, 7 Dec 2010 12:34:43 +0100
Organization: LODMAN Usenet Server
Lines: 88
Message-ID: <20101207123443.70fcf824@sultan>
References: <20101206115622.5f82f7b7@sultan> <slrnifpinr.vu6.jaros@falcon.lasek.waw.pl> <20101206170416.4ec629a3@sultan> <slrnifq7pu.9h5.jaros@falcon.lasek.waw.pl>
NNTP-Posting-Host: 212.191.74.225
Mime-Version: 1.0
X-Trace: newsfeed1.man.lodz.pl 1291721319 6189 212.191.74.225 (7 Dec 2010 11:28:39 GMT)
X-Complaints-To: abuse@man.lodz.pl
NNTP-Posting-Date: Tue, 7 Dec 2010 11:28:39 +0000 (UTC)
X-Newsreader: Claws Mail 3.7.7 (GTK+ 2.20.1; i486-pc-linux-gnu)
X-Face: .[F9/EA'3Zn~G-.xp)[~Mv:Lgw*41%16^o2r_Yk9Do!+mtGH"Q4IaN$ZOhX`+^jO?3tQJ.cZV`+hv$CWG~]_-X5N,u;zTQyDJz_H:d,)cb9z4?mk#N;!GCF_7;ha:%{#G^@=6>[iK0b+4{?[(v-b/9rUk:
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit