LaTeX, dot i pisanie inżynierki
19 III 2009, 17:32Kontynuując chwalebną tradycję publikowania źródeł latexowych swojej pracy na blogu, oto tarball ze źródłami do mojej.
Jakby ktoś potrzebował porównać oryginalne wersje niektórych plików ze zmodyfikowanymi, to można zassać całe repozytorium w mercurialu wpisując:
hg clone http://ep09.pld-linux.org/~mmazur/inz
Update: zapomniałem dodać, że buduje się toto za pierwszym razem przy pomocy make first, a później już po prostu make.
Natomiast finalny PDF wygląda tak. Czytania odradzam, nic ciekawego tam nie ma. Gdybym nie musiał, to bym czegoś takiego nie pisał.
Za to jakby ktoś chciał, to tutaj garść porad odnośnie technicznej strony klepania takiej pracy:
1. dot to jest bardzo bardzo przydatna rzecz. Prawie wszystkie obrazki wyprodukowałem bardzo szybko właśnie używając dota. Polecam screenshoty. No i moje obrazki.
2. Scribus się nie nadaje do malowania obrazków :)
3. Politechnika Opolska oczywiście nie udostępnia własnego loga w formacie wektorowym, bo po co. Na szczęście skalowanie odpowiednio dużego PNG jest całkiem sprawne i na finalnym wydruku wygląda ładnie.
4. Jeśli twoja uczelnia udostępnia styl do latexa w którym należy pisać prace, to go używaj. Jeśli nie, to się poważnie zastanów, czy warto. O ile "typowe" rzeczy są łatwe do osiągnięcia, jeśli styl je obsługuje, to już z niektórymi musiałem się tak masakrycznie nahakować... To widać po źródłach -- są najeżone jakimiś obejściami i modyfikacjami. Serio, wygląda to wybitnie paskudnie, a nie zależy mi na tyle, żeby próbować któreś z tych modyfikacji czyścić i później gdzieś mergować.
4a. Politechnika Opolska oczywiście nie udostępnia własnego stylu, bo po co.
Jeszcze raz: jeśli będziesz próbował walczyć z domyślnymi stylami, to zrobi się nieprzyjemnie. Przykłady drastyczne:
1. Żeby mieć tytuły dla tabelek wyrównywane do lewej, a tytuły dla obrazków wycentrowane, zrobiłem dwie komendy: \centercaption i \leftcaption, które zmieniają zmienną \leftcapalign na 0 albo 1 i zależnie od tego funkcja generująca podpisy (\@makecaption) zachowuje się tak, albo inaczej. Oryginalnie chciałem, żeby funkcja \@makecaption zachowywała się odpowiednio zależnie od kontekstu, ale nie znam na tyle składni texa, więc skończyło się na tym, że muszę dodać linijkę przed każdą tabelką i obrazkiem.
2. Do powyższego: żeby przy wyrównaniu do lewej mi równało do szerokości tabelki, a nie do marginesu, wygooglałem, żeby używać \ttabbox i \ffigbox przy definiowaniu tabelek i obrazków (paczka floatrow). Problem: one zwiększają countery do spisu treści o jeden, nie wiem po jaką cholerę, więc muszę najpierw rozpocząć tabelkę Oczywiście nad tym wszystkim \begin{table}, później zmniejszyć na powrót counter dla tabelek \addtocounter{table}{-1} i dopiero wsadzić zasadniczą tabelkę do \ttabbox.\leftcaption.
3. Używam \begin{lstlisting} do listingowania kodu (paczka listings). Tyle, że nie wiem, jak temu zmniejszyć czcionkę, więc przed każdym takim listowaniem jest \small, a po jest \normalsize.
3a. Do listowania konfiga takiego np. mysql-a, gdzie średnik jest komentarzem, ustawiam język na lispa, po czym po listingu wracam do domyślnej składni -- unix shella (listowałem głównie różnej maści konfigi z hashowanymi komentarzami).
3a. Powyższa komenda niektóre spacje robi z podkreślnikami. Olałem, nie chciało mi się kombinować jak to wyłączyć. I tak nikt tego nie będzie czytał.
Oczywiście nie mówię, że tego nie dałoby się zrobić czyściej, ale to nie jest konkurs na ładne źródła w latexu, więc jak zaczynało działać, to przestawałem w tym dalej grzebać. Ale są też przykłady łatwych rzeczy:
1. Żeby mieć numery tabel od 1 do N, zamiast w formacie X.N, gdzie X to numer rozdziału, wystarczy dać 2. Żeby mieć captiony dla tabel na górze, wystarczy dać 3. Paczka 4. Były jeszcze jakieś drobiazgi, ale to można znaleźć w samych źródłach, zwłaszcza, że jest historia commitów i można porównać oryginalny plik A, właśnie, licencja tego stylu bodajże zabrania modyfikowania go, więc jest tylko w formie informacyjnej, nie do dystrybucji. Jeśli ktoś by chciał rozpowszechniać tę klasę z moimi zmianami, to bodajże trzeba zmienić nazwę. Wersja tego pliku dostępna bezpośrednio przez www ma o-r na uprawnieniach, żeby google nie zindeksowało, więc można pooglądać tylko tą z mercuriala, albo tarballa. Update: problem z numerowaniem tabel/obrazków wynikał z tego, że używałem od paru lat już obsolete teTeXa, zamiast TeX Live'a. Nie zdziwiłbym się, gdyby i inne rzeczy dało się znacznie czyściej zrobić, gdybym nie zaczął od używania staroci.\counterwithout{table}{chapter} z paczki chngcntr
\floatsetup[table]{position=top} z paczki floatrow.tocloft daje dużą kontrolę nad spisami treści. Ja głównie używałem \cftsetindents do zmiany wcięć w spisach tabel i figur, bo domyślnie są takie, jak dla chapterów, co przy numeracji 1..N zamiast X.N wygląda niezbyt ładnie.\begin{adjustwidth} z paczki changepage pozwoliło mi na bardzo proste zwiększenie marginesów bocznych tylko i wyłącznie dla jednej tabelki, która była trochę szersza niż marginesy pozwalały. Domyślnie była przyklejona do lewego marginesu i wystawała za prawy (tak jak się robi z za szerokim tekstem), a ja chciałem ją mieć całkowicie wycentrowaną. No i się udało.mwrep.cls (czyli klasa, jakiej używałem, zamiast standardowego reporta) z modyfikowanym.