%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Plik ten należy, co najmniej trzykrotnie, przetworzyć przy użyciu komendy 'pdflatex' % % Stanisław Polak, 23-01-2013 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Beamer w wersji 3.10 lub wyższa jest spolonizowany. Opcja 'polish' włącza polonizację %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Włączenie trybu "beamer" %%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[polish, 9pt, xcolor=table, hyperref={pdfpagemode=FullScreen}]{beamer} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Jeżeli prezentacja ma być składana jako materiały dla słuchaczy (do wydrukowania), to %należy, powyżej, zakomentować linię '\documentclass[...]{beamer}' %i odkomentować, poniżej, linię '\documentclass[handout,...]{beamer}' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Włączenie trybu "handout" %%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \documentclass[handout, polish, 9pt, xcolor=table]{beamer} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Jeżeli prezentacja ma być składana jako artykuł (konspekt dla prelegenta), to % należy zakomentować linię '\documentclass[...]{beamer}' % i odkomentować dwie poniższe %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%% Włączenie trybu "article" %%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \documentclass{article} % \usepackage{beamerarticle} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Komendy wykonywane w każdym z trybów \usepackage{listings} %Aby dało się umieszczać kody źródłowe programów \usepackage{algorithmic} %Aby dało się umieszczać algorytmy \usepackage[utf8]{inputenc} \usepackage{polski} % Włączenie obsługi polskich liter \usepackage{tikz} %Aby dało się rysować strzałki \usetikzlibrary{arrows,shapes} % i figury geometryczne %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Parametry dla pakietu 'listings' % Źródło: http://en.wikibooks.org/wiki/LaTeX/Packages/Listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \lstset{ % language=Pascal, % określamy język programowania dla kodu basicstyle=\tiny, % wielkość czcionki dla kodu programu showstringspaces=false, % podkreślanie spacji wewnątrz łańcuchów numbers=left, % gdzie umieszczać numery linii numberstyle=\footnotesize, % wielkość czcionki dla numerów linii stepnumber=1, % krok między dwiema numerami linii. Jeśli 1 to każda linia będzie numerowana numbersep=5pt, % jak daleko numery linii są odsunięte od kodu showspaces=false, % pokaż spacje w obrębie łańcuchów za pomocą podkreślników showtabs=false, % pokaż tabulacje w obrębie łańcuhów za pomocą podkreślników frame=single, % dodaj obramowanie wokół kodu tabsize=2, % ustaw domyślny rozmiar tabulacji równy dwóm spacjom captionpos=b, % ustaw pozycję dla podpisu - podpis na dole breaklines=true, % włącz automatyczne łamanie linii breakatwhitespace=false, % ustaw jeżeli automatyczne łamanie ma następować tylko na białych znakach keywordstyle=\ttfamily\color{green}, % jakim kolorem i jaką czcionką będą wyświetlane słowa kluczowe identifierstyle=\ttfamily\color{yellow}\bfseries, %jakim kolorem i jaką czcionką będą wyświetlane identyfikatory commentstyle=\color{brown}, %jakim kolorem i jaką czcionką będą wyświetlane komentarze stringstyle=\ttfamily, %jakim kolorem i jaką czcionką będą wyświetlane łańcuchy znakowe escapeinside={\%*}{*)}, % jeżeli chcesz umieścić komentarze w obrębie swojego kodu, inputencoding=utf8, % Pakiet listings nie obsługuje polskich znaków UTF-8, ale można to "naprawić" - polskie znaki będą zastępowane komendami LaTeX - patrz niżej literate={ą}{{\k{a}}}1 {Ą}{{\k{A}}}1 {ę}{{\k{e}}}1 {Ę}{{\k{E}}}1 {ó}{{\'o}}1 {Ó}{{\'O}}1 {ś}{{\'s}}1 {Ś}{{\'S}}1 {ł}{{\l{}}}1 {Ł}{{\L{}}}1 {ż}{{\.z}}1 {Ż}{{\.Z}}1 {ź}{{\'z}}1 {Ź}{{\'Z}}1 {ć}{{\'c}}1 {Ć}{{\'C}}1 {ń}{{\'n}}1 {Ń}{{\'N}}1 } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \mode<beamer>{ % Komendy wykonywane w trybie "beamer" \usepackage{babel} %aby zadziałała polonizacja 'beamera' \AtBeginNote{\scriptsize} %aby notatki prelegenta były wyświetlane mniejszą czcionką \usetheme{JuanLesPins} \usecolortheme{albatross} %użycie niestandardowego zestawu kolorów \usefonttheme{professionalfonts} %użycie niestandardowego zestawu fontów \usefonttheme[onlylarge]{structuresmallcapsserif} %użycie niestandardowego zestawu fontów \setbeamercolor{note page}{bg=white,fg=black} %określamy kolory strony notatek % \setbeamercovered{transparent} %wyświetlaj nieaktywne warstwy na szaro \usepackage{pgfpages} %dzięki temu pakietowi można wyświetlać notatki prelegenta \setbeamertemplate{note page}[compress] %chcę aby strona notatek zajmowała mniej miejsca % W przypadku trzech poniższych linii, tylko co najwyżej jedna z nich może być odkomentowana \setbeameroption{show notes on second screen=left} %wyświetlaj slajdy i notatki prelegenta obok siebie na jednej stronie % \setbeameroption{show notes} %wyświetlaj notatki i slajdy na osobnych stronach % \setbeameroption{show only notes} %wyświetlaj tylko notatki prelegenta } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \mode<handout>{ % Komendy wykonywane w trybie "handout" \usepackage{babel} %aby zadziałała polonizacja 'beamera' \usepackage{pgfpages} %aby dało się wyświetlać kilka slajdów na jednej stronie \usetheme{boxes} %dzięki temu motywowi możemy samodzielnie określać wygląd / treść nagłówka oraz stopki strony - patrz linie poniżej \addheadbox{structure}{\quad\insertsubsection\hfill\insertsection\hfill\inserttitle\qquad} %Określanie treści nagłówka strony \addfootbox{structure}{\quad\insertauthor\hfill\insertframenumber\hfill\insertsubtitle\qquad} %Określanie treści stopki strony \pgfpagesuselayout{4 on 1}[a4paper, border shrink=5mm,landscape] %Wyświetlaj po 4 slajdy na jednej stronie \setbeamercolor{background canvas}{bg=black!5} %Ustawienie koloru tła slajdu - szary } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \mode<article>{ % Komendy wykonywane w trybie "article" \usepackage{url} \lstset{ keywordstyle=\ttfamily, identifierstyle=\ttfamily\bfseries, stringstyle=\ttfamily } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \title{Przykładowa prezentacja} \author{Stanisław Polak} \institute{Akademia Górniczo-Hutnicza w Krakowie\\Katedra Informatyki} \date{Kraków, \today} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame} % Przykładowa notatka prelegenta \note{Aby wyjść z trybu pełnoekranowego, w zależności od przeglądarki PDF, naciśnij Ctrl+L lub ESC.\\W prezentacji Beamer można umieszczać notatki prelegenta. Jeżeli dysponujemy odpowiednim komputerem to można spowodować aby lewa połowa slajdu była widoczna, tylko prelegentowi, zaś prawa - słuchaczom. $\Longrightarrow$ \newline Można również, synchronicznie, wyswietlać dwa dokumenty (pierwszy zawierający notatki, a drugi slajdy) --- patrz opis na stronie \url{http://www.icsr.agh.edu.pl/~polak/latex.html.var}} \maketitle \mode<article>{ Ten tekst jest widoczny tylko w trybie artykuł, czyli wtedy gdy odkomentujemy linie oznaczające, że prezentacja ma być składana jako artykuł (konspekt dla prelegenta). } \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{JSP} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[fragile]{Dyrektywa 'taglib'} \note{Treść slajdów może pojawiać się stopniowo $\Longrightarrow$} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Efekt pojawiania się elementów uzyskano za pomocą komendy '\pause' - patrz poniżej % Jeżeli bezpośrednio po "\begin{itemize}" dopiszesz "[<+->]", to komenda '\pause' będzie automatycznie "wstawiana" po każdym '\item' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{itemize} \item Własne akcje \pause %Odsłoń kolejny element wyliczenia \item Separacja prezentacji i logiki \pause %Odsłoń kolejny element wyliczenia \item Przetwarzanie zawartości JSP \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Jeśli określony element wyliczenia ma być odsłaniany jako n-ty, to należy wpisać '\item<n->', % czyli np. jeżeli ma być odsłaniany w drugiej kolejności, to należy wpisać '\item<2->' % Tak więc efekt stopniowego pojawiania się elementów wyliczenia można również uzyskać następująco: % \begin{itemize} % \item<1-> Własne akcje % \item<2-> Separacja prezentacji i logiki i % \item<3-> Przetwarzanie zawartości JSP % \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}{Obiekty niejawne} \mode<presentation>{ \rowcolors[]{1}{blue!20}{blue!50} } \begin{tabular}{|p{0.2\textwidth}|p{0.5\textwidth}|p{0.2\textwidth}|} \hline \textbf{Obiekt} & \textbf{Typ (javax.servlet)} & \textbf{Zasięg}\\ \hline % '\alert<...|handout:0>' oznacza, że w trybie 'handout' komenda '\alert' ma być zignorowana - czyli w tym trybie dany element nie będzie wyróżniony za pomocą alertu \alert<2|handout:0>{request} & zależny od protokołu podtyp \texttt{HttpServletRequest} & żądanie\\ \alert<3>{response} & zależny od protokołu podtyp \texttt{HttpServletResponse} & strona \\ \alert<4>{pageContext} & \texttt{jsp.PageContext} & strona\\ \alert<5>{session} & zależny od protokołu podtyp \texttt{http.HttpSession} & sesja\\ \alert<6>{application} & \texttt{ServletContext} & aplikacja\\ \alert<7>{out} & \texttt{jsp.JspWriter} & strona \\ \alert<8>{config} & \texttt{servletConfig} & strona\\ \alert<9>{page} & \texttt{java.lang.Object} & strona\\ \hline \end{tabular} \note{Notatki też mogą pojawiać się stopniowo} \note<2->[item]{notatka 1} \note<3->[item]{notatka 2} \note<4->[item]{notatka 3} \note<5->[item]{notatka 4} \note<6->[item]{notatka 5} \note<7->[item]{notatka 6} \note<8->[item]{notatka 7} \note<9>[item]{notatka 8} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}{Wzory matematyczne} \note{Wzory matematyczne też mogą pojawiać się etapami. Wystarczy, poszczególne składniki wzoru, rozdzielić za pomocą komendy \texttt{\textbackslash pause} } \setbeamercovered{invisible} \begin{displaymath} {\frac {d}{dx}}\arctan(\sin({x}^{2})) \pause = \pause -2\,{\frac {\pause \cos({x}^{2})x}{\pause -2+\left (\cos({x}^{2})\right )^{2}}} \end{displaymath} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}{Przykład użycia komendy \texttt{\textbackslash{}onslide}} \note{Znana nam już komenda \texttt{\textbackslash pause} pośrednio wywołuje komendę \texttt{\textbackslash onslide}. Ta ostatnia ma jednak większe możliwości \pauza pozwala określić kolejność pojawiania się elementów.} Tekst widoczny w każdej warstwie \begin{itemize} \onslide \item 1 \onslide<2> \item 2 \onslide<1> \item 3 \onslide<3> \item 4 \end{itemize} \onslide Tekst widoczny w każdej warstwie. \onslide<4> Tekst widoczny tylko w warstwie nr 4. \end{frame} \section{Algorytmy} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[fragile]{Cykl życia serwletu} \note{Pakiet 'algorithmic' pozwala zapisywać algorytmy. $\Longrightarrow$ Do zapisu schematów blokowych można użyć pakietu 'nassflow' (\url{http://mirror.ctan.org/macros/latex/contrib/nassflow/})\pauza umożliwia on także tworzenie diagramów Nassi-Schneidermanna \pauza diagramy te można również tworzyć za pomocą pakietu 'struktex' (\url{http://mirror.ctan.org/macros/latex/contrib/struktex/}).} \begin{algorithmic} \IF{(! istnieje(instancja serwletu))} \STATE załaduj(klasa) \STATE instancja = utwórz() \STATE zainicjuj(instancja) \pauza wywołaj \texttt{instancja.init()} \ENDIF \STATE wywołaj \texttt{instancja.service(żądanie, odpowiedź)} \IF{(kontener musi usunąć serwlet)} \STATE wywołaj \texttt{instancja.destroy()} \ENDIF \end{algorithmic} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Pakiet 'listings'} \begin{frame}[fragile]{Program w Pascalu} \note<1>{Dzięki pakietowi 'listings', w dokumencie \LaTeX, można umieszczać kody źródłowe programów. Przykładowy program w Pascalu, który na wejściu wczytuje dwie liczby całkowite 'a' oraz 'b', a na wyjściu wyświetla ich iloraz a/b. Jeżeli zostanie zdefiniowany znak 'ucieczki' do trybu \LaTeX, to dzięki niemu, w kodzie programu (tu: Pascal) będzie można umieszczać rozkazy \LaTeX a po to aby np. wyróżnić niektóre słowa. } \note<2>{Pomiędzy parą znaków 'ucieczki', w kodzie źródłowym programu, umieszczono rozkaz \texttt{\textbackslash alert<2>\{readln\}}, dzięki czemu słowo 'readln' zostało wyróżnione --- patrz prawa strona slajdu} \note<3>{Teraz zostało wyróżnione słowo 'write'} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Opcja 'escapechar' określa, który znak ma być traktowany jako znak 'ucieczki' do tryby LaTeX % W przykładzie poniżej zakładam, że znakiem ucieczki jest % (znak procent) % Dzięki znakowi 'ucieczki' w kodzie programu mogę umieszczać rozkazy LaTeX-a %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Jeżeli w treści slajdu używamy pary komend \begin{lstlisting} \end{lstlisting}, % to komenda '\begin{frame}', która jak wiemy rozpoczyna nowy slajd, powinna % zawierać parametr 'fragile'; czyli ostatecznie powinna ona wyglądać następująco: % \begin{frame}[fragile]{Tytuł slajdu} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{lstlisting}[escapechar=\%] var a : integer; b : integer; begin write('Podaj liczbe calkowita a: '); % \alert<2>{readln}%(a); % \alert<3>{write}%('Podaj liczbe calkowita b: '); readln(b); if b = 0 then writeln('Nie dziel przez zero !') else writeln('a : b = ', a/b:0:1); readln; end. \end{lstlisting} Strona źródłowa programu: \url{http://pascal.vj.e.pl/pascal_5.php} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Dokumenty} \begin{frame}[fragile]{Dokument HTML oraz MathML} \note{Pakiet 'listings' umożliwia także wstawianie dokumentów HTML oraz MathML.} \begin{lstlisting}[language=HTML,title=dokument HTML] <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML> <HEAD> <TITLE>tytul</TITLE> ... pozostale elementy nagłówka... </HEAD> <BODY> ... ciało dokumentu... </BODY> </HTML> \end{lstlisting} \begin{lstlisting}[language=XML,title=dokument MathML] <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd"> <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <msup> <mfenced> <mrow> <mi>x</mi> <mo>+</mo> <mi>y</mi> </mrow> </mfenced> <mn>4</mn> </msup> </mrow> </math> \end{lstlisting} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Pakiet TikZ} \begin{frame} \note{Autor klasy Beamer stworzył również pakiet TikZ, który umożliwia generowanie grafik w \LaTeX u. Dzięki niemu możemy np. rysować strzałki do określonych fragmentów wzorów matematycznych i mogą one pojawiać się stopniowo, jak to pokazano w tym przykładzie. $\Longrightarrow$\\\textbf{Jeśli strzałki nie rysują się prawidłowo, to proszę ponownie skompilować dokument}. Elementy składowe wzoru można również wyróżnić inaczej --- patrz: \url{http://media.texample.net/tikz/examples/extra/beamer-fadings.pdf} $\leftarrow$ kliknij ten adres} \frametitle{Rigid body dynamics} % Każdy rysunek, który definiuje lub używa zewnętrznych węzłów % musi używać stylu 'remember picture'. W celu uniknięcia wielokrotnego wpisywania nazwy tego stylu, % zastosuj ten styl dla każdego obrazka. \tikzstyle{every picture}+=[remember picture] % Domyślnie wszystkie elementy matematyczne, w obrębie węzłów, są składane jak wzory ,,w linii''. Ustaw na 'displaystyle' aby były składane jak we wzorach eksponowanych. \everymath{\displaystyle} \tikzstyle{na} = [baseline=-.5ex] \begin{itemize}[<+-| alert@+>] \item Coriolis acceleration % Definiujemy węzeł o nazwie "n1" i pustej zawartości \tikz[na] \node[coordinate] (n1) {}; \end{itemize} % Poniżej miksujemy równanie matematyczne z węzłami TikZ. % Musimy dostosować linię bazową węzłów aby uzyskać prawidłowe dopasowanie z resztą równania. \begin{equation*} \vec{a}_p = \vec{a}_o+\frac{{}^bd^2}{dt^2}\vec{r} + % Definiujemy węzeł o nazwie "t1", o kształcie domyślnym (protokąt), o kolorze wypełnienia blue!50, zawierający wzór matematyczny \tikz[baseline]{ \node[fill=blue!50,anchor=base] (t1) {$2\vec{\omega}_{ib}\times\frac{{}^bd}{dt}\vec{r}$}; } + % Definiujemy węzeł o nazwie "t2", w kształcie elipsy, o kolorze wypełnienia red!50, zawierający wzór matematyczny \tikz[baseline]{ \node[fill=red!50, ellipse,anchor=base] (t2) {$\vec{\alpha}_{ib}\times\vec{r}$}; } + % Definiujemy węzeł o nazwie "t3", o kształcie domyślnym (protokąt), o kolorze wypełnienia green!50, zawierający wzór matematyczny \tikz[baseline]{ \node[fill=green!50,anchor=base] (t3) {$\vec{\omega}_{ib}\times(\vec{\omega}_{ib}\times\vec{r})$}; } \end{equation*} \begin{itemize}[<+-| alert@+>] \item Transversal acceleration % Definiujemy węzeł o nazwie "n2" i pustej zawartości \tikz[na]\node [coordinate] (n2) {}; \item Centripetal acceleration % Definiujemy węzeł o nazwie "n3" i pustej zawartości \tikz[na]\node [coordinate] (n3) {}; \end{itemize} % Now it's time to draw some edges between the global nodes. Note that we % have to apply the 'overlay' style. \begin{tikzpicture}[overlay] \path[->]<1-> (n1) edge [bend left] (t1); %Rysujemy strzałkę od węzła "n1" do węzła "t1" \path[->]<2-> (n2) edge [bend right] (t2); %Rysujemy strzałkę od węzła "n2" do węzła "t2" \path[->]<3-> (n3) edge [out=0, in=-90] (t3); %Rysujemy strzałkę od węzła "n3" do węzła "t3" \end{tikzpicture} \emph{Źródło}: \url{http://www.texample.net/tikz/examples/beamer-arrows/} \end{frame} \end{document}