Pakiety wrapfig i listings
Transkrypt
Pakiety wrapfig i listings
Pakiety wrapfig i listings 21 marca 2015 1. Pakiet wrapfig Pakiet wrapfig należy wczytać w preambule dokumentu. Pozwala on na oblewanie tekstem obrazka. \begin{wrapfigure}[2]{r}[12pt]{60pt} \includegraphics[width=60pt]{graf} \end{wrapfigure} \begin{wrapfigure}[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. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. W \begin{wrapfigure}[12]{r}{60pt} \includegraphics[width=60pt]{graf} \end{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 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 W \begin{wrapfigure}[12]{o}[24pt]{120pt} \includegraphics[width=120pt]{graf} \end{wrapfigure} Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający literę. W \begin{wrapfigure}{i}{3cm} \includegraphics[width=3cm]{graf} \end{wrapfigure} 2 2. Pakiet listings Pakiet listings wczytujemy w preambule poleceniem \usepackage. Język określamy poleceniem \lstset{language=[dialekt]nazwa jezyka} a następnie kod umieszczamy w środowisku \begin{lstlisting} kod źródłowy \end{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 " e n c o d i n g=" i s o −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> \lstset{language=XML} \begin{lstlisting} <?xml version="1.0" encoding="iso-8859-2" ?> - <zwierzaki> <pies>Brytan</pies> <kot>Feliks</kot> <krolik>Kicek</krolik> </zwierzaki> \end{lstlisting} Przykład języka Ruby search_engines = %w [ Google Yahoo MSN ] . map do | e n g i n e | " h t t p : / /www. " + e n g i n e . downcase + " . com" end 3 c l a s s Numeric def p l u s ( x ) s e l f .+( x ) end end y = 5. plus 6 # y wynosi t e r a z 11 \begin{lstlisting} search_engines = %w[Google Yahoo MSN].map do |engine| "http://www." + engine.downcase + ".com" end \end{lstlisting} \begin{lstlisting} class Numeric def plus(x) self.+(x) end end y = 5.plus 6 # y wynosi teraz 11 \end{lstlisting} Przykład języka Java // OddEven . j a v a import j a v a x . swing . JOptionPane ; public c l a s s OddEven { // " i n p u t " i s t h e number t h a t t h e u s e r g i v e s t o t h e computer private int i n p u t ; // a wh ol e number ( " i n t " means i n t e g e r ) /∗ ∗ This i s t h e c o n s t r u c t o r method . ∗/ public OddEven ( ) {} \lstset{language=Java} \begin{lstlisting} // 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() {} \end{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 \begin{lstlisting}[firstline=liczba,lastline=liczba] Kod można też wczytać bezpośrednio z pliku \lstinputlisting{scieżka do pliku} Domyślne ustawienia można zmienić poleceniem \lstset{parametr=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 \lstset{numbers=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 \lstset{showspaces=true,showtabs=true} Wielkość tabulacji ustawiamy poleceniem \lstset{tabsize=wielkość} a jeśli chcemy by drukowany był jakiś konkretny znak tabulacji to musimy go określić poleceniem \lstset{tabs=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. \begin{lstlisting}[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 } \end{lstlisting} } FILE ∗ p l i k ; i f ( ( p l i k = f o p e n ( 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) \lstinputlisting{kod.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 z r o d l o w y programu " w y p i s z " ∗/ int main ( int argc , char ∗ argv [ ] ) { i f ( a r g c == 1 ) { p r i n t f ( " U z y c i e : ␣ 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 = f o p e n ( 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 = g e t c ( p l i k ) ) != EOF) putc ( znak , s t d o u t ) ; fclose ( plik ); 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 z r o d l o w y programu " w y p i s z " ∗/ Powyżej wynik \lstinputlisting[firstline=1,lastline=6]{kod.c} Zmiana wyglądu kodu #include #include #include <s t d i o . h> < s t d l i b . h> < s y s e x i t s . h> /∗ Kod z r o d l o w y programu " w y p i s z " ∗/ 7 int main ( int argc , char ∗ argv [ ] ) { if ( a r g c == 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 = f o p e n ( 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 , s t d o u t ) ; fclose ( plik ); return EX_OK; } \lstset{ basicstyle=\small, keywordstyle=\bfseries\large, identifierstyle=\underbar, commentstyle=\itshape, stringstyle=\texttt} \lstinputlisting{kod.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␣ z r o d l o w y ␣ programu ␣" w y p i s z "␣ ∗/ int ␣main␣ ( int ␣ argc , ␣char␣ ∗ argv ␣ [ ] ) { −−−→ if ␣ ( a r g c ␣==␣ 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 ␣=␣ f o p e n ␣ ( 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 , ␣ s t d o u t ) ; −−−→ f c l o s e ␣ ( p l i k ) ; −−−→return␣EX_OK; } \lstset{tabsize=4} \lstset{showspaces=true} \lstset{showtabs=true} \lstset{tab=\rightarrowfill} \lstinputlisting{kod.c} Numerowanie linii 1 2 3 #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> 4 5 /∗ ␣Kod␣ z r o d l o w y ␣ programu ␣" w y p i s z "␣ ∗/ 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 int ␣main␣ ( int ␣ argc , ␣char␣ ∗ argv ␣ [ ] ) { −−−→ if ␣ ( a r g c ␣==␣ 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 ␣=␣ f o p e n ␣ ( 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 , ␣ s t d o u t ) ; −−−→ f c l o s e ␣ ( p l i k ) ; −−−→return␣EX_OK; } 9 \lstset{ numbers=left, numberstyle=\tiny, stepnumber=1, numbersep=2cm} \lstinputlisting{kod.c} Polecenie \lstset{numbers=none} powoduje zaprzestanie numerowania linii kodu. 10