Archiwum: March, 2008

Bibliografia i LaTeX (cz.1)

Nadchodzi w karierze taki moment, w którym pisane przez nas prace, opisy i raporty trzeba zacząć wyposażać w przyzwoitą bibliografię. LaTeX jest na to w 100% przygotowany i tylko czeka żeby nas wyręczyć z wielu żmudnych czynności. Niestety jak to zwykle bywa najpierw trzeba wiedzieć jak to ugryźć, a potem będzie z górki.

W tej części opiszę jak się bibliografie tworzy i stosuje w LaTeX-u, a w następnym wpisie postaram się pokazać różne opcje i modyfikacje.

Do tworzenia bibliografii wykorzystywany jest silnik BibTeX, nie wymaga on dołączania dodatkowych pakietów, wymaga za to (niestety) trochę gimnastyki przy kompilacji dokumentu (ale po wykorzystaniu tego, o czym napisałem ostatnio nie będzie nam to sprawiało kłopotów).

Informacje o bibliografii musimy wpisać zgodnie ze wzorcem do pliku z rozszerzeniem .bib i takiej samej nazwie jak główny plik naszego projektu. Dla każdej pozycji musimy podać jej rodzaj (dziś na przykładzie książki [book], pozostałe rodzaje omówię następnym razem) oraz podstawowe dane. Dla książki wymagane informacje to autor, tytuł, wydawnictwo i rok.

Stworzyłem sobie bibliografię z trzema książkami, które akurat miałem na biurku:

@book{historiafizyki,
author =       "Andrzej Kajetan Wróblewski",
title =        "Historia Fizyki",
publisher =    "Wydawnictwo Naukowe PWN",
year =         "2007",
address =      "Warszawa"
}

@book{book:1kropka,
author =       "C. Kittel, W. D. Knight, M. A. Ruderman",
title =        "mechanika",
publisher =    "Państwowe Wydawnictwo Naukowe",
year =         "1973",
address =      "Warszawa"
}

@book{book:3kropka,
author =       "F. C. Crawford",
title =        "fale",
publisher =    "Państwowe Wydawnictwo Naukowe",
year =         "1975",
address =      "Warszawa"
}

Znaczek @ oznacza nowy rekord. Bezpośrednio po nim podajemy rodzaj publikacji, w naszym przypadku book. Wszystkie pozostałe informacje podajemy w nawiasach klamrowych. Po pierwsze musimy podać nazwę publikacji – używając tej nazwy będziemy mogli odwołać się do publikacji w dokumencie. Następnie oddzielając przecinkami podajemy pozostałe informacje o publikacji w sposób identyczny jak w przykładzie.

Zapisujemy ten plik i zabieramy się za skorzystanie z tak stworzonej bibliografii w naszym dokumencie.

Zaraz po \begin{document} umieszczamy informację o stylu bibliografii:

\bibliographystyle{plain}

W miejscu, w którym chcemy mieć bibliografię (jako listę pozycji) wstawiamy:

\bibliography{nazwa_pliku_z_bibliografią}

Do bibliografii możemy odwoływać się za pomoca poleciania \cite{}, przykładowo:

\cite{historiafizyki}
\cite[s. 120-123]{book:1kropka}
\cite{book:3kropka}

Teraz jak zmusić bibliografię do zadziałania? Sama kompilacja LaTeX-em jest niewystarczająca. Trzeba też użyć programu bibtex. Najlepiej postępować według schematu:

2008-03-26_192550.png

Wtedy wszystkie numeracje zostaną prawidłowo wpisane do dokumentu.

Należy pamiętać, że bibliografia będzie zawierała tylko te pozycje, do których odwołamy się w tekście!

Najlepiej będzie zautomatyzować proces kompilacji w identyczny sposób jak opisałem poprzednio. Otwieramy plik build.bat i po kompilacji LaTeX-em dodajemy BibTeX i jeszcze 2 razy LaTeX. Plik buil.bat powinien wyglądać tak:

LaTeX + LEd + PDF + BibTeX

Teraz wystarczy wykonać “build all”:

LaTeX + LEd + PDF + BibTeX

I gotowe! Możemy podziwiać bibliografię:

LaTeX + LEd + PDF + BibTeX

Opisałem ogólną metodę postępowania. Następnym razem powiem o poleceniu \cite{}, o różnych rodzajach publikacji w bibliografii oraz o różnych jej stylach. Zanim to nastąpi zachęcam do samodzielnych eksperymentów.

goto

| Komentarze (29)

LaTeX + LEd + PDF

Pisząc dokument za pomocą edytora LEd mamy do dyspozycji kilka metod jego kompilacji, między innymi:

  • LaTeX (F9) – wynikiem tej kompilacji jest plik w formacie .dvi.
  • PDFLaTeX (F7) – tutaj wynikiem jest plik .pdf

Wadą pierwszego kompilatora jest plik wynikowy w mało zjadliwym formacie, a zaletą fakt, że ten właśnie plik jest wykorzystywany do podglądu w głównym oknie LEd-a. Kompilator PDFLaTeX od razu generuje nam PDF-a, ale nie widzimy efektu bezpośrednio w podglądzie.

Można oczywiście wykonywać obydwie kompilacje. Do czasu. Problem zaczyna się gdy mamy w dokumencie grafiki. Jeżeli są to grafiki w formacie EPS, czyli takim który dla LaTeX-a jest bardzo odpowiedni, nie będziemy mieli problemów z kompilacją LaTeX-em. Niestety PDFLaTeX już nie zadziała – po prostu nie rozumie formatu EPS. Wtedy z pomocą przychodzi nam niebieski guziczek PDF po naciśnięciu którego plik .dvi jest konwertowany do .pdf:

LEd PDF

Niby wszystko pięknie, ale… Gdy w naszym dokumencie korzystamy z pakietu \usepackage{hyperref} i obrazków mamy problem. Pakiet ten powoduje, że wygenerowany dokument PDF ma dynamiczne wszystkie odnośniki (np. w spisie treści po kliknięciu na daną sekcje od razu nas do niej przenosi) + zawiera całą strukturę dokumentu (spis treści dostępny z boku ekranu w acrobat reader).

Nie możemy kompilować PDFLaTeX-em bo nie przechodzą obrazki. Po skompilowaniu LaTeX-em i konwersją na PDF tracimy wszystkie dobrodziejstwa pakietu hyperref. Okazuje się, że nie wszystko stracone! Wszystko będzie ok, jeśli zrobimy PDF-a troszkę do okoła:

2008-03-24_202342.jpg

No dobra, ale jak to zrobić?

LEd posiada pewną fajną funkcję: “build all”. Jest ona dostępna przez skrót ctrl+F9 oraz na pasku narzędzi w postaci żółtego trójkącika. Wywołanie tej funkcji powoduje wykonanie pliku build.bat, który jest tworzony w każdym projekcie:

2008-03-24_202728.png

Gdy otworzymy ten plik (klikając nań dwa razy) ujrzymy takie oto coś:

2008-03-24_202950.png

Jest to zwykły skrypt bash. 3 pierwsze linie są ważne dla działania tego skryptu i nie należy ich zmieniać. Te zakreślone na pomarańczowo nie mają żadnego znaczenia a odpowiadają tylko za kolorowy napis informujący o postępie w okienku “linia poleceń”. Najważniejsze dla nas są dwie linie podkreślone na czerwono. Pierwsza odpowiada za kompilację naszego pliku (%2 oznacza nazwę głównego pliki .tex) LaTeX-em (w wyniku czego powstaje plik .dvi). Druga linia odpowiada za zamianę pliku .dvi na plik Post Script (.ps) programem dvips (tak jak na diagramie wyżej).

Tyle mamy. Wystarczy dopisać fragment odpowiedzialny za konwersję z .ps do .pdf. Nowy plik powinien wyglądać tak (na zielono zaznaczyłem nowe linie):

2008-03-24_203947.png

Teraz wystarczy zapisać i odpalić “build all”. A stworzy nam się zarówno dvi jak i pdf i wszyscy będą szczęśliwi.

Oczywiście można do tego pliku dopisać więcej fajnych rzeczy, ale o tym w przyszłości.

goto

| Komentarze

Historia Fizyki – A. K. Wróblewski

Zachęcony bardzo częstym cytowaniem przez różnych wykładowców sięgnąłem po książkę Profesora Andrzeja Kajetana Wróblewskiego “Historia Fizyki”. Zainteresowanym podpowiem, że najłatwiej znaleźć ją w bibliotece na smyczkach (tak, na smyczkach jest biblioteka!), bo w bibliotece IFD i IFT są pojedyncze egzemplarze.

Historia Fizyki

Książka jest napisana bardzo fajnym językiem, zawiera dużo cytatów, obrazków (!) i rysunków. Duże opasłe tomisko (600 stron) powinno z założenia odstraszać, a nie odstrasza. Książkę się fajnie czyta a do tego jej treść jest niezwykle interesująca. Ci co mnie znają, wiedzą, że książki omijam raczej szerokim łukiem, a historii jako takiej nie trawię w żadnej postaci (książek, filmów itp.). Ten przypadek jest inny. Wciągnęło mnie – jestem w tym momencie w okolicach 90 strony i postanowiłem się podzielić z Wami ciekawostakm, które znalazłem w pierwszej części książki: “Nauki Fizyczne w Starożytności i Średniowieczu”.

Na kilkudziesięciu stronach opisane są początki nauki jako takiej, która jak wiemy w starożytności składała się głównie z filozofii (moim niehumanistycznym zdaniem filozofia to takie blabla o niczym), matematyki (potrzebnej wtedy z czystko technicznych powodów) i astronomii. Fizyki jako takiej w tym okresie nie było (filozofowie rozważali to co dziś nazywamy fizyką, ale w dość nienaukowych aspektach).

Postanowiłem zacytować dwa interesujące fragmenty książki, żeby zainteresować Was do przeczytania całej:

Podział doby na 24H (11 strona)

“(…) Zarówno w Egipcie, jak w Mezopotamii opanowano metody pomiaru czasu. (…) Noc (okres od zachodu do wschodu Słońca) oraz dzień (od wschodu do zachodu Słońca) dzielono na 12 równych godzin. Godziny miały zatem długość zależną od pory roku. Nierówne godziny były potem w użyciu w Grecji, Rzymie i w Europie (w niektórych miejscowościach nawet do XVIII wieku!). (…)”

Pierwsze prawo fizyczne (około 300 p.n.e) (35 strona)

“(…) Euklides był także autorem dwóch dzieł fizycznych: Optyka oraz Katoptryka; została w nich sformułowana zasada prostoliniowego rozchodzenia się światła oraz prawo odbicia światła (kąt padania jest równy kątowi odbicia) – jest to najwcześniejsze prawo fizyczne. Oczywiście sam fakt prostoliniowego rozchodzenia się światła był znany od bardzo dawna i wykorzystywany w budownictwie. Również z niektórych fragmentów dzieł Platona i Arystotelesa wynika , że zdawali sobie oni sprawę z równości kątów padania i odbicia światła. Dopiero jednak Euklides sformułował ściśle tę zasadę i wykorzystał do rozważań optyki geometrycznej. Optyka Euklidesa została skonstruowana podobnie jak jego Elementy, jako zbiór ułożonych logicznie postulatów i dowodów geometrycznych. Euklides szczegółowo opisał bieg promieni światła w obecności zwierciadeł płaskich, wypukłych i wklęsłych. (…)”

Takich ciekawych informacji jest w książce pełno, więc jeszcze raz zachęcam wszystkich do czytania.

goto

P.S. Później mam zamiar napisać swoje spostrzeżenia z nauki pierwszego tysiąclecia n.e.

| Komentarze

LaTeX – strona tytułowa

Strona tytułowa powinna być prosta i czytelna! To zdanie twórcy LaTeX-a wzięli sobie głęboko do serca, ponieważ standardowy kod służący tworzeniu jej a przedstawiony poniżej tworzy dokładnie 3 linijki widoczne jeszcze niżej:

\documentclass[12pt,a4paper,titlepage]{report}
\author{Maciej Mucha}
\title{Badanie układu całkującego.}

\begin{document}

\maketitle

....

tyt

No delikatnie mówiąc nie rzuca na kolana to to. A przecież mogło by wyglądać na przykład o tak:

screen

Jak zmusić LaTeX-a, aby po podaniu mu w standardowy sposób autora, tytułu i daty wygenerował powyższą stronę? Wbrew pozorom – to bardzo proste.

Ogólne wprowadzenie

Jak wiemy (a przynajmniej powinniśmy) LaTeX udostępnia nam polecenie \maketitle, które generuje stronę tytułową. Tytułową czyli taką, która nie jest numerowana i nie zawiera nagłówka oraz stopki (No i jest na niej tytuł… Tak tylko przypominam). Aby móc się wkopać w to polecenie, musimy zrozumieć jak ono działa, a działa bardzo prosto. Kiedy my wykonujemy polecenie \maketitle, LaTeX zagląda (ja też zaglądnąłem – wy nie musicie) do pliku ze stylem dokumentu (report, article etc.), gdzie to polecenie jest zdefiniowane mniej więcej w taki sposób:

\newcommand\maketitle{\begin{titlepage}

 sratatata \@author sratatata \@date sratatata

 \@thanks sratatata \@title sratatata

 \end{titlepage}}

Co to oznacza? A to, że istnieje środowisko titlepage, wewnątrz którego wpisujemy po prostu na chama treść strony tytułowej, korzystając ze “zmiennych” które zamieniają się potem na autora itp… I to środowisko zapewnia nam:

  • Brak numeru strony (ściśle mówiąc strona ta ma numer 1 (niewyświetlany). Następna strona również ma nr 1)
  • Brak nagłówka i stopki
  • Przejście na następną stronę po zakończeniu generowania strony tytułowej

I dokładnie taki sposób my stworzymy własny “styl” tworzenia strony tytułowej. Za pomocą polecenie \renewcommand zredefiniujemy (zamienimy na swoje) polecenie \maketitle.

Z czego można korzystać tworząc treść strony tytułowej?

Redagowanie s.t. nie różni się niczym od normalnego redagowania dokumentu. W zasadzie można używać wszystkiego, Najczęściej jednak będziemy korzystać z:

  • Żonglerki wielkościami czcionek. Nie będę tu tłumaczył jak to działa. Jeżeli ktoś już czyta ten artykuł to chyba wie mniej-więcej na czym polega LaTeX.
  • Odstępy pionowe tworzone za pomocą polecenia \vspace
  • Linie poziome tworzone za pomocą \rule
  • Pogrubienia, kursywy
  • polecenia \@author, \@title, \@date, \@thanks – do wyświetlenia wartości pobranych przez polecenia \author, \title, \date, \thanks umieszczone przed \maketitle. Przypominam, że brak daty uzyskujemy za pomocą \date{\empty}}

Kod i wytłumaczenie niektórych aspektów

 

 

\documentclass[12pt,a4paper,notitlepage]{report}
\usepackage{polski}
\usepackage[T1]{fontenc}
\usepackage[cp1250]{inputenc}
\usepackage[top=2cm, bottom=2cm, left=3cm, right=3cm]{geometry}
\makeatletter
\newcommand{\linia}{\rule{\linewidth}{0.4mm}}
\renewcommand{\maketitle}{\begin{titlepage}
    \vspace*{1cm}
    \begin{center}\small
    Uniwersytet warszawski\\
    Wydział Fizyki\\
    Raport z pracowni elektronicznej
    \end{center}
    \vspace{3cm}
    \noindent\linia
    \begin{center}
      \LARGE \textsc{\@title}
         \end{center}
     \linia
    \vspace{0.5cm}
    \begin{flushright}
    \begin{minipage}{5cm}
    \textit{\small Autor:}\\
    \normalsize \textsc{\@author} \par
    \end{minipage}


    \vspace{5cm}

     {\small Praca wykonana pod przewodnictwem:}\\
         dr Tomasz Słupiński
     \end{flushright}
    \vspace*{\stretch{6}}
    \begin{center}
    \@date
    \end{center}
  \end{titlepage}%
}
\makeatother
\author{Maciej Mucha }
\title{Badanie układów cyfrowych}
\begin{document}
\maketitle
\end{document}
  • \makeatletter, \makeatother – Jak widać w kodzie użyliśmy paru poleceń, w których nazwie znalazła się “@”. Jest to niedozwolone, i samo użycie takiego polecenia generuje błąd. Aby temu zapobiec musimy uprzedzić LaTeX-a, że małpka to też literka. Służy do tego pierwsze z użytych poleceń. Drugie natomiast przywraca wszystko do normy
  • \vspace – odstęp pionowy. Gwiazdka oznacza, iż odstęp będzie działał nawet jeśli jest pierwszym lub ostatnim odstępem na stronie.
  • \newcommand{\linia}{\rule{\linewidth}{0.4mm}} – tworzymy sobie polecenie pomocnicze, wstawiające poziomą linię szeroką na 0.4mm a długą od prawego do lewego marginesu.
  • \noindent – W tym miejscu linia zaczyna nowy akapit, a więc tworzy się wcięcie i linia się przesuwa w prawo. Polecenie to usuwa wcięcie.
  • \minipage o szerokości 5cm – cały minipage jest wyrównany do prawej strony. Tekst w nim natomiast wyrównany jest do jego lewego brzegu a więc zaczyna się 5 cm od prawego marginesu strony. Taki Trik.
  • \vspace*{\stretch{6}} – duuży pionowy odstęp. Na tyle duży, że wystaje poza kraniec strony. Wyświetlenie daty znajduje się jeszcze dalej, ale LaTeX nie pozwala na wywalenie jednej linijki poza stronę, a więc efektem jest data wyrównana do dolnego marginesu.

Generalnie jak widać daje to wiele swobody a do tego jest bardzo proste. Zachęcam więc do oddawania raportów z ładnymi stronami tytułowymi, bo to co robi nam LaTeX własnoręcznie to gniot jednym słowem.

 

Pozdrawiam

Much

| Komentarze (9)

Mathematica + LaTeX

Przy okazji pisania jakiegoś dokumentu o charakterze naukowym w LaTeX-u zdarza mi się liczyć różne rzeczy za pomocą Mathematici. Gdy wynik obliczenia jest prosty można go szybko i bezboleśnie przepisać do LaTeX-a. Czasem niestety okazuje się on być sporym krzakiem. Co wtedy zrobić?

Weźmy dla przykładu takie oto obliczenie, którego wynikiem jest spory pierwiastek:

Mathematica + LaTeX

W menu podręcznym znajuje się opcja “Copy As LaTeX”:

Mathematica + LaTeX

ale wynik jej działania jest tragiczny (a zazwyczaj nie działa). Dla tego przykładu Mathematica skopiowała mi do schowka take oto coś:

\$Failed

Nie jest to zachwycający wynik, więc postanowiłem podejść do problemu inaczej. Znalazłem opis funkcji TeXForm, którą stosuje się w następujący sposób (oczywiście dalej na tym samym przykładzie):

Mathematica + LaTeX

lub tak:

Mathematica + LaTeX

W obydwu powyższych przypadkach Mathematica wypisuje na ekran poprawny (no dobra, z jednym małym błędem) kod LaTeX, który po wpisaniu do dokumentu i kompilacji daje następujący efekt:

Mathematica + LaTeX

Po poprawieniu wspomnianego wcześniej i widocznego powyżej błędu dostajemy:

Mathematica + LaTeX

Fajne, prawda?

goto

| Komentarze (1)

Niesprawiedliwe 45H

Jak wiadomo na studiach oprócz wiedzy studenci zwracają uwagę na zaliczane godziny lub punkty (ECTS). Nas na wydziale Fizyki interesować powinny godziny. Tu pojawia się problem. Są przedmioty, do zaliczenia których wystarczy obecność i uwaga na zajęciach i niewielka praca w domu. Liczmy, można zaliczyć poświęcając w domu połowę lub max drugie tyle czasu co na wydziale (może nawet niektórzy potrafią zaliczyć bez poświęcania dodatkowego czasu – obowiązkowych prac domowych nie ma, więc teoretycznie można w domu nic nie robić…).

To jest jasne i naturalne. Ale co zrobić z taką laborką fizyczną. Jej zaliczenie jest warte 45 godzin… 3 godziny co tydzień. No fajnie tylko, że tutaj żeby zaliczyć to przez te 3 godziny to się na kartce zapisuje pomiary. Potem trzeba te pomiary obrobić i napisć opis. A to zajmuje MINIMUM dwa razy tyle co trwały zajęcia. Gdzie tu  sens i sprawiedliwość??

Dzisiaj pisałem opis z ćwiczenia pt. “meteorologia” zrobiłem 21 wykresów (dokładnie tyle musiałem według instrukcji zrobić). Pomagałem sobie jak mogłem pisząc skrypty odwalające za mnie większość roboty z danymi. Ale jak ktoś skryptów pisać nie umie (a może nie umieć) to ma zdrowo przechlapane.

Zaliczenie laborek powinno dawać więcej godzin niż trwają same zajęcia!

Zapraszam do wyrażania własnych opinii…

goto

| Komentarze (5)