Thread View: pl.comp.dtp.tex
19 messages
19 total messages
Started by Tomasz Minkiewicz
Mon, 06 Dec 2010 10:56
Wyrównanie pionowe etykiet /overbrace
Author: Tomasz Minkiewicz
Date: Mon, 06 Dec 2010 10:56
Date: Mon, 06 Dec 2010 10:56
23 lines
1872 bytes
1872 bytes
Witam, Mam 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. 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ć? TIA PS. Aha, byłbym zapomniał. Środowisko XeLaTeX, a z pakietów „matematycznych” w tej chwili tylko amsmath i mathspec. -- Tomasz Minkiewicz <tommink@gmail.com>
Re: Wyrównanie pionowe etykiet /overbrace
Author: Jarosław Sokołowski
Date: Mon, 06 Dec 2010 11:37
Date: Mon, 06 Dec 2010 11:37
31 lines
2213 bytes
2213 bytes
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: > 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ść. Warto znać takie sztuczki, to się bardzo często przydaje. Jarek -- A czy to pięknie, czy to źle, to każdy chłopiec wiedzieć powinien Ole-la-li, ole-li-la a czy nam coś ta wiedza da?
Re: Wyrównanie pionowe etykiet /overbrace
Author: Tomasz Minkiewicz
Date: Mon, 06 Dec 2010 16:04
Date: Mon, 06 Dec 2010 16:04
40 lines
3004 bytes
3004 bytes
On Mon, 6 Dec 2010 11:37:31 +0000 (UTC) Jarosław Sokołowski <jaros@lasek.waw.pl> wrote: > 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? > > 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? 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? -- Tomasz Minkiewicz <tommink@gmail.com>
Re: Wyrównanie pionowe etykiet /overbrace
Author: Jarosław Sokołowski
Date: Mon, 06 Dec 2010 17:37
Date: Mon, 06 Dec 2010 17:37
69 lines
4399 bytes
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.
Re: Wyrównanie pionowe etykiet /overbrace
Author: 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>
Re: Wyrównanie pionowe etykiet /overbrace
Author: Michal Jankowski
Date: Tue, 07 Dec 2010 12:05
Date: Tue, 07 Dec 2010 12:05
25 lines
2229 bytes
2229 bytes
Tomasz Minkiewicz <tommink@gmail.com> writes: > 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? Przecież ideą 'strut' jest stawianie go NA linii bazowej wzoru, a nie NAD wzorem. Od linii bazowej do liter A B C D potrzebujesz tę samą odległość, zatem jeden i ten sam strut, a nie 4 różne. MJ
Re: Wyrównanie pionowe etykiet /overbrace
Author: Tomasz Minkiewicz
Date: Tue, 07 Dec 2010 12:40
Date: Tue, 07 Dec 2010 12:40
47 lines
3320 bytes
3320 bytes
On Tue, 07 Dec 2010 13:05:03 +0100
Michal Jankowski <michalj@fuw.edu.pl> wrote:
> Tomasz Minkiewicz <tommink@gmail.com> writes:
>
> > 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?
>
> Przecież ideą 'strut' jest stawianie go NA linii bazowej wzoru, a nie
> NAD wzorem. Od linii bazowej do liter A B C D potrzebujesz tę samą
> odległość, zatem jeden i ten sam strut, a nie 4 różne.
Ha! To nareszcie rozumiem, na czym polega rozwiązanie proponowane
przez Jarosława Sokołowskiego, czego wcześniej nie rozumiałem.
Ale nie rozumiałem dlatego, że ten strut wyznaje najwyraźniej inne
idee i uparcie wstawia się nad klamrą, a nie na linii bazowej.
http://www.geo.uni.lodz.pl/~tommink/033strute.pdf
\def\Vh{\vrule width1pt height20pt depth20pt}
\[
\overbrace{\frac{\partial p_s}{\partial t}}^{\Vh \mbox{A}} =
- \overbrace{\mathbf{V}_s \cdot \nabla p_{s}}^{\Vh \mbox{B}}
- \overbrace{w_{s} \frac{\partial p}{\partial z}}^{\Vh \mbox{C}}
- \overbrace{\int_0^{p_s} (\nabla \cdot \mathbf{V}) dp}^{\Vh \mbox{D}}
\]
PS. Próbowałem zmienić \mbox na \text, myśląc, że może rodzaje
wydzielanych przez nie pudełek są jakoś różne, ale nie pomogło.
--
Tomasz Minkiewicz <tommink@gmail.com>
Re: Wyrównanie pionowe etykiet /overbrace
Author: Michal Jankowski
Date: Tue, 07 Dec 2010 13:05
Date: Tue, 07 Dec 2010 13:05
29 lines
2237 bytes
2237 bytes
Tomasz Minkiewicz <tommink@gmail.com> writes:
> Ha! To nareszcie rozumiem, na czym polega rozwiązanie proponowane
> przez Jarosława Sokołowskiego, czego wcześniej nie rozumiałem.
> Ale nie rozumiałem dlatego, że ten strut wyznaje najwyraźniej inne
> idee i uparcie wstawia się nad klamrą, a nie na linii bazowej.
>
> http://www.geo.uni.lodz.pl/~tommink/033strute.pdf
>
> \def\Vh{\vrule width1pt height20pt depth20pt}
> \[
> \overbrace{\frac{\partial p_s}{\partial t}}^{\Vh \mbox{A}} =
No bo go wstawiasz nad klamrą, a nie pod. Wstaw go pod, do pierwszego
paramteru \overbrace, a nie do tego, co po znaku ^ (no i strut
naprawdę ma mieć szerokość i głębokość zero, a nie ileśtam).
A poza tym można sobie wysokość struta obliczyć biorąc najwyższy
fragment wzoru, żeby się nie męczyć ze zgadywaniem wysokości, na
przykład:
\newlength{\strutheight}
\settoheight{\strutheight}{\mbox{$\displaystyle\int\limits_1^2$}}
\def\Vh{\vrule width0pt height\strutheight depth0pt}
\begin{equation}
x = \overbrace{\Vh\int\limits_1^2 2x^2}^{A} +
\overbrace{\Vh 3(x-1)(x-2)}^{B}
\end{equation}
MJ
Re: Wyrównanie pionowe etykiet /overbrace
Author: Jarosław Sokołowski
Date: Tue, 07 Dec 2010 13:07
Date: Tue, 07 Dec 2010 13:07
44 lines
2712 bytes
2712 bytes
Pan Tomasz Minkiewicz nareszcie rozumie, na czym polega rozwiązanie
proponowane przez Jarosława Sokołowskiego, czego wcześniej nie rozumiał:
> Ale nie rozumiałem dlatego, że ten strut wyznaje najwyraźniej inne
> idee i uparcie wstawia się nad klamrą, a nie na linii bazowej.
>
> http://www.geo.uni.lodz.pl/~tommink/033strute.pdf
No faktycznie, patrząc na sam wynik, można by przypuszczać, że ktoś
przy pisaniu nieźle się wstawił.
> \def\Vh{\vrule width1pt height20pt depth20pt}
> \[
> \overbrace{\frac{\partial p_s}{\partial t}}^{\Vh \mbox{A}} =
> - \overbrace{\mathbf{V}_s \cdot \nabla p_{s}}^{\Vh \mbox{B}}
> - \overbrace{w_{s} \frac{\partial p}{\partial z}}^{\Vh \mbox{C}}
> - \overbrace{\int_0^{p_s} (\nabla \cdot \mathbf{V}) dp}^{\Vh \mbox{D}}
> \]
Ale to nie tak przecież miało być! Wywalmy z tego wzoru wstawione tam
w czterech miejscach "\Vh", a następnie przed wzorem dodajmy takie
zaklęcia:
\let\Overbrace\overbrace
\def\overbrace#1{\Overbrace{\Vh{#1}}}
\def\Vh{\vrule width0pt height15pt depth0pt}
\[
\overbrace{\frac{\partial p_s}{\partial t}}^{\mbox{A}} =
- \overbrace{\mathbf{V}_s \cdot \nabla p_{s}}^{\mbox{B}}
- \overbrace{w_{s} \frac{\partial p}{\partial z}}^{\mbox{C}}
- \overbrace{\int_0^{p_s} (\nabla \cdot \mathbf{V}) dp}^{\mbox{D}}
\]
I co, może być? Wiem nie tak to miało wyglądać. Ale, po pierwsze -- tak
też jest dobrze, a może nawet lepiej (tak mi się wydaje), a po drugie
-- tak jest łatwiej (tego jestm pewien).
Tu się struciem etykiet w ogóle nie zajmowałem, bo one wszystkie
jednakie. Ale mechanizm jest ten sam, jak trzeba, to można tam
zastosować strut dolny.
--
Jarek
Re: Wyrównanie pionowe etykiet /overbrace
Author: Jarosław Sokołowski
Date: Tue, 07 Dec 2010 13:20
Date: Tue, 07 Dec 2010 13:20
25 lines
2142 bytes
2142 bytes
Pan Tomasz Minkiewicz napisał: >> 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ą. TeX taki nie jest. Tu ponad koncepcją boksów stoi koncepcja wiersza (linijki tekstu). Widać to choćby w poleceniu \vtop, robiącym rzecz podobną do \vbox (nie pamiętam jaki jest odpowiednik \vtop w LaTeXu). Ustawienie obok siebie kilku \vtop powoduje, że do linii bazowej zrównują się linie najwyższych wierszy poszczególnych pudełek. Mówiąc inaczej, wysokością \vtop jest wysokośc pierwszego wiersza, a głębokością cała reszta. Jak się chce coś równać "do sufitu", potrzebna już jest (drobna) sztuczka. A to co się dzieje wewnątrz trybu matematycznego, to już całkiem inna historia. -- Jarek
Re: Wyrównanie pionowe etykiet /overbrace
Author: Jarosław Sokołowski
Date: Tue, 07 Dec 2010 14:40
Date: Tue, 07 Dec 2010 14:40
31 lines
2181 bytes
2181 bytes
Tak napisałem niedawno:
> A to co się dzieje wewnątrz trybu matematycznego, to już całkiem inna
> historia.
Postanowiłem zobaczyć co się dzieje we wnętrzu \overbrace. Dzieje się tak:
\def\overbrace#1{\mathop{\vbox{\m@th\ialign{##\crcr\noalign{\kern3\p@}
\downbracefill\crcr\noalign{\kern3\p@\nointerlineskip}
$\hfil\displaystyle{#1}\hfil$\crcr}}}\limits}
No to postanowiłem zrobić wyrównywanie do sufitu i zmodyfikowałem
(przykryłem) definicję wpisując w swój manuskrypt coś takiego:
\newdimen\Oh \Oh=25pt
\catcode`\@=11
\def\overbrace#1{\mathop{\vbox to \Oh{\vss
\m@th\ialign{##\crcr\noalign{\kern3\p@}
\downbracefill\crcr\noalign{\kern3\p@\nointerlineskip}
$\hfil\displaystyle{#1}\hfil$\crcr}}}\limits}
\catcode`\@=12
No i wyszło tak jak miało wyjść -- wzór idzie sobie dołem, nad nim falują
klamry, a etykiety u góry rządkiem w wyznaczonej odległości (25pt).
Ja to robiłem w plainie, nie wiem czy LaTeX nie ma tego \overbrace jakoś
inaczej zdefiniowanego, nie sprawdzałem nawet. Ale idea chyba jasna,
jak w LaTeXu jest inaczej, to każdy powinien sobie z przeróbką poradzić.
--
Jarek
Re: Wyrównanie pionowe etykiet /overbrace
Author: Tomasz Minkiewicz
Date: Tue, 07 Dec 2010 16:05
Date: Tue, 07 Dec 2010 16:05
58 lines
3461 bytes
3461 bytes
On Tue, 7 Dec 2010 13:07:58 +0000 (UTC)
Jarosław Sokołowski <jaros@lasek.waw.pl> wrote:
> Pan Tomasz Minkiewicz nareszcie rozumie, na czym polega rozwiązanie
> proponowane przez Jarosława Sokołowskiego, czego wcześniej nie rozumiał:
>
> > Ale nie rozumiałem dlatego, że ten strut wyznaje najwyraźniej inne
> > idee i uparcie wstawia się nad klamrą, a nie na linii bazowej.
> >
> > http://www.geo.uni.lodz.pl/~tommink/033strute.pdf
>
> No faktycznie, patrząc na sam wynik, można by przypuszczać, że ktoś
> przy pisaniu nieźle się wstawił.
>
> > \def\Vh{\vrule width1pt height20pt depth20pt}
> > \[
> > \overbrace{\frac{\partial p_s}{\partial t}}^{\Vh \mbox{A}} =
> > - \overbrace{\mathbf{V}_s \cdot \nabla p_{s}}^{\Vh \mbox{B}}
> > - \overbrace{w_{s} \frac{\partial p}{\partial z}}^{\Vh \mbox{C}}
> > - \overbrace{\int_0^{p_s} (\nabla \cdot \mathbf{V}) dp}^{\Vh \mbox{D}}
> > \]
>
> Ale to nie tak przecież miało być! Wywalmy z tego wzoru wstawione tam
> w czterech miejscach "\Vh",
Przecież to nie był mój pomysł, żeby je tam wstawić. Czy ja wyglądam,
jakbym umiał sam coś takiego wymyślić?
> a następnie przed wzorem dodajmy takie
> zaklęcia:
>
> \let\Overbrace\overbrace
> \def\overbrace#1{\Overbrace{\Vh{#1}}}
> \def\Vh{\vrule width0pt height15pt depth0pt}
>
> \[
> \overbrace{\frac{\partial p_s}{\partial t}}^{\mbox{A}} =
> - \overbrace{\mathbf{V}_s \cdot \nabla p_{s}}^{\mbox{B}}
> - \overbrace{w_{s} \frac{\partial p}{\partial z}}^{\mbox{C}}
> - \overbrace{\int_0^{p_s} (\nabla \cdot \mathbf{V}) dp}^{\mbox{D}}
> \]
>
> I co, może być? Wiem nie tak to miało wyglądać. Ale, po pierwsze -- tak
> też jest dobrze, a może nawet lepiej (tak mi się wydaje), a po drugie
> -- tak jest łatwiej (tego jestm pewien).
Po dyskusji ustaliliśmy, że i naszym zdaniem tak jest lepiej.
> Tu się struciem etykiet w ogóle nie zajmowałem, bo one wszystkie
> jednakie. Ale mechanizm jest ten sam, jak trzeba, to można tam
> zastosować strut dolny.
Są i pozostaną jednakie. We wszystkich wzorach są proste, jednoliterowe.
Dziękuję.
--
Tomasz Minkiewicz <tommink@gmail.com>
Re: Wyrównanie pionowe etykiet /overbrace
Author: Tomasz Minkiewicz
Date: Tue, 07 Dec 2010 16:06
Date: Tue, 07 Dec 2010 16:06
43 lines
2989 bytes
2989 bytes
On Tue, 07 Dec 2010 14:05:23 +0100
Michal Jankowski <michalj@fuw.edu.pl> wrote:
> Tomasz Minkiewicz <tommink@gmail.com> writes:
>
> > Ha! To nareszcie rozumiem, na czym polega rozwiązanie proponowane
> > przez Jarosława Sokołowskiego, czego wcześniej nie rozumiałem.
> > Ale nie rozumiałem dlatego, że ten strut wyznaje najwyraźniej inne
> > idee i uparcie wstawia się nad klamrą, a nie na linii bazowej.
> >
> > http://www.geo.uni.lodz.pl/~tommink/033strute.pdf
> >
> > \def\Vh{\vrule width1pt height20pt depth20pt}
> > \[
> > \overbrace{\frac{\partial p_s}{\partial t}}^{\Vh \mbox{A}} =
> No bo go wstawiasz nad klamrą, a nie pod. Wstaw go pod, do pierwszego
> paramteru \overbrace, a nie do tego, co po znaku ^ (no i strut
> naprawdę ma mieć szerokość i głębokość zero, a nie ileśtam).
>
> A poza tym można sobie wysokość struta obliczyć biorąc najwyższy
> fragment wzoru, żeby się nie męczyć ze zgadywaniem wysokości, na
> przykład:
>
> \newlength{\strutheight}
> \settoheight{\strutheight}{\mbox{$\displaystyle\int\limits_1^2$}}
> \def\Vh{\vrule width0pt height\strutheight depth0pt}
> \begin{equation}
> x = \overbrace{\Vh\int\limits_1^2 2x^2}^{A} +
> \overbrace{\Vh 3(x-1)(x-2)}^{B}
> \end{equation}
O! o! o! O to chodziło! Właśnie to ustalanie wysokości było mi
potrzebne, ale na wszelki wypadek nie pytałem, bo nie byłem pewien,
czy potrafię wykorzystać i liczyłem na gotowca.
Idę spróbować to wszystko (razem z przedefiniowaniem overbrace'a) owinąć
w jedną komendę i mieć na przyszłość. Jakbym się długo nie pokazywał,
to nie ma powodu do niepokoju. ;)
Dziękuję.
--
Tomasz Minkiewicz <tommink@gmail.com>
Re: Wyrównanie pionowe etykiet /overbrace
Author: Mirek
Date: Tue, 07 Dec 2010 16:12
Date: Tue, 07 Dec 2010 16:12
16 lines
1794 bytes
1794 bytes
On wto, 07 gru 2010 12:34:43 in article news:<20101207123443.70fcf824@sultan>
Tomasz Minkiewicz wrote:
> 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?
Użyć \vphantom{najwyższy element}:
"LaTeX Mathmode" by Herbert Voß.
http://tug.ctan.org/tex-archive/info/math/voss/mathmode/Mathmode.pdf
str. 109: 63.3 Vertical alignment of different braces
Re: Wyrównanie pionowe etykiet /overbrace
Author: Jarosław Sokołowski
Date: Tue, 07 Dec 2010 21:34
Date: Tue, 07 Dec 2010 21:34
14 lines
1571 bytes
1571 bytes
Pan Tomasz Minkiewicz napisał:
>> Ale to nie tak przecież miało być! Wywalmy z tego wzoru wstawione tam
>> w czterech miejscach "\Vh",
>
> Przecież to nie był mój pomysł, żeby je tam wstawić. Czy ja wyglądam,
> jakbym umiał sam coś takiego wymyślić?
Wymyślić to co innego, zgubić -- co innego. Ja proponowałem dwukrotne
użycie struta, raz jako rozpier górny, drugi raz jako rozpier dolny.
O tak: \overbrace{\Vh X_1}^{\Vd Y_1}.
--
Jarek
Re: Wyrównanie pionowe etykiet /overbrace
Author: Jarosław Sokołowski
Date: Tue, 07 Dec 2010 21:37
Date: Tue, 07 Dec 2010 21:37
40 lines
2708 bytes
2708 bytes
Pan Tomasz Minkiewicz napisał:
>> A poza tym można sobie wysokość struta obliczyć biorąc najwyższy
>> fragment wzoru, żeby się nie męczyć ze zgadywaniem wysokości, na
>> przykład:
>>
>> \newlength{\strutheight}
>> \settoheight{\strutheight}{\mbox{$\displaystyle\int\limits_1^2$}}
>> \def\Vh{\vrule width0pt height\strutheight depth0pt}
>> \begin{equation}
>> x = \overbrace{\Vh\int\limits_1^2 2x^2}^{A} +
>> \overbrace{\Vh 3(x-1)(x-2)}^{B}
>> \end{equation}
>
> O! o! o! O to chodziło! Właśnie to ustalanie wysokości było mi
> potrzebne, ale na wszelki wypadek nie pytałem, bo nie byłem pewien,
> czy potrafię wykorzystać i liczyłem na gotowca.
>
> Idę spróbować to wszystko (razem z przedefiniowaniem overbrace'a) owinąć
> w jedną komendę i mieć na przyszłość. Jakbym się długo nie pokazywał,
> to nie ma powodu do niepokoju. ;)
Panamichałowy pomysł najłatwiej będzie zrealizować, jeśli \overbrace
przedefiniuje się dwa razy w jednym makrze. Pierwszy raz w celach
pomiarowych -- usuwając w ogóle klamry i opisy nad nimi. Będzie to
wtedy definicja trywialna \def\overbrace#1{#1}. W owijającej komendzie
parametrem będzie mógł być wtedy cały wzór.
Gdyby zwyciężyła koncepcja umieszczenia wszystkich klamer na jednym
poziomie, wystarczy przy drugim przedefiniowywaniu przenieść \vss
z miejsca na miejsce:
\def\overbrace#1{\mathop{\vbox to \Oh{%
\m@th\ialign{##\crcr\noalign{\kern3\p@}
\downbracefill\crcr\noalign{\vss\kern3\p@\nointerlineskip}
$\hfil\displaystyle{#1}\hfil$\crcr}}}\limits}
--
Jarek
Re: Wyrównanie pionowe etykiet /overbrace
Author: Zeissmann
Date: Wed, 08 Dec 2010 00:29
Date: Wed, 08 Dec 2010 00:29
9 lines
2122 bytes
2122 bytes
Przepraszam za ten mały off-topic, ale niniejsza wymiana wartości intelektualnych zwróciła moją uwagę na pewien drobiazg. Otóż w wiadomościach Pana Jarosława Sokołowskiego nie ma polskich krzaczków (a przynajmniej u mnie ich nie widać), ale w cytatach z tych wiadomości zamieszczanych przez Pana Minkiewicza te krzaczki już są obecne? Skąd się bierze ten problem, który występuje (o ile się nie mylę) tylko w przypadku Pana Jarosława? Pytam, gdyż brak owych symboli poważnie utrudnia mi czytanie -- skądinąd niezmiernie pouczających -- wynurzeń autora.
Re: Wyrównanie pionowe etykiet /overbrace
Author: Mirek
Date: Wed, 08 Dec 2010 10:05
Date: Wed, 08 Dec 2010 10:05
33 lines
2618 bytes
2618 bytes
On śro, 08 gru 2010 01:29:04 in article news:<c9954c04-9428-4b29-953d-b3481aa65a21@q18g2000vbk.googlegroups.com> Zeissmann wrote: > Przepraszam za ten mały off-topic, ale niniejsza wymiana wartości > intelektualnych zwróciła moją uwagę na pewien drobiazg. Otóż w > wiadomościach Pana Jarosława Sokołowskiego nie ma polskich krzaczków google psuje. Psuje posty zakodowane w iso-8859-2. Robi to losowo - nie potrafie znalezc prawidłowosci. W innym watku: http://groups.google.com/group/pl.comp.dtp.tex/browse_frm/thread/627e3dc5196df35b tekst Jarka jest czytelny, a zakodowany jest tak samo jak w tym watku. > (a przynajmniej u mnie ich nie widać), ale w cytatach z tych > wiadomości zamieszczanych przez Pana Minkiewicza te krzaczki już są > obecne? Skąd się bierze ten problem, Bo krzaczki sa i normalny czytnik sobie z nimi radzi. > który występuje (o ile się nie > mylę) tylko w przypadku Pana Jarosława? Pytam, gdyż brak owych symboli Nie w googlu moje posty tez bywaja uszkodzone. O to test googlegonkow : acenlosxz ACELNOSXZ ąćęłńóśźż ĄĆĘŁŃÓŚŹŻ < pewnie bedzie kaszana > poważnie utrudnia mi czytanie -- skądinąd niezmiernie pouczających -- > wynurzeń autora. Zrezygnuj z czytnika googlowskiego na rzecz normalnego nntp-readera.
Re: Wyrównanie pionowe etykiet /overbrace
Author: Zeissmann
Date: Wed, 08 Dec 2010 22:11
Date: Wed, 08 Dec 2010 22:11
9 lines
1623 bytes
1623 bytes
> acenlosxz ACELNOSXZ > ąćęłńóśźż ĄĆĘŁŃÓŚŹŻ < pewnie bedzie kaszana No faktycznie, w googlach jest kaszana... > Zrezygnuj z czytnika googlowskiego na rzecz normalnego nntp-readera. Dzięki za dobrą radę, faktycznie jest to nieco praktyczniejsze. W tym momencie piszę już poprzez Pan.
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