Pakiety wrapfig i listings 21 marca 2015 1. Pakiet wrapfig Pakiet wrapfig należy wczytać w preambule dokumentu. Pozwala on na oblewanie tekstem obrazka. \beginwrapfigure[2]r[12pt]60pt \includegraphics[width=60pt]graf \wrapfigure \beginwrapfigure[ilość węższych linii] położenie[spad]szerokość rysunku Położenie to jedna z liter r, l, i, o, R, L, I, O. Duże litery pozwalają kompilatorowi wybrać odpowiednie miejsce na rysunek, małe każą go umieścić tam gdzie się pojawił. I, i oznaczają umieszczenie obrazka na tym marginesie który jest po stronie zszywanej (w druku dwustronnym, O, o - daleko od zszywania. Z uwagi na walory estetyczne obrazek może oblewać tylko zwykły tekst. literę. Tekst oblewający literę. Tekst oblewający lite- W rę. Tekst oblewający Tekst oblewający \beginwrapfigure[12]r60pt \includegraphics[width=60pt]graf \wrapfigure 1
to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest W tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst to jest tekst \beginwrapfigure[12]o[24pt]120pt \includegraphics[width=120pt]graf \wrapfigure Tekst oblewający Tekst oblewający Tekst oblewający Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający Tekst oblewający literę. Tekst oblewający literę. Tekst W oblewający literę. Tekst oblewający literę. Tekst oblewający Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający Tekst oblewający Tekst oblewający Tekst oblewający literę. Tekst oblewający \beginwrapfigurei3cm \includegraphics[width=3cm]graf \wrapfigure 2
2. Pakiet listings Pakiet listings wczytujemy w preambule poleceniem \usepackage. Język określamy poleceniem \lstsetlanguage=[dialekt]nazwa jezyka a następnie kod umieszczamy w środowisku \beginlstlisting kod źródłowy \lstlisting Fragment kodu w linii umieszczamy poleceniem \lstinline!fragment kodu! Znak! może zostać zastąpiony dowolnym innym, nie występującym w kodzie. Dostępne języki (wybór) C++ (ANSI, GNU, ISO, Visual) Gnuplot, Haskell, HTML, Lisp (empty, Auto), Logo, make (empty, gnu), Mathematica (1.0, 3.0), Matlab, Mercury, MetaPost, Pascal (Borland6, Standard, XSC), Perl, PHP, Python, Ruby, SQL, TeX (AlLaTeX, common, LaTeX, plain, primitive), VBScript XML, XSLT Przykład XML <?xml version=" 1. 0 " encoding=" i so 8859 2"?> <z w i e r z a k i> <p i e s>brytan</ p i e s> <kot>f e l i k s</ kot> <k r o l i k>kicek</ k r o l i k> </ z w i e r z a k i> \lstsetlanguage=xml \beginlstlisting <?xml version="1.0" encoding="iso-8859-2"?> - <zwierzaki> <pies>brytan</pies> <kot>feliks</kot> <krolik>kicek</krolik> </zwierzaki> \lstlisting Przykład języka Ruby search_engines = %w[ Google Yahoo MSN]. map do engine " http : / /www. " + engine. downcase + ". com" 3
class Numeric def plus ( x ) s e l f.+( x ) y = 5. plus 6 # y wynosi t e r a z 11 \beginlstlisting search_engines = %w[google Yahoo MSN].map do engine "http://www." + engine.downcase + ".com" \lstlisting \beginlstlisting class Numeric def plus(x) self.+(x) y = 5.plus 6 # y wynosi teraz 11 \lstlisting Przykład języka Java // OddEven. java import javax. swing. JOptionPane ; public class OddEven // " i n p u t " i s the number t h a t the user g i v e s to the computer private int input ; // a whole number ( " i n t " means i n t e g e r ) / This i s t he c o n s t r u c t o r method. / public OddEven ( ) \lstsetlanguage=java \beginlstlisting // OddEven.java 4
import javax.swing.joptionpane; public class OddEven // "input" is the number that the user gives to the computer private int input; // a whole number("int" means integer) /* * This is the constructor method. */ public OddEven() \lstlisting Można wydrukować tylko kilka wskazanych linii kodu nadając wartość parametrom firstline i lastline. Początek środowiska będzie wyglądał następująco \beginlstlisting[firstline=liczba,lastline=liczba] Kod można też wczytać bezpośrednio z pliku \lstinputlistingscieżka do pliku Domyślne ustawienia można zmienić poleceniem \lstsetparametr=wartość Parametry, które można modyfikować to: basicstyle określa wygląd czcionki dla całego kodu, keywordstyle określa wygląd czcionki, którą drukowane będą słowa kluczowe, identifierstyle określa wygląd czcionki, którą drukowane będą nazwy stałych, zmiennych, funkcji, procedur itp., commentstyle określa wygląd czcionki, którą drukowane będą komentarze, stringstyle określa wygląd czcionki, którą drukowane będą stałe znakowe i łańcuchy znakowe. Jako wartość można podać między innymi stopień pisma, rodzinę czcionek, kolor (o ile załadowany zostanie pakiet do obsługi koloru, np. color). Numerowanie linii kodu Aby numerować linie kodu należy przed środowiskiem z kodem umieścić polecenie \lstsetnumbers=strona Wartość strona może być left, right, none. Jeśli do powyższego ustawienia 5
dopiszemy parametr numberstyle=styl, możemy zmienić rozmiar liczb. Parametr stepnumber=krok ustala czy numerowane mają być wszystkie linie czy np. co druga. Parametr numbersep=odległość ustala odstęp numeru od linii kodu. Aby w kodzie drukowane były znaki niewidoczne (np. spacje) należy podać parametr \lstsetshowspaces=true,showtabs=true Wielkość tabulacji ustawiamy poleceniem \lstsettabsize=wielkość a jeśli chcemy by drukowany był jakiś konkretny znak tabulacji to musimy go określić poleceniem \lstsettabs=znak 2.1. Przykłady Środowisko lstlisting z parametrami firstline i lastline Parametry firstline i lastline można łączyć w obrębie tego samego środowiska. Wtedy otrzymamy wydruk tylko części kodu, od linii 4 do 7 jak w przykładzie poniżej. \beginlstlisting[firstline=4,lastline=7] %%% if (argc == 1) printf ("Uzycie: wczytaj plik\n"); exit (EX_USAGE); // kod bledu: 64 FILE *plik; if ((plik = fopen (argv [1], "r")) == NULL) printf ("Niepoprawna nazwa pliku\n"); exit (EX_NOINPUT); // kod bledu: 66 \lstlisting FILE p l i k ; i f ( ( p l i k = fopen ( argv [ 1 ], " r " ) ) == NULL) Polecenie lstinputlisting Polecenie to powoduje wczytanie i wklejenie do dokumentu zawartości podanego pliku (w tym przypadku pliku "kod.c", znajdującego się na tym samym miejscu co dokument LaTeX-owy) \lstinputlistingkod.c 6
#include <s t d i o. h> #include <s t d l i b. h> #include <s y s e x i t s. h> / Kod zrodlowy programu " wypisz " / int main ( int argc, char argv [ ] ) i f ( argc == 1) p r i n t f ( " Uzycie : wypisz p l i k \n" ) ; e x i t (EX_USAGE) ; // kod b l e d u : 64 FILE p l i k ; i f ( ( p l i k = fopen ( argv [ 1 ], " r " ) ) == NULL) p r i n t f ( "Niepoprawna nazwa p l i k u \n" ) ; e x i t (EX_NOINPUT) ; // kod b l e d u : 66 char znak = \0 ; while ( ( znak = getc ( p l i k ) )!= EOF) putc ( znak, stdout ) ; f c l o s e ( p l i k ) ; return EX_OK; lstinputlisting z parametrami firstline i lastline W poleceniu lstinputlisting można również użyć parametrów firstline i lastline. #include <s t d i o. h> #include <s t d l i b. h> #include <s y s e x i t s. h> / Kod zrodlowy programu " wypisz " / Powyżej wynik \lstinputlisting[firstline=1,lastline=6]kod.c Zmiana wyglądu kodu #include <s t d i o. h> #include <s t d l i b. h> #include <s y s e x i t s. h> / Kod zrodlowy programu " wypisz " / 7
int main (int argc, char argv [ ] ) if ( argc == 1) p r i n t f ( "Uzycie: wypisz plik\n" ) ; e x i t (EX_USAGE) ; // kod b l e d u : 64 FILE p l i k ; if ( ( p l i k = fopen ( argv [ 1 ], "r" ) ) == NULL) p r i n t f ( " Niepoprawna nazwa pliku\n" ) ; e x i t (EX_NOINPUT) ; // kod b l e d u : 66 char znak = \0 ; while ( ( znak = g e t c ( p l i k ) )!= EOF) putc ( znak, stdout ) ; f c l o s e ( p l i k ) ; return EX_OK; \lstset basicstyle=\small, keywordstyle=\bfseries\large, identifierstyle=\underbar, commentstyle=\itshape, stringstyle=\texttt \lstinputlistingkod.c Znaki specjalne #include <s t d i o. h> #include <s t d l i b. h> #include <s y s e x i t s. h> / Kod zrodlowy programu " wypisz " / int main (int argc, char argv [ ] ) if ( argc == 1) p r i n t f ( "Uzycie: wypisz plik\n" ) ; e x i t (EX_USAGE) ; // kod b l e d u : 64 FILE p l i k ; if ( ( p l i k = fopen ( argv [ 1 ], "r" ) ) == NULL) 8
p r i n t f ( " Niepoprawna nazwa pliku\n" ) ; e x i t (EX_NOINPUT) ; // kod b l e d u : 66 char znak = \0 ; while ( ( znak = g e t c ( p l i k ) )!= EOF) putc ( znak, stdout ) ; f c l o s e ( p l i k ) ; return EX_OK; \lstsettabsize=4 \lstsetshowspaces=true \lstsetshowtabs=true \lstsettab=\rightarrowfill \lstinputlistingkod.c Numerowanie linii 1 #include <s t d i o. h> 2 #include <s t d l i b. h> 3 #include <s y s e x i t s. h> 4 5 / Kod zrodlowy programu " wypisz " / 6 7 int main (int argc, char argv [ ] ) 8 9 if ( argc == 1) 10 11 p r i n t f ( "Uzycie: wypisz plik\n" ) ; 12 e x i t (EX_USAGE) ; // kod b l e d u : 64 13 14 FILE p l i k ; 15 if ( ( p l i k = fopen ( argv [ 1 ], "r" ) ) == NULL) 16 17 p r i n t f ( " Niepoprawna nazwa pliku\n" ) ; 18 e x i t (EX_NOINPUT) ; // kod b l e d u : 66 19 20 char znak = \0 ; 21 while ( ( znak = g e t c ( p l i k ) )!= EOF) 22 putc ( znak, stdout ) ; 23 f c l o s e ( p l i k ) ; 24 return EX_OK; 25 9
\lstset numbers=left, numberstyle=\tiny, stepnumber=1, numbersep=2cm \lstinputlistingkod.c Polecenie \lstsetnumbers=none powoduje zaprzestanie numerowania linii kodu. 10