Włączenie interfejsu GWT w RHQ

Od wersji 3.0 platformy RHQ jest możliwość włączenia interfejsu zarządzającego przez przeglądarkę opartego o bibliotekę GWT. Nie jest on domyślnie włączony, i ciągle raczej można go traktować jako ciekawostkę, ale warto się z nim zapoznać.

Włączenie go nie jest wielce skomplikowane, sprowadza się do włączenie odpowiedniej opcji w konfiguracji oraz uruchomieniu odpowiedniego serwletu.

  1. Pierwszym krokiem będzie uruchomenie konfiiguracji RHQ, czyli Administration->System Configuration->Settings.

    Konfiguracja platformy RHQ

    Konfiguracja platformy RHQ

  2. W konfiguracji należy odszukać pole o nazwie RHQ General Configuration Properties i włączyć opcję o nazwie Enable Debug Mode oraz zapisać zmiany:

    Włączenie trybu debug

    Włączenie trybu debug

  3. Po zapisaniu nowej konfiguracji powinna pojawić się nowe w menu o nazwie Debug. Pozostaje wybrać z niej pozycje GWT GUI:

    Uruchomienie interfejsu GWT

    Uruchomienie interfejsu GWT

  4. Uruchomi się interfejs dostępowy napisany w GWT. A wygląda on mniej więcej tak:

    Przykładowy ekran z listą usług

    Przykładowy ekran z listą usług

Jest dostępna prezentacji opisująca możliwości nowego interfejsu: Customizable Dashboards.


Uwaga!

Interfejs GWT nie działał mi przy użyciu przeglądarki Chrome, nie wyświetlał się w oknie przeglądarki.

Źródła

Tags: ,

Kolorowanie składni Oracle SQL w Latex

Ostatnimi czasy musiałem umieścić w dokumencie utworzonym przy użyciu Latex przykłady zapytań dla bazy danych Oracle. W związku z czym sięgnąłem do pakietu listings, który pozwala na odpowiednie wyróżnienie słów kluczowych SQL.

Dokładny sposób włączenia tego pakietu i jego podstawowe parametry można znaleźć we tym wpisie: Kolorowanie składni Javy w systemie LaTeX przygotowanym przez Marcina Stachniuka. Dla Oracle deklaracja może wyglądać tak:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
\documentclass[a4paper,12pt]{article}

\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}

\lstset{language=SQL,
    basicstyle=\small,
    showstringspaces=false,
    tabsize=4,
    inputencoding=utf8x,
    extendedchars=\true,
}

\begin{document}

\begin{lstlisting}
    SELECT MIN(DISTINCT kolumna2)
    FROM table
    WHERE NVL(kolumna, 0) = 0
\end{lstlisting}

\end{document
}

Taki zapis spowoduje wygenerowanie zapytania SQL, gdzie słowa kluczowe oraz niektóre funkcje zostaną wypisane czcionką pogrubioną, pozostałem elementy natomiast zwykłą. Także nie wszystkie elementy Oracle SQL zostają poprawnie zakwalifikowane i część z nich wyświetla się w „zwykły” sposób.

Drugim problem są nazwy funkcji, ja chciałbym aby zostały one wyświetlone pochyłą czcionką a nie pogrubioną.

Najprostszym rozwiązaniem oczywiście byłoby dodanie odpowiednich słów kluczowych zarówno z deklaracji języka, oraz utworzenie odpowiedniej klasy dla funkcji, które byłby wypisywane kursywą. Nie można jednak zmienić przyporządkowania już przypisanych funkcji, także mogę np. wypisać funkcję NVL kursywą, ale już z funkcją MIN mi się to nie uda.

Pozostaje więc zdefiniowanie nowego języka, który będzie zachowywał się tak, jak tego oczekuję. Nie jest to trudne, tym bardziej, że dysonujemy już przecież definicją dla języka SQL, wystarczy tylko odpowiednio ją zmodyfikować.

Najpierw należy odszukujemy definicję języka SQL, w moim przypadku znajduje się ona w tym pliku /usr/share/texmf-texlive/tex/latex/listings/lstlang1.sty:

1393
1394
1395
1396
1397
1398
1399
1400
1401
%%
%% SQL definition (c) 1998 Christian Haul
%%                (c) 2002 Neil Conway
%%                (c) 2002 Robert Frank
%%                (c) 2003 Dirk Jesko
%%
\lst@definelanguage{SQL}%
    {morekeywords={ABSOLUTE,ACTION,ADD,ALLOCATE,ALTER,ARE,AS,ASSERTION,%
       AT,BETWEEN,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,%

Pozostaje teraz zdefiniować własny dialekt, skopiować definicję dialektu SQL oraz ją zmodyfikować. Poniżej moja propozycja:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
\lstdefinelanguage[Oracle]{SQL}%
  {morekeywords={ABSOLUTE,ACTION,ADD,ALLOCATE,ALTER,ARE,AS,ASSERTION,%
      AT,BETWEEN,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,%
      CATALOG,CHAR_LENGTH,CHARACTER_LENGTH,CLUSTER,%
      COLLATION,COLUMN,CONNECT,CONNECTION,CONSTRAINT,%
      CONSTRAINTS,CONVERT,CORRESPONDING,CREATE,CROSS,CURRENT_DATE,%
      CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_USER,DAY,DEALLOCATE,%
      DEC,DEFERRABLE,DEFERED,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,%
      DISCONNECT,DOMAIN,DROP,ELSE,END,EXEC,EXCEPT,EXCEPTION,EXECUTE,%
      EXTERNAL,EXTRACT,FALSE,FIRST,FOREIGN,FROM,FULL,GET,GLOBAL,%
      GRAPHIC,HAVING,HOUR,IDENTITY,IMMEDIATE,INDEX,INITIALLY,INNER,%
      INPUT,INSENSITIVE,INSERT,INTO,INTERSECT,INTERVAL,%
      ISOLATION,JOIN,KEY,LAST,LEADING,LEFT,LEVEL,LIMIT,LOCAL,%
      MATCH,MINUTE,MONTH,NAMES,NATIONAL,NATURAL,NCHAR,NEXT,NO,NOT,NULL,%
      OCTET_LENGTH,ON,ONLY,ORDER,ORDERED,OUTER,OUTPUT,OVERLAPS,%
      PAD,PARTIAL,POSITION,PREPARE,PRESERVE,PRIMARY,PRIOR,READ,%
      RELATIVE,RESTRICT,REVOKE,RIGHT,ROWS,SCROLL,SECOND,SELECT,SESSION,%
      SESSION_USER,SIZE,SPACE,SQLSTATE,SUBSTRING,SYSTEM_USER,%
      TABLE,TEMPORARY,THEN,TIMEZONE_HOUR,%
      TIMEZONE_MINUTE,TRAILING,TRANSACTION,TRANSLATION,%
      TRUE,UNIQUE,UNKNOWN,USAGE,USING,VALUE,VALUES,%
      VARGRAPHIC,VARYING,WHEN,WHERE,WRITE,YEAR,ZONE,%
      AND,ASC,CHECK,COMMIT,DESC,DISTINCT,GROUP,IN,% FF
      LIKE,NUMBER,ROLLBACK,VARCHAR2,% FF
      UNION,UPDATE,% RF
      ALL,ANY,CUBE,CUBE,DEFAULT,DELETE,EXISTS,GRANT,OR,RECURSIVE,% DJ
      ROLE,ROLLUP,SET,SOME,TRIGGER,VIEW},% DJ
   morendkeywords={BIT,BLOB,CHAR,CHARACTER,CLOB,DATE,DECIMAL,FLOAT,% DJ
      INT,INTEGER,NUMERIC,SMALLINT,TIME,TIMESTAMP,VARCHAR},% moved here
   sensitive=false,% DJ
   morecomment=[l]--,%
   morecomment=[s]{/*}{*/},%
   morestring=[d]',%
   morestring=[d]",%

  %% dodatkowe słowa kluczowe dla Oracla oraz definicja funkcji

    morekeywords={SAMPLE,SEED,ROWNUM,SYSDATE,IS,MINUS,WITH,START,%
      PARTITION,OVER,UNBOUNDED,PRECEDING,CURRENT,ROW,FOLLOWING,%
      MODIFY,RENAME,TO,REFERENCES,DISABLE,ENABLE,NOVALIDATE,EXCEPTIONS,%
      TRUNCATE,MERGE,MATCHED,SAVEPOINT,FORCE,OPTION,SEQUENCE,CYCLE,%
      INCREMENT,MINVALUE,MAXVALUE},
    classoffset=1,
    morekeywords={dbms_random,LOWER,UPPER,INITCAP,LPAD,RPAD,LTRIM,%
      RTRIM,TRIM,SUBSTR,SUM,MIN,MAX,INSTR,LENGTH,ROUND,TRUNC,POWER,%
      SQRT,SIGN,ABS,MOD,NULLIF,SIN,COS,TAN,SINH,COSH,TANH,REPLACE,%
      TRANSLATE,TO_CHAR,TO_NUMBER,DECODE,NVL,NVL2,COALESCE,AVG,%
      COLLATE,COUNT,STDDEV,VARIANCE,MEDIAN,MONTHS_BETWEEN,ADD_MONTHS,%
      LAST_DAY,NLSSORT,TO_DATE,GROUPING,RANK,DENSE_RANK,ROW_NUMBER,%
      FIRST_VALUE,LAST_VALUE,LEAD,LAG},
    keywordstyle=\textit,
  }[keywords,comments,strings]%

Oczywiście, każdy będzie musiał dostosować ten zapis pod siebie w zależności od funkcji które są używane, być może o niektórych słowach kluczowych SQL także zapomniałem. Należy pamiętać, że jeżeli jakieś słowo jest wypisywane pogrubionymi literami (a np. powinno być funkcją i chcemy aby zostało zapisane kursywą), to należy sprawdzić czy jest ono zdefiniowane w jakieś wcześniejszej linii. W takim przypadku należy je stamtąd usunąć.

Użycie takiego dialektu wygląda tak:

6
7
8
9
10
11
12
\lstset{language=[Oracle]SQL,
    basicstyle=\small,
    showstringspaces=false,
    tabsize=4,
    inputencoding=utf8x,
    extendedchars=\true,
}

Źródła

Tags: , ,

Polskie znaki podczas formatowania kodu źródłowego w Latexu

Umieszczając przykład kodu źródłowego przy użyciu pakietu listings w Latexu trafiłem na problem: jak wyświetlić poprawnie polskie znaki w dokumencie. Umieszczenie jakiegokolwiek polskiego znaczku w obrębie kodu źródłowego skutkowało zgłoszeniem błędu i koniec, poza zamianą polskiej literki na łacińską wiele zrobić się nie dało.

Okazało się, że problem występuje w sytuacji, gdy plik źródłowy jest zapisany w standardzie UFT-8. W przypadku użycia innego kodowanie, problemów być nie powinno. Pakiet listings nie obsługuje za dobrze kodowania UTF. Po dalszych poszukiwaniach, pojawiło się kilka rozwiązań problemu:

  1. Umieszczenie kodu źródłowego w oddzielnym pliku z kodowaniem np. ISO-8859-2, w włączanie tego kodu do głównego dokumentu (mi to rozwiązanie nie bardzo pasowało, musiałbym bym utrzymywać jakieś 200 dodatkowych plików).
  2. Włączenie obsługi UTF-8 w pakiecie listings:
    \lstset{
            inputencoding=utf8,
            extendedchars=\true
    }

    Teoretycznie rozwiązanie działa, przynajmniej kompilacja raportu przebiega poprawnie, jednak polskie znaki są źle umieszczane w dokumencie (każda polska litera jest zawsze umieszczana na początku wyrazu w którym występuje).

  3. Użycie polecenia \literate i zmiana polskich liter na odpowiednie kodowanie Latexa
  4. Trzecie podejście okazało się najlepsze, ponieważ umożliwiło wstawianie polskich znaków w kodzie źródłowym oraz nie wymagało wprowadzania żadnych zmian zarówno po stronie przykładów jak i samego kodowania plików. Tak wygląda moja definicja języka:

    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    \lstset{
            language=SQL,
        inputencoding=utf8x,
        extendedchars=\true,
        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
    }

    Użycie tej definicj pozwoli na odpowiednią interpretacją polskich znaków jak i też innych, pod warunkiem że odpowiednio zdefiniujemy mapowanie.

    Źródła

Tags: , , ,

Spis treści w prezentacji utworzonej przy użyciu Latex

W przypadku Latexa i tworzenia prezentacji przy użyciu pakietu Beamer tworzenie spisu treści jest proste, i składa się z dwóch kroków:

  1. Dodać do prezentacji informacji o podziale jej na sekcje, podsekcje i pod podsekcje (czyli rozdziały i pod rozdziały). Można to zrobić przy pomocy poleceń:
    \section{Tytuł sekcji}

    \subsection{Tytuł podsekcji}

    \subsubsection{Tytuł pod podsekcji
    }

    Jeżeli użyjemy któregoś polecenia w takiej formie: \section*{Tytuł sekcji}, to wybrana sekcja nie będzie uwzględniania w spisie treści.

  2. Wygenerować wpis przy użyciu polecenia \tableofcontents. Pozwoli to na wstawienie spisu treści w miejscu wystąpienia tego polecenia.

I tak jak z punktem pierwszym problemów raczej być nie powinno, to mamy spory wpływ na generowanie spisu treści. I poniżej kilka przykładów, jak może wyglądać spis treści, generowany zarówno na początku dokumentu, jak również przed większymi fragmentami prezentacji.

Podstawowy spis treści, generuje na slajdzie wszystkie sekcji, podsekcje i pod podsekcje:

\begin{frame}{Spis treści 1}
    \tableofcontents
\end{frame
}

W przypadku niewielkich prezentacji, taki spis treści może być w porządku. Jednak jeżeli prezentacja jest długa, jest podzielona na wiele części, to nie będzie to zbyt przejrzyste.

Można wobec tego wygenerować spis treści zawierający tylko główne punkty:

\begin{frame}{Spis treści 2}
    \tableofcontents[pausesections,hideallsubsections]
\end{frame
}

Powyższy wpis wyświetli tylko główne sekcje dokumentu (parametr hideallsubsections) oraz pozwoli na wyświetlenie spisu treści stopniowo, po jednym punkcie (parametr pausesections). Dzięki temu można spokojnie omówić, co będzie przedmiotem wykładu w każdej części prezentacji.

Przydatne także może być generowanie spisu treści przed rozpoczęciem danej sekcji, dzięki czemu można przedstawić dokładny plan prezentacji.

\begin{frame}{Spis treści 3}
    \tableofcontents[currentsection, hideothersubsections,sections={<1-3>}]
\end{frame
}

Pojawiły się się 3 nowe parametry:

  • currentsection – powoduje, że wszystkie sekcje poza aktualną będą wyświetlono jako przyciemnione, czyli aktualna sekcja zostanie wyróżniona
  • hideothersubsections – podsekcje z innych sekcji niż aktualna zostaną ukryte, czyli zostaną tylko główne sekcje
  • sections – pozwala określić, które sekcje mają zostać wyświetlone, w tym przypadku, czyli tutaj od 1 do 3, a aktualna sekcja ma numer 2

Pojawia się jednak pewien problem, gdy nie chcemy wyświetlić pod podsekcji. Nie ma w takim przypadku możliwości wyłączenia ich wyświetlenie (przy pozostawieniu wyświetlania tylko podsekcji). Sposobem na to jest użycie dodatkowej komendy \setcounter, która pozwala na zdefiniowanie poziomu zagłębienia spisu treści:

\begin{frame}{Spis treści 4}
        \setcounter{tocdepth}{2}
        \tableofcontents[sectionstyle=show/hide,subsectionstyle=show/show/hide]
\end{frame
}

Oprócz nowej komendy pojawiły się dwie dodatkowe opcje:

  • sectionstyle – pozwala na określenie, czy i jak mają być wyświetlane sekcje, pierwszy parametr dotyczy aktualnej sekcji (ma zostać pokazana), drugi mówi o pozostałych sekcjach (mają zostać schowane)
  • subsectionstyle – ten parametr natomiast pozwala określić co ma się dziać z podsekcjami: pokaż aktualną podsekcję, pokaż podsekcje aktualnej sekcji, ukryj inne podsekcje

Zamiast hide można także użyć przełącznika shaded.

Jak widać, te dwie ostatnie opcje tak naprawdę pozwalają zdefiniować co ma się dziać ze spisem treści, pozostałe przełączniki tylko w odpowiedni sposób je konfigurują.

Źródła

Tags: , ,

Dostępne formaty prezentacji w LaTeX

Podczas tworzenia prezentacji w LaTeXu przy użyciu rozszerzenia Beamer prędzej czy później trzeba będzie wybrać jej odpowiedni wygląd. W przypadku Beamera do dyspozycji mamy:

  • zestawy tematów – 29
  • zestawy kolorów – 17
  • zestawy czcionek – 6

Istnieje strona Beamer Theme Matrix, gdzie można obejrzeć jak wygląda każdy z tych tematów, ale najlepiej sprawdzić to na własnej prezentacji. Można to zrobić ręcznie, modyfikując odpowiednie parametry w prezentacji, ale roboty z tym trochę jest. Druga możliwość to utworzenie skryptu, który wygeneruje dla nas prezentację w wybranych formatach.

Utworzenie prezentacji przy użyciu zdefiniowanych styli

Jestem z natury leniwym człowiekiem, więc prościej było napisać krótki skrypt, który w razie potrzeby zapisze mi prezentację w każdym dostępnym formacie, a ja będę mógł wybrać sobie ten, który mi najbardziej pasuje. Skrypt generujący prezentację we wszystkich dostępnych tematach:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash

# theme list
#THEMES="AnnArbor Antibes Bergen Berkeley Berlin Boadilla boxes CambridgeUS Copenhagen Darmstadt default Dresden Frankfurt Goettingen Hannover Ilmenau JuanLesPins Luebeck Madrid Malmoe Marburg Montpellier PaloAlto Pittsburgh Rochester Singapore Szeged Warsaw"

THEMES=`ls /usr/share/texmf/tex/latex/beamer/themes/theme/ | grep "^beam" | cut -d . -f 1  | sed "s/beamertheme//" | tr '\n' ' '`

TEX_FILE="subversion-jak_dziala-prezentacja"
OUTPUT_DIR="out"

for THEME in $THEMES
do
        INPUT_FILE="$TEX_FILE.tex"
        OUTPUT_FILE="$TEX_FILE-theme-$THEME.tex"

        cp $INPUT_FILE $OUTPUT_FILE
        sed -i "s/^\\\usetheme.*/\\\usetheme{$THEME}/" $OUTPUT_FILE

        pdflatex -output-directory=out $OUTPUT_FILE
        pdflatex -output-directory=out $OUTPUT_FILE

        rm $OUTPUT_FILE
done;

Krótkie wyjaśnienie tego co się w nim dzieje:

  • THEMES=`ls ....
    Utworzenie listy dostępnych tematów, należy zwrócić przede wszystkim uwagę na to, czy istnieje zdefiniowana ścieżka do ich definicji, w moim przypadku katalogu /usr/share/texmf/tex/latex/beamer/themes/theme/. Można także usunąć tę linię i odkomentować linię 4, która zawiera listę predefiniowanych tematów.
  • TEX_FILE="subversion-jak_dziala-prezentacja"
    Nazwa pliku TeX, który zawiera definicję prezentacji. Nazwa powinna być podana bez rozszerzenia.
  • OUTPUT_DIR="out"
    Katalog na dane tymczasowe i wynikowe pliki PDF.
  • cp $INPUT_FILE $OUTPUT_FILE
    Utworzenie kopii aktualnej prezentacji, po inną nazwą , która zawiera m.in. nazwę przetwarzanego tematu.
  • sed -i "s/^\\\usetheme.*/\\\usetheme{$THEME}/" $OUTPUT_FILE
    Podmiana w zawartości pliku nazwy użytego tematu. Ważne! W danej prezentacji należy określić temat przy użyciu \usetheme. Jeżeli parametr ten nie zostanie zdefiniowany to skrypt nie zadziała poprawnie.
  • pdflatex -output-directory=out $OUTPUT_FILE
    Wygenerowanie prezentacji z wybraną prezentacją. Polecenie wywołane dwukrotnie, przy pierwszym przebiegu tworzy spis treści.
  • rm $OUTPUT_FILE
    Usunięcie zbędnego już pliku tymczasowego z prezentacją.

Utworzenie prezentacji przy użyciu dostępnych kolorów

Skrypt ten przypomina bardzo poprzedni, więc omówię tylko różnice pomiędzy nimi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash

# colors list
#COLORS="albatross beaver beetle crane default dolphin dove fly lily orchid rose seagull seahorse sidebartab structure whale wolverine"

COLORS=`ls /usr/share/texmf/tex/latex/beamer/themes/color/ | grep "^beamer" | cut -d . -f 1 | sed "s/beamercolortheme//" | tr '\n' ' '`

TEX_FILE="subversion-jak_dziala-prezentacja"
OUTPUT_DIR="out"

for COLOR in $COLORS
do
        INPUT_FILE="$TEX_FILE.tex"
        OUTPUT_FILE="$TEX_FILE-color-$COLOR.tex"

        cp $INPUT_FILE $OUTPUT_FILE
        sed -i "s/^\\\\usecolortheme.*/\\\\usecolortheme{$COLOR}/" $OUTPUT_FILE

        pdflatex -output-directory=out $OUTPUT_FILE
        pdflatex -output-directory=out $OUTPUT_FILE

        rm $OUTPUT_FILE
done;
  • COLORS=`ls ....
    Zdefiniowanie zmiennej zawierającej listę dostępnych motywów kolorystycznych. Można odkomentować linię 4 a tę usunąć, jeżeli ścieżka dostępu się nie zgadza.
  • sed -i "s/^\\\\usecolortheme.*/\\\\usecolortheme{$COLOR}/" $OUTPUT_FILE
    Podmiana polecenia \usecolortheme. Polecenie to musi istnieć w pliku z prezentacją, inaczej nic nie zadziała.

Utworzenie prezentacji przy użyciu dostępnych czcionek

Ostatnim skryptem będzie ten, który generuje prezentację dla wybranych czcionek:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash

# theme list
#FONTS="default professionalfonts serif structurebold structureitalicserif structuresmallcapsserif"

FONTS=`ls /usr/share/texmf/tex/latex/beamer/themes/font/ | grep '^beamerfonttheme' | cut -d . -f 1 | sed "s/beamerfonttheme//" | tr '\n' ' '`

TEX_FILE="subversion-jak_dziala-prezentacja"
OUTPUT_DIR="out"

for FONT in $FONTS
do
        INPUT_FILE="$TEX_FILE.tex"
        OUTPUT_FILE="$TEX_FILE-font-$FONT.tex"

        cp $INPUT_FILE $OUTPUT_FILE
        sed -i "s/^\\\usefonttheme.*/\\\usefonttheme{$FONT}/" $OUTPUT_FILE

        pdflatex -output-directory=out $OUTPUT_FILE
        pdflatex -output-directory=out $OUTPUT_FILE

        rm $OUTPUT_FILE
done;

Różnice jak powyżej, w linii 6 definicja dostępnych formatów czcionek. A w linii 17 zmiana wartości na aktualnie wybraną czcionkę.

Skrypty te powinny pomóc w wyborze odpowiedniego tematu dla prezentacji, co powinno ułatwić zarówno jej tworzenie jak i późniejszy odbiór.

Źródła

Tags: , , ,