LaTeX Beamer 小ネタ集
気付けば卒論の試問会もBeamerで乗り切ってしまいました.ということで小ネタ集.
pdfの栞の文字化けを防ぐ
プリアンブルに以下を追加.栞は section や subsection で挿入可能
\ifnum 42146=\euc"A4A2 \AtBeginDvi{\special{pdf:tounicode EUC-UCS2}} \else \AtBeginDvi{\special{pdf:tounicode 90ms-RKSJ-UCS2}} \fi
背景の図を設定
プリアンブルに以下を追加.
\usebackgroundtemplate{ \includegraphics[width=\paperwidth,height=\paperheight]{image/bg} }
途中のページで背景の画像を変えたくなった
\frame { ... } の代わりに
{ \usebackgroundtemplate{\includegraphics[width=\paperwidth]{image/bg2}} \frame{ %% ... } }
フォントを変えたい (or 埋め込みたい)
PXchfon とかどうですか.
ページのタイトルの色やフォントを変更したい
プリアンブルに以下を追加.
\setbeamerfont{frametitle}{size=\Huge, series=\bfseries} \setbeamercolor{frametitle}{fg=white}
テキストの色を変更
プリアンブルに以下を追加.
\setbeamercolor{normal text}{fg=black, bg=white}
block の設定
alertblockのタイトルと本体の色を設定する例 (プリアンブルに追加).
\setbeamercolor{block title alerted}{bg=red!50!white, fg=black} \setbeamercolor{block body alerted}{bg=red!10!white, fg=black}
ヘッダのサイズ変えたい
パワポの背景をパクると「\frametitle{...} で表示させる文字列の位置を調整したい!」となるよね.
以下は私の設定 (プリアンブルに追加).raisebox以外に良い方法があったら誰か教えて下さい.
\setbeamertemplate{frametitle}{\raisebox{-18pt}[0pt][12mm]{\insertframetitle}}
箇条書きの行頭記号を変更したい
四角形+赤色の例 (プリアンブルに追加)
\setbeamercolor{item}{fg=red} \setbeamertemplate{items}[square]
記号は default, square, circle, ball が存在.itemize環境を変更したいが,enumerate環境等を変更したくない場合は
\setbeamercolor{itemize item}{fg=red} \setbeamertemplate{itemize items}[square]
ソースコードを貼り付けたい
listings.sty を利用する.日本語を使いたければ jlistings.sty も.
プリアンブルに以下を挿入.lstset 内の language を指定しておくと,挿入の際に毎回言語を指定しなくて良くなり楽.
\usepackage{listings} \lstset{ %% language={C}, %プログラミング言語によって変える。 basicstyle={\ttfamily\small}, keywordstyle={\color{blue}}, commentstyle={\color{green}}, stringstyle=\color{red}, tabsize=2, %% breaklines=true, %折り返し }
貼り付けの際は frame 環境に fragile オプションが必須.以下は例.
\begin{frame}[fragile] \frametitle{Factory によるクラス群の隠蔽} \begin{lstlisting}[language={Csharp}] class DOMBuilderTest : TestCase { private OutputBuilder builder; public void testAddAboveRoot() { string invalidResult = "<orderes>" + ...; _builder = new DOMBuilder("orders");_ builder.addBelow("order"); try { ... } } } \end{lstlisting} \end{frame}
「標準でC#無いじゃねえかゴラァ」ってときは以下を追加.他の言語でも似たような感じでOKでしょう.
\lstdefinelanguage{CSharp} { morecomment = [l]{//}, morecomment = [l]{///}, morecomment = [s]{/*}{*/}, moredelim=[is][\underbar]{_}{_}, morestring=[b]", sensitive = true, morekeywords = {abstract, event, new, struct, var, as, explicit, null, switch, base, extern, object, this, bool, false, operator, throw, break, finally, out, true, byte, fixed, override, try, case, float, params, typeof, catch, for, private, uint, char, foreach, protected, ulong, checked, goto, public, unchecked, class, if, readonly, unsafe, const, implicit, ref, ushort, continue, in, return, using, decimal, int, sbyte, virtual, default, interface, sealed, volatile, delegate, internal, short, void, do, is, sizeof, while, double, lock, stackalloc, else, long, static, enum, namespace, string} }
ページ内のテキストを上に揃えたい
パワポのテキストって開始位置が上の方に固定されてるけど,beamerってテキストが中央に揃えられるよねー,っていう話.
\frame[t] { %% ... }
アニメーションもどき
プレゼン中に図がアニメーションするのではなく,ページ毎に図を切り替えていくだけで良いなら beamerscape とかが便利かも.
inkscapeでSVGを作成→レイヤーの名前に「どのページで表示させるか」という情報を入れておく→export_overlaysでSVGをpdfに分割+利用するためのtexファイルを吐かせる みたいな流れ.書いてて全然便利に見えなくてウケる.
verbatime 使いたい
containsverbatim の s を忘れて悩んだのは良い思い出です.
\frame[containsverbatim] { %% ... }
OMakefile
platexのオプションに -interaction=nonstopmode を付けておくと,エラー発生時に入力を求めて来なくなって幸せ.
LATEX = platex -interaction=nonstopmode LATEXFLAGS = -shell-escape -kanji=euc DVIPDFM = dvipdfmx DVIPDFMFLAGS = -V 6 TETEX2_ENABLED = false TARGET = slide LaTeXDocument($(TARGET), $(TARGET)) .PHONY: clean .DEFAULT: $(TARGET).dvi $(TARGET).pdf clean: rm -rf *.toc *.log *.dvi *.fls *.aux *.snm *.nav *.out *.bbl *.blg *.vrb
エラーが見にくいので適当なシェルスクリプトの関数を作って利用.
# colors (256color) COLOR_NORMAL=`echo -e "\033[0;38m"` COLOR_RED=`echo -e "\033[1;31m"` COLOR_BLUE=`echo -e "\033[0;38;5;14m"` COLOR_GREEN=`echo -e "\033[0;38;5;120m"` COLOR_YELLOW=`echo -e "\033[0;38;5;226m"` function comake() { LANG=C omake "$@" 2>&1 | sed \ -e "s@[Ee]rror:.*@$COLOR_RED&$COLOR_NORMAL@g"\ -e "s@cannot\sfind.*@$COLOR_RED&$COLOR_NORMAL@g"\ -e "s@[Ww]arning:.*@$COLOR_BLUE&$COLOR_NORMAL@g"\ -e "s@^[Ww]arning.*@$COLOR_BLUE&$COLOR_NORMAL@g"\ -e "s@\*\*\* omake: done .*@$COLOR_GREEN&$COLOR_NORMAL@g"\ -e "s@^File .*@$COLOR_YELLOW&$COLOR_NORMAL@g" }