🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.dtp.tex
Article #16802

Re: Wyrównanie pionowe etykiet /overbrace

#16802
From: Jarosław Sokołowski
Date: Mon, 06 Dec 2010 17:37
69 lines
4399 bytes
Pan Tomasz Minkiewicz napisał:

>> Pan Tomasz Minkiewicz ma do złożenia sporo wzorów, w których często
>> występuje overbrace do wyróżnienia skomentowanych gdzie indziej członów 
>> równania:
>
> Hej! To ładne. Czy to się robi automatycznie? Mógłbym zobaczyć kod?

Niejeden chciałby taki kod zobaczyć. Najtęższe głowy latami całymi go
poszukują. A tu tymczasem nie ma nawet pewności, że taki kod istnieje.
Chciałbym, żeby go nie było. I chyba rzeczywiście nie ma.

>>> 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. 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. 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.

> 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.

Jarek

-- 
-- Mój kochany -- rzekła maszyna -- gdybym mogła robić wszystko na n we
wszelkich możliwych językach, byłabym Maszyną Która Może Wszystko Na
Cały Alfabet, bo dowolna rzecz, w jakimś tam obcym języku na pewno
nazywa się na n. Nie ma tak dobrze.
Technical Details
Message-ID: <slrnifq7pu.9h5.jaros@falcon.lasek.waw.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!.POSTED!not-for-mail
References: <20101206115622.5f82f7b7@sultan> <slrnifpinr.vu6.jaros@falcon.lasek.waw.pl> <20101206170416.4ec629a3@sultan>

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!.POSTED!not-for-mail
From: Jarosław Sokołowski <jaros@lasek.waw.pl>
Newsgroups: pl.comp.dtp.tex
Subject: Re: Wyrównanie pionowe etykiet /overbrace
Date: Mon, 6 Dec 2010 17:37:02 +0000 (UTC)
Organization: : : :
Lines: 69
Message-ID: <slrnifq7pu.9h5.jaros@falcon.lasek.waw.pl>
References: <20101206115622.5f82f7b7@sultan> <slrnifpinr.vu6.jaros@falcon.lasek.waw.pl> <20101206170416.4ec629a3@sultan>
NNTP-Posting-Host: 87-205-249-190.adsl.inetia.pl
Mime-Version: 1.0
X-Trace: news.onet.pl 1291657022 19021 87.205.249.190 (6 Dec 2010 17:37:02 GMT)
X-Complaints-To: niusy@onet.pl
NNTP-Posting-Date: Mon, 6 Dec 2010 17:37:02 +0000 (UTC)
User-Agent: slrn/0.9.8.1 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit