LaTeXに関する雑多なメモ
この記事はLaTeXに関する備忘録です。記事になっていない項目の中には再現性がないものが含まれる可能性があります。予めご了承ください。なお,括弧内は追記した日付を表しています*1。
- 文書を書く前に
- LaTeX2eの基本部分
- algorithm,algpseudocode
- beamer
- hyperref
- mathtools
- tcolorbox
- tikz
- titlesec(2021.04.10)
- xparse(2020.04.26)
- 参考文献
文書を書く前に
パッケージのインストール時にすること(2021.04.13)
styファイルを新たに追加する際には,そのファイルの存在をLaTeX側に知らせる必要がある。これはターミナルなどで「sudo mktexlsr」を実行することで実現できる*2。自作パッケージを作る場合(2021.09.18)
自分でstyファイルを作成する方法を知りたい場合は以下の(他の方が執筆なさった)記事が参考になります。参考記事: LaTeXでパッケージ(スタイルファイル)を自作する - Qiita
LaTeX2eの基本部分
styファイル読み込み時のオプションについて(2021.06.20)
\documentclassで指定したオプションは\usepackageにも引き継がれる[1]。したがって,以下に示す3つのコードは等価になる。% Code 1 % \documentclass[uplatex]{jsarticle} \usepackage[dvipdfmx]{hyperref} % Code 2 % \documentclass[uplatex, dvipdfmx]{jsarticle} \usepackage[dvipdfmx]{hyperref} % Code 3 % \documentclass[uplatex, dvipdfmx]{jsarticle} \usepackage{hyperref}
コマンド定義について
\newcommand,\def,\DeclareMathOperator(2019.07.14)
記事(自作コマンドが作る快適なLaTeX環境 - ト部蛸焼のブログ)を書いた。もっと多様なコマンド定義をしたい場合はxparseパッケージを利用する(別の記事(\NewDocumentCommandによる自由な引数設定 - ト部蛸焼のブログ)を参照)。コマンド内で改行を使う方法(2021.04.13)
人は普段から改行を\parで行う*3のだから\parを使えば良い。“文数両用”のコマンドを作る方法(2021.06.20)
数式モードの中でも外でも同じ呼び出し方で使えるコマンドを作りたいとする。例えば,「」と出力するコマンドは,数式モードからだと単に「\textsf{P}_1」で良いが,そうでない場合は「$\textsf{P}_1$」(半角ドルだとはてなブログ上でも数式モードに入ってしまうため全角ドルで書いていますが,LaTeXのコードでは半角ドルを使います。)というように一度数式モードの中に入る必要がある。この状況をうまく克服して,数式モードの中からも外からも単一のコマンドによって$\textsf{P}_1$を呼び出せるようにしたいとする。このような場合,\ensuremathを使ってコマンドを定義すればよい[1]。% LaTeX2eノーマルによる \newcommand{\hoge}{% \ensuremath{\textsf{P}_1}% }% % xparseによる \NewDocumentCommand{\hoge}{}{% \ensuremath{\textsf{P}_1}% }%
コマンド名の取得—\csname ~ \endcsname—(2021.09.18)
詳細はTeX入門/マクロの作成 - TeX Wikiを参照のこと。カウンタ
カウンタの値によって処理を変える(2019.10.14)
記事(カウンタとif文でうまいこと問題番号を付ける - ト部蛸焼のブログ)を書いた。カウンタの値が1のとき*4だけ処理を変える方法は以下の通り。\newcounter{qnum}% \newcommand{\toi}{% \refstepcounter{qnum}% qnum += 1 \ifnum \value{qnum}>1% % qnum > 1 のときの処理 % \else% % qnum ≦ 1 のときの処理 % \fi% }
カウンタの表示形式(2021.04.14)
通常,カウンタはアラビア数字で「1,2,3」と出力されるが,これはローマ数字や英字に変更できる。変更のしかたを以下に示す。% 「qnum」というカウンタが既に定義されているとする % \arabic{qnum} % 1, 2, 3 \roman{qnum} % i, ii, iii \Roman{qnum} % I, II, III \alph{qnum} % a, b, c \Alph{qnum} % A, B, C
テキストモードの特殊なコマンド
上付き文字と下付き文字(2021.06.20)
上付き文字や下付き文字は数式モードに入らずとも使用できる。上付き文字には\textsuperscriptコマンドを,下付き文字には\textsubscriptコマンドを使えばよい。ただし,これらは行を跨いでの出力はできないため注意[1]。リガチャ禁止(2021.06.20)
習慣的にリガチャをしない単語が存在する*5。このようなとき,リガチャを防ぐには「\textcompwordmark」を挿入すればよい[1]。陽にスペースを出力する(2021.06.20)
プログラミング言語によるサンプルコードを書くときに,英字スペースの有無を陽に示す記号「␣」を書くことがある。この記号は\textvisiblespaceによって出力できる[1]。簡易的な箱(2021.06.20)
\makebox[<width>][<pos>]{<text>} \framebox[<width>][<pos>]{<text>} \parbox[<pos>][<height>][<inner-pos>]{<width>}{<text>}
\makeboxと\frameboxは,widthに指定した幅,posで指定した位置で,textを箱に入れる。makeboxの場合には枠は出力されず,frameboxの場合には枠も出力される。
widthには,\height(ベースラインより上の高さを表す),\depth(ベースラインより下の高さ(深さ)を表す),\totalheight(\heightと\depthの合計の高さを表す),\width(幅と同じ分の高さを表す)といったコマンドを使うこともできる。また,posはl(左詰めを表す),r(右詰めを表す),s(均等割り付けを表す)で指定する。
\parboxは,まずposに指定した位置に,heightとwidthで指定した大きさの箱を考え,その内部にtextを表示させる。このときtextと箱の位置関係をinner-posで指定した設定で定める。inner-posが省略された場合はposと同じに設定される。
posやinner-posはt(上揃えを表す),b(下揃えを表す),c(中央揃えを表す),s(均等割り付けを表す)で指定する。
詳細な説明は別の文献[1]を参照のこと。
文章のハイライト(2020.07.26)
上の図の「準同型性」のように,文字の背景に色を付けて,さらに文字の下に説明を付けるようにしたいときの方法を,この記事(LaTeX文書で文字列をハイライト&真下にキャプションしてみたい - ト部蛸焼のブログ)で紹介した。
表(tabular)のセル間隔を変更する(2021.04.13)
tabular環境による表は列と列の間の幅を「@{~~}」で~~に指定することができる。\begin{tabular}{r@{.}l@{\quad}l} 3 & 5 & 最大 \\ 1 & 1 & 最小 \\ 2 & 5 & \\ \end{tabular}
list環境(2021.05.02)
参考記事
algorithm,algpseudocode
キャプションの出力をいじる(2020.01.15)
caption.styを用いてキャプションの形式を変えたいときの方法。これについては記事(algorithmパッケージでもcaptionに一貫性を持たせよう - ト部蛸焼のブログ)を書いた。RequireやEnsureのようなものを増強する(2021.06.17)
algpseudocode.styではalgorithm環境の内部で使うとその冒頭にアルゴリズムの説明を挿入することができるコマンド(RequireやEnsureなど)がデフォルトで定義されている。これと類似したコマンドを新規に作成したい場合,次に示すように\algnewcommandを使って新しくコマンドを定義すればよい*6。出力のイメージは下図の「Input」や「Output」を参照されたい。\algnewcommand\algorithmicinput{\textbf{Input}} \algnewcommand\algorithmicoutput{\textbf{Output}} \algnewcommand\Input{\item[\algorithmicinput]} \algnewcommand\Output{\item[\algorithmicoutput]}
出力は以下の図の通り.
beamer
パッケージの基本(2020.12.08)
記事(Beamerによるスライドの体裁を整える - ト部蛸焼のブログ)を書いた。以下のような小技を書いている。- フォントをいじる
- テーマの配色をいじる
- フレーム番号の大きさをいじる
- フレームタイトルのフォントをいじる
- 脚註番号をいじる
特定のフレームに対してmini frameを生成しない方法(2021.04.24)
特定のフレームに関する"mini frame" *7 の出力を停止したい場合の対処法。ここに載っている→How to remove some pages from the navigation bullets in Beamer? - TeX - LaTeX Stack Exchange。これを利用すると,例えば以下のコードのように*8,\AtBeginSection*9で挿入されるフレームをnavigation barのmini frameの数に含めないという設定が可能になる。
% 引用先のサイトにある以下の2つのコマンドを定義しておく % - \beamer@writeslidentry@miniframesoff % - \miniframesoff \AtBeginSection{% {% 【A】 \miniframesoff% \begin{frame}\frametitle{目次}% \tableofcontents[currentsection]% \end{frame}% }% 【A】 }%
hyperref
\texorpdfstring(2021.09.18)
hyperrefパッケージを使用する場合,章見出しに数式を用いると警告が出されます。PDFのしおりに使えない文字列を使用していることが原因のようで,これを回避するコマンドに\texorpdfstringがあります。例えば「$\zeta(2)$の値」というタイトルのsectionを作りたい場合は以下のように代替テキストと一緒に記述します。% 「$\zeta(2)$の値」というタイトルにしたい % % 警告が出る例 \section{$\zeta(2)$の値} % % % \texorpdfstring{TeX用}{PDFのしおりなど用} \section{\texorpdfstring{$\zeta(2)$}{ζ(2)}の値} %
mathtools
\vdotswithin(2021.10.26)
\vdots()の出力される位置を良い位置に合わせてくれるコマンド。\vdotswithinと\shortvdotswithinの2種類がある。tcolorbox
枠のない箱(2021.04.13)
tcbsetに相当する位置に「frame hidden」または「frame empty」を入れればOK。tikz
表記(2021.04.13)
正しくはTikZ*10。「TikZ ist kein Zeichenprogramm」の略*11。これはドイツ語であり,日本語では「TikZはドローツールではない」という意味になる。「kein」は否定の意味を出すため強調されて斜体になっている。改行(2021.04.13)
TikZで描画するノードに文字を入力する場合,nodeのオプションとして「align」を指定すると改行が可能になる。alignにはleft/center/rightの3種類を設定できる。\begin{tikzpicture}% \node[align=left] at (0,0) {1行目\\2行目};% \end{tikzpicture}%
overblace,underblace(2021.04.13)
underblaceは\underblaceに対応。出力例は以下の通り。%% プリアンブルにて %% \usetikzlibrary{decorations.pathreplacing}% %% 使いたい箇所にて %% \draw[decoration={brace,amplitude=0.5em,aspect=0.1,raise=-3pt},decorate] (0,0) -- (2,2);%
decorationのキーについて:
- brace (括弧) 括弧を出すよという合図
- amplitude (振幅) 括弧の伸びる方向と垂直方向にどれだけ幅を持たせるか default = 2.5pt
- aspect (比) 括弧のちょびんと出ているところの出力位置を指定 (が理想) default = 0.5
- raise 括弧をどれだけ離すか
なお,最後のdecorateがないとdecorationの中身の機能は活きない。
aspect=0.5のときには以下で括弧の「つまみ」部分に文字が出力される。
\draw [decoration={brace,amplitude=0.5em,raise=-3pt},decorate] (0,0) -- node [below]{\footnotesize 10 bits} (1,0);%
titlesec(2021.04.10)
記事(titlesecパッケージで見出しの書式を変える - ト部蛸焼のブログ)を書いた。そのときの参考コード(Overleaf版)はここ→Overleaf, Online LaTeX Editor。xparse(2020.04.26)
記事(\NewDocumentCommandによる自由な引数設定 - ト部蛸焼のブログ)を書いた。参考文献
[1] "LaTeX 2e for authors". LaTeX 3 Project Team. 2020/5/25 published ver.*1:過去記事の紹介になっているものはその記事の公開日を表示しています。
*2:これにより「ls-R」と呼ばれる「ファイルの一覧表」を更新することができ,いま新たに追加したファイルの存在をLaTeX側に知らせることができます。参考:LaTeX入門/各種パッケージの利用 - TeX Wiki
*3:通常の文章では空行を挟むことによっても改行はできる。コマンド定義においては空行を挟むことによっては改行ができない場合がある。
*4:ただしこのカウンタは1以上の自然数を出力することしか想定しないものとする。
*5:例えば「shelfful」という語は「shelf + full」という語の構成を強調するため,リガチャを行わない。
*6:サンプルコード中のコマンド名はRequireやEnsureのものを参照した。
*7:ナビゲーションバー (navigation bar) の下でいま発表しているフレームの全体における位置を示す(デフォルトでは)円形のシンボルのこと。
*8:このコードでは【A】で示したグルーピングによって,コマンド定義の数を減らすことができる。より具体的にはHow to remove some pages from the navigation bullets in Beamer? - TeX - LaTeX Stack Exchangeのうち\beamer@writeslidentry@miniframesonと\miniframesonの2つを定義する必要がなくなっている。
*9:このコマンドは\section{}をコードに挿入するたびにその直後に決まって表示される定型スライドを設定するために用いられる。例えば新しいsectionに移る際に,これから発表するsectionだけをハイライトしたスライドを出力するという設定をすることができる。なお,このコマンドは上書きする形で定義がなされる。
*10:この節以外では面倒なので「TikZ」と書く。許してほしい。
*11:このように正式名の頭文字を繋げて略語とした「頭字語」(acronym)の中でも,正式名にその略語自身が登場するようなものを「再帰的頭字語」(recursive acronym)というらしい。
titlesecパッケージで見出しの書式を変える
LaTeXにtitlesecというパッケージ*1 があります。このパッケージを用いると,sectionやsubsectionなどの見出しの書式を簡単に変更することができます。本記事ではこのtitlesecパッケージの基本的な部分について調べたことをまとめます。また,こちら(Overleafのリンク)にはtitlesecパッケージを使用した見出しの例をいくつか掲載しています*2。
「細かいことはどうでも良いから例が見たい」という方は先ほどのOverleafのリンクへ飛ぶか,以下の目次で「使用例」に飛ぶことをお勧めします。
また,記事の内容に関して不明な点や誤りを発見した際には,Twitter*3などからご連絡いただけると幸いです。
titlesec.styでできること
冒頭でも述べた通り,titlesec.styによってsectionやsubsectionなどの見出しの書式を設定することができます。さらに今回は説明を省いていますが新たなレベルの見出し形式を定義することも可能です。基本的なコマンドの説明
\titleline,\titlerule
このコマンドを用いると直線を引くことができます。- alignは左詰め(l),中央揃え(c),右詰め(r)の3つから選択
\titlerule*[width]{text}
- *付きの方はtextに指定した文字をwidthに指定した値の大きさの箱に入れて並べることで線を形成する
スター付きの\titleruleは例えば\titlerule*{1em}{・}とすれば
・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・
こんな感じの線を形成します。
\titlelabel
このコマンドを用いると,すべての見出しの書式を一括に変更することができます。以下の仕様に沿ってコマンドの中身を記述します。- label-formatの部分には見出しのラベルの書式を具体的に指定します。
すべての見出しの書式を一括に変更するため,「sectionとsubsectionとで書式を変えたい」といった場合での利用は向かないようです。
\titleformat
このコマンドを用いると,特定の見出しの書式を変更することができます。非常に便利ですが,引数の数がオプション引数を含めて7個あるため使いやすいかと言われると微妙です*4。以下の仕様に沿ってコマンドの中身を記述します。
- commandには定義を変えたいコマンドを入力
- shapeは後述
- formatはタイトルに適用したいフォーマットを入力
- labelはラベルの様式を記述
- sepはラベルとタイトルの仕切りを記述
- before-codeはタイトル本体の前に挿入したい内容を記述
- after-codeはタイトル本体の後に挿入したい内容を記述
shapeの選択肢
\titleformatの仕様に登場したshapeは,見出しと本文の形や位置関係を決めるパラメータです。公式ドキュメントによれば以下の9つが用意されています*5。それぞれがどのような出力を与えるかについてはこちら(Overleafへのリンク)を参照ください。[ 甲/1 ] hang
このパラメータのデフォルト値です。 \sectionのデフォルト設定と同様の出力になります。
[ 乙/2 ] block
ブロックを作ってその中にタイトルを入れます。単純な処理の場合の出力はhangと変わりませんが,例えばbefore-codeの位置に改行を挟む場合に大きな違いが現れるようです。
[ 丙/3 ] display
別の段落にラベルを配置します。\chapterのデフォルト設定と同様の出力になります。
[ 丁/4 ] runin
\paragraphのデフォルト設定と同様な出力を得ます。
[ 戊/5 ] leftmargin
左側にある紙面の余白部分にタイトルを配置します。geometryパッケージなどによって余白を狭めている場合に使用するのは良くなさそうです。
[ 己/6 ] rightmargin
右側にある紙面の余白部分にタイトルを配置します。geometryパッケージなどによって余白を狭めている場合に使用するのは良くなさそうです。
[ 庚/7 ] drop
タイトルの周りにテキストを回り込ませます。普通にコマンド定義をすると左側に少し飛び出しました。
[ 辛/8 ] wrap
dropとほぼ同じですが,スペースの自動調整が可能と公式ドキュメントには書かれています。普通にコマンド定義をしてもdropとは違い左側に飛び出さなかったため,こちらのほうが使い勝手の良いものかもしれません。
[ 壬/9 ] frame
displayに似た形式ですが,タイトルを枠で囲んで出力します。
\titlespacing
このコマンドを用いると,特定の見出しについて空隙の量を調節できます。凝った見た目の見出しを作る場合には丁寧に空白の幅を設定しておく必要があります。なお,\titleformat内のshapeの種類によって空隙の挿入される軸方向(水平方向か垂直方向か)が変わるので注意が必要です。- *は段落最初の行のインデントをなくしたい場合に付けます*6
- leftに指定した値は以下に対応します
- shapeがmargin系またはdropのときはタイトル幅
- wrapのときはタイトル幅の最大値
- runinのときはタイトル直前のインデント
- beforeにはタイトルの前に挿入する垂直方向の隙間の量を指定
- afterにはタイトルと本文の間の隙間の量を指定
- hang,block,displayの場合,この値は垂直方向の量とみなされる
- runin,drop,wrap,margin系の場合,この値は水平方向の量とみなされる
- rightには右側の余白を設定(ただしhang,block,displayの使用時に限る)
使用例
ここまで基本的なコマンドや用語の説明をしましたが,結局は例を見て学んだり試しに出力してみて挙動を見たりする方がよく中身を理解できると思います。そこで以下にtcolorboxパッケージを併用した例を3つ示します*7。下記の出力に関するコードはこちら(Overleafのリンク)にもあります。\titleformat{\section}[display]{\bfseries\gtfamily}{}{10pt}{% \begin{tcolorbox}[% enhanced,% colback=white,colbacktitle=white,colframe=black,coltitle=black,% boxrule=1.5pt,sharp corners,% borderline={1.5pt}{3pt}{black},% ]% \centering 第\thesection 章\\ \LARGE #1% \end{tcolorbox}% }
\titleformat{\section}[block]{}{% \begin{tcolorbox}[% enhanced,% colback=white,colframe=black!25!white,% boxrule=1pt,leftrule=25pt,% overlay={% \draw node at ($(frame.west) + (12.5pt,0pt)$) {\hbox{\centering\Large\bfseries\gtfamily\thesection}};% 左端中央からleftruleの値の1/2だけずれた位置に数字を入力 }% ]% \Large\bfseries\gtfamily#1% \end{tcolorbox} }{0pt}{\vspace{-25pt}}
ひとまず,調査は以上です。
スター付き見出しコマンド(2021.04.11 追記)
LaTeXの基本的なこととして「\section{ほげ}」で番号つきの見出しが,「\section*{ほげ}」で番号なしの見出しを挿入できます.実は,今までのコマンド定義の仕方ではスター無しのほうにはうまく対応できるものの,スター付きのほうには対応できません.スター付きのコマンドに対応させるためには,スター無しと同様の定義をスター付き用にも作成する必要があります.その際,以下のように\titleformatのcommandのところ(第1引数)を工夫する必要があります.
% 枠無しの例 \titleformat{\section}[block]{}{#1}{10pt}{} % 枠付きの例 \titleformat{name=\section,numberless}[block]{}{#1}{10pt}{}
「numberless」の「section」という「name」の「command」を作るというわけですね.(納得)
参考文献
1. CTAN: Package titlesec2. にっき♪: titlesec
3. LaTeXにおいて体裁を整えるのに便利なパッケージ - Qiita (titlesecのほかにも役立ちそうなパッケージの紹介が並んでいる)
*1:https://www.ctan.org/pkg/titlesec
*2:動作の確認はOverleaf上の次の設定で行っています。コンパイラ: upLaTeX,TeX Live version: 2020。
*3:@tobetakoyaki
*4:とはいえ,見出しの書式を文章中で頻繁に変更することは恐らくありませんから,困ることはないかもしれません。
*5:私が十干を覚えたいと思っているため,インデックスに十干が付されていますがお気になさらないでください。
*6:日本語の文章では段落の最初の行だからといってインデントをなくすことはしないため,*は付けません。
*7:なお公式のドキュメントにも例の記載はありますので,ここではそれとは少し違うものの作成を目指してみました。また,気が向けばほかの例も追加する可能性があります。
【紹介】2次体の整数環
こんにちは,ト部蛸焼です.
はてなブログに投稿していないとなんだかサボっている感が出てしまう気がしたので,ここで別のサイトに書いた記事の紹介をします.
Mathwillsという数学に関する記事を投稿するサイトで,2次体の整数環という内容で記事を投稿していきます.
今年の夏から勉強を始めている整数論について,学んだことを自分なりにアウトプットしようと思い書いた記事です.まとめたいことをちゃんとまとめようとした結果,全6回の大作になってしまい執筆が大変でした.以下にリンクを貼ります.「ここ間違っているよ」あるいは「ここの話は面白い」などのご意見がありましたらコメントをいただけると嬉しいです.
第1回 2次体の整数環 (1) —整閉包 - MathWills (投稿日: 12月11日)
第2回 2次体の整数環 (2) —整数環の定義 - MathWills (投稿日: 12月12日)
第3回 2次体の整数環 (3) —2次体の整数環の構造 - MathWills (投稿日: 12月13日)
第4回 2次体の整数環 (4) —Gauss整数環とEisenstein整数環 - MathWills (投稿日: 12月14日)
第5回 2次体の整数環 (5) —Euclid整域でなくPIDである例 - MathWills (投稿日: 12月15日)
第6回 2次体の整数環 (6) —単項イデアル整域でないもの - MathWills (投稿日: 12月16日)
多分,「広く浅い」記事になっていると思います.反省.
Beamerによるスライドの体裁を整える
こんにちは.物工/計数 Advent Calendar 2020の8日目を担当するト部蛸焼です.
連日,応物系学生たちの様々な一面が垣間見えている物工/計数 Advent Calendar 2020,前回 (7日目) の記事は「東大の授業を振り返る」という話題でした.詳しくは↓からご覧ください.
adventar.org
さて8日目の記事はBeamerに関する記事です.
Beamer - WikipediaによればBeamerは「LaTeXに基づき,プレゼンテーションを作成するためのクラス」であるとされます*1.LaTeXという数式を多用しない人しか使うメリットがなさそう*2なツールの,さらに一部の特殊な人*3しか使わないであろうツールであるBeamer.本記事ではこのBeamerで作るスライドの基礎的な部分について列挙していきます.特にオーバーレイなどのフレームの中身についてはあまり深く扱いませんので,そちらについては例えば文献[2]をご参照ください.
また「ここ違うぞ」あるいは「基礎的な部分なのにこれを忘れているぞ」などの点がありましたらお気軽にコメントをいただけると嬉しいです*4.
フレーム
フレームとページ
Beamerには用紙に関連する概念としてそもそも,BeamerではスライドをPDF形式で出力することが大半です.スライドにアニメーション (Beamerでは「オーバーレイ」と呼びます) を加えた場合,これを一つ加えるごとにPDFには新しいページが出力されます*6.Beamerの「ページ」はこのPDFのページに対応しています.
一方でフレームはスライド一枚分を指します.上の図1.1から図1.3を例にとれば,一枚のフレームが三つのページに分かれて出力されているということになります.
フレームの構成要素
ヘッドライン,フットライン
サイドバー
ナビゲーションバー
ナビゲーションシンボル
ロゴ
Beamerでは\logo{\includegraphics[clip,height=0.5cm]{logo.png}}
フレームタイトル
\frametitle{title string}
亜種として\framesubtitleコマンドもあります.なお,フレームタイトルやサブタイトルはframe環境のところでも定義できます*10.
\begin{frame}{title string}{subtitle string} some contents \end{frame}
背景
テーマを利用する
スライドを作るときには以上の要素を上手く組み合わせて見栄えを整えていきます.Beamerには,PowerPointやKeynoteと同様にスライドのデザインがある程度整えられたこのテーマには様々なものがありますので詳しくはマニュアル (参考文献[1]です) の「Themes」の章*13を参照してみてください*14.
さらなるカスタマイズ
ここからはテーマを決めた後により細かい部分を自分で変更する方法をご紹介します.フレーム比
Beamerではフレームの縦横比を変更することもできます.方法は単純でドキュメントクラスの指定時にオプションとして設定したい「横縦比」を選択するだけです.\document[aspectratio=NUM]{beamer} % NUMは後述
NUMに指定できる値は以下に限られるようです.
表1. フレームサイズとして指定できるサイズ比
NUM | 寸法 (横×縦) |
---|---|
1610 | 160mm × 100mm |
169 | 160mm × 90mm |
149 | 140mm × 90mm |
141 | 148.5mm × 105mm |
54 | 125mm × 100mm |
43 | 123mm × 96mm らしい (デフォルト) |
32 | 135mm × 90mm |
フォント
日本語と数式のフォント
特別な設定を何もしないと,これまでの図のように入力された日本語は明朝体で出てきてしまい,逆に数式は斜めになっただけの欧文フォントで出てきてしまうと思います.日本語をゴシック体で,数式を数式フォントで出力するには次のコマンドを利用します*15*16.% 和文の既定フォントをゴシックに変更 \renewcommand{\kanjifamilydefault}{\gtdefault} % Beamerによる数式フォントの置き換えを阻止 \usefonttheme{professionalfonts}
以降はTeX Live2020の話になるのですが,TeX Live2020からデフォルトに指定されている原ノ味フォント*17 で上の設定を行うと,出力の文字が太い印象を受けるかもしれません.この場合には以下で対処をします*18.
% コマンドの説明は註18を参照 \usepackage[deluxe]{otf} \usepackage[noalphabet]{pxchfon} \setboldgothicfont{HaranoAjiGothic-Medium.otf} %\bfseriesの設定
フォントサイズ変更 (一括)
スライド全体の文字の大きさを統一的に変更する場合,ドキュメントクラスの読み込み時に以下のように指定します.\documentclass[10pt]{beamer}
なお,フォントサイズとして設定できる値は「8pt」「9pt」「10pt」「11pt (=デフォルト)」「12pt」「14pt」「17pt」「20pt」の8種類です.
フォントの変更 (マイナー)
フレームの部品ごとにフォントを変更する方法には\usefonttheme,\usebeamerfont,\setbeamerfontの三つの種類がありますが,ここでは最後の\setbeamerfontのみを紹介します*19.\setbeamerfont*{beamer-font name}{attributes} % * があると既存の設定を破棄 % * がないと上書き
beamer-font nameの部分には「block」などの部品名が入ります.後で一例が登場します.
また,attributesの部分には以下を選択できます*20.
- size ... \small や \large など
- shape ... \itshape など
- series ... \bfseries など
- family ... \sffamilyなど
色
色を局所的に変更する方法には\usecolortheme,\usebeamercolor,\setbeamercolorの三つの種類があります.なお,\setbeamercolorは背景を灰色にする話 (1.2.7節の図3) で既に使用しました.基本的な文法はフォントのときと同じです.後で一例が登場します.\setbeamercolor*{beamer-color name}{options} % * があると既存の設定を破棄 % * がないと上書き
例: テーマの配色をいじる
「テーマを探しても良いものが見つからない」という場合には既存のテーマをいじって自分の好みに近づけるという解決策があります.例えば,% これより上部に\usetheme{Frankfurt}があるとする \usecolortheme{seahorse} % 色テーマだけ変更 \setbeamercolor{structure}{fg=brown} % さらに色を変更
の2行を付加すれば先ほどのスライド (図5) は以下のようになります*21.
例: フレーム番号の調整
フレーム番号を ①右下に ②普通のサイズで ③灰色にして 挿入するという設定は以下のコードで解決します.% フットラインにフレーム番号を挿入 \setbeamertemplate{footline}[frame number] % ① % 大きさを\normalsizeに変更,色をgrayに変更 \setbeamerfont{page number in head/foot}{size=\normalsize} % ② \setbeamercolor{page number in head/foot}{fg=gray} % ③
例: フレームタイトルを強調
図7を見るとフレームタイトルである「分岐指数・拡大次数・分岐数」という文字が本文と同じ太さで書かれていることが分かります.これを太くする方法,つまり,フレームタイトルのフォントを変更する方法は以下の通りです.\setbeamerfont{frametitle}{series=\bfseries}
脚註番号を設定
図8では脚註番号は「1」とだけ書かれています.これだとといった文字列に脚註をつけたときに指数と区別が付かなくなる虞があるので,脚註番号を変更してみます.例えばjsarticle.clsのようにアスタリスクを付すなら以下のようにします*22.\renewcommand{\thefootnote}{\textasteriskcentered\arabic{footnote}} % \textasteriskcentered がアスタリスクを出力するコマンド
余白を広げる
最後に文章を挿入する領域を広げるコマンドをご紹介します.\setbeamersize{text margin left=15pt, text margin right=15pt}
これで指定した値 (今回なら15pt) に文章の左右の余白を設定することができます.
参考文献
Beamerについて[1] Beamerの公式マニュアル (超大作注意): リンク先のページ内にマニュアル (Beamer User Guide) がある ctan.org
[2] Beamerでスライドの中身をどう作ればいいかについて: www.opt.mist.i.u-tokyo.ac.jp
フォントに関する文献
[3] LaTeXによるフォントの設定について: qiita.com
[4] 原ノ味フォントについて: qiita.com
[5] otfパッケージのdeluxeオプションの効果について: hwb.ecc.u-tokyo.ac.jp
[6] PXchfon パッケージに関して: zrbabbler.sp.land.to
参考コード
\documentclass[uplatex,dvipdfmx,notheorems,xcolor={x11names,table},10pt,handout]{beamer} \usetheme{Frankfurt} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 3.2. フォントの設定 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \renewcommand{\kanjifamilydefault}{\gtdefault} % 和文既定をゴシックに変更 \usefonttheme{professionalfonts} %Beamerによるフォントの置き換えを阻止 \usepackage[deluxe]{otf} \usepackage[noalphabet]{pxchfon} \setboldgothicfont{HaranoAjiGothic-Medium.otf}%\bfseriesの設定 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 3.4. テーマの配色をいじる %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usecolortheme{seahorse} \setbeamercolor{structure}{fg=brown} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 3.5. フレーム番号の調整 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \setbeamertemplate{footline}[frame number] \setbeamerfont{page number in head/foot}{size=\normalsize} \setbeamercolor{page number in head/foot}{fg=gray} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 3.6. フレームタイトルの強調 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \setbeamerfont{frametitle}{series=\bfseries} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 3.7. 脚註番号を設定 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \renewcommand{\thefootnote}{\textasteriskcentered\arabic{footnote}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 3.8. 余白を広げる %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \setbeamersize{text margin left=15pt, text margin right=15pt} \newcommand{\textred}[1]{\textcolor{red}{#1}} \begin{document} \title{代数的整数論のはなし} \section{整数環} \subsection{} \begin{frame}\frametitle{題名} 内容 \end{frame} \begin{frame}\frametitle{題名} 内容 \end{frame} \begin{frame}\frametitle{題名} 内容 \end{frame} \section{環の拡大と素イデアルの分岐} \subsection{環の拡大の設定} \begin{frame}\frametitle{題名} 内容 \end{frame} \subsection{素イデアルの分岐} \begin{frame}\frametitle{分岐指数・拡大次数・分岐数} $\mathfrak{p}$: $A$の素イデアル,$P$: $\mathfrak{p}$の上にある$B$の素イデアル,\par $A_{\mathfrak{p}} = (A \setminus \mathfrak{p})^{-1} A$,$B_{P} = (B \setminus P)^{-1} B$とする\footnote{これを局所化という.}. \vfill \begin{block}{分岐指数 $e(P/\mathfrak{p})$} $\mathfrak{p}B_{P} = P^e B_{P}$を満たす$e$を$P$の$\mathfrak{p}$上の\textred{\textbf{ 分岐指数 }}という. \end{block} \vfill \begin{block}{相対次数 $f(P/\mathfrak{p})$} 剰余体の拡大次数$\left[ (B/P) : (A/\mathfrak{p}) \right]$を$P$の$\mathfrak{p}$上の\textred{\textbf{ 相対次数 }}という. \end{block} \vfill \begin{block}{分岐数 $g$} $\mathfrak{p}$の上にある$B$の素イデアルの個数を$\mathfrak{p}$の\textred{\textbf{ 分岐数 }}という. \end{block} \vfill \end{frame} \begin{frame}\frametitle{題名} 内容 \end{frame} \section{Galois拡大の場合} \subsection{} \begin{frame}\frametitle{題名} 内容 \end{frame} \begin{frame}\frametitle{題名} 内容がないよう \end{frame} \end{document}
*1:閲覧日時は11月29日12時34分
*2:諸説あります.
*3:通常の人はプレゼンテーションにMicrosoftのPowerPointやMacのパソコンにプリインストールされているKeyNoteなどを使うであろうという意味で「特殊」と表記しました.たとえ私が異常な人であろうとも,この表現は決して「異常な人」を指してはいません.
*4:ここのコメントでもTwitter ([at]tobetakoyaki) でも構いません.
*5:特にカウンタの利用を試みたとき,この二つの違いを理解していることは重要です.
*6:パラパラ漫画をイメージすると良いでしょう.
*7:左端だけのことが多いですが,右端だけの場合や両端の場合もあるようです.
*8:Beamer User Guide for version 3.59を参照しています.
*9:正確な\frametitleコマンドの仕様は「\frametitle[short ver.]{full ver.}」です.オプション引数になっている短尺版のタイトルは\insertshortframetitleというコマンドで取得することができるものですが,あまり使わないかもしれません.
*10:正確なframe環境の引数は「<overlay specification>[<default overlay specification>][options]{title}{subtitle}」です.ちなみにoverlay specificationの欄には出力するオーバーレイの範囲を指定します.例えば1枚目から3枚目のみを出力したければここには「1-3」と入力します.
*11:Beamer User Guide for version 3.59の8.2.7節を参照.
*12:\usetheme[left,hideothersubsections]{PaloAlto} \setbeamertemplate{blocks}[rounded][shadow=false] \setbeamercolor{background canvas}{bg=gray}の三つのコマンドを用いました.二つ目は「分岐指数」などを表示している枠の影を消すためのコマンドで,三つ目が背景色をグレーにしているコマンドです.
*13:version 3.59だと15章にイラストが載っています.
*14:具体的にテーマとして選択できるものはプレゼンテーションテーマ,色テーマ,フォントテーマ,内部テーマ (inner theme),外部テーマ (outer theme) の5種類です.特に後ろ2つによってフレームの見た目が大きく変わります.\usethemeコマンドを使うとこれらが一括で変更されます.一方で,\usecolortheme,\usefonttheme,\useinnertheme,\useouterthemeの四つのコマンドによってそれぞれを特定のテーマに個別に変更することも可能です.
*15:スライドには明朝体ではなくゴシック体を使用することが好まれます.
*16:これは個人の意見ですが,などの特殊な記号が必ず数式フォントで出力されることを踏まえると,数式に関しては統一して数式フォントで出力するほうが良いと思います.
*17:これは源ノ角フォントをLaTeXやLuaTeXなどでも使えるようにしたものです.cf. LuaTeXで原ノ味フォントを使う - Qiita
*18:大まかな内容を説明すると,まずLaTeX側で対応できるフォントの種類をotfパッケージで増やします.その後にpxchfonパッケージによるフォント変更機能を利用します.3行目の\setboldgothicfontはpxchfonパッケージで読み込まれたコマンドです.ここでは原ノ味ゴシックの中でも太さをmediumのものに設定しています.ちなみに元はBoldです.
*19:\usefontthemeコマンドはフォントのテーマを変更します.
*20:例えば「size=\footnotesize」とすれば指定した部分のフォントサイズが脚註のフォントサイズになります.
*21:作業中に思わずチョコレートの入ったケーキを食べたくなるような配色だと思いました.ただの感想です.
*22:なお,この処理は通常のドキュメントクラスにも適用できます.
ゼミ資料の公開
仲間内で行ったゼミの資料を折角なのでこちらでも公開してしまいます.
本 (雪江整数1) はこちら
www.nippyo.co.jp
補足資料はこちら*1
drive.google.com
*1:内容は担当範囲であった雪江整数1の8.4節~8.6節に対応するものです.ただし,該当範囲の本文内容に言及する資料ではなく,その内容を補足する資料になっています.
LaTeX文書で文字列をハイライト&真下にキャプションしてみたい
この記事が目指す出力
導入
先日,スライド発表の機会があり,内容と無関係な「どう魅せるか*1」という点に心血を注いでいました.その過程で,Beamerや通常のドキュメントで特定の文章にハイライトを施すという方法を発見しました.今回の記事ではこれについて紹介するとともに,更なる微調整の方策についても紹介します.先行研究
↓この記事の「先行研究」*2 に位置づけられる文献はこちらです.↓www.opt.mist.i.u-tokyo.ac.jp
具体的にはこの中のhighlightマクロが対象です*3.このコマンドをxparseパッケージを想定したコマンドに成形し直すと以下のようになります*4.
\NewDocumentCommand{\highlight}{O{red}m}{% \tikz[baseline=(x.base)]{% \node[rectangle,rounded corners,fill=#1!10](x){#2};% }% }% \NewDocumentCommand{\highlightcap}{O{red}mm}{% \tikz[baseline=(x.base)]{% \node[rectangle,rounded corners,fill=#1!10](x){#2}% node[below of=x, color=#1]{#3};% }% }
ちなみに1つ目の引数がオプション引数になっており,例えばそれをblueに設定すれば着色を青色に変更できる優れものです (図1).
スライドで「軽くこの部分を説明したい」というときに使えそうなコマンドではないでしょうか.ここで,このコマンドをもう少し使いやすい形に変えることを考えます.
具体的には,以下の2点を改良します.
- 2つのコマンドを1つのコマンドに統一する
- キャプションと文字列の距離を調整する
2点目の必要性を説明します.
先ほどのhighlightマクロ(1)の問題点として,1行分の高さの文字列にハイライトを付けようとすると,キャプションと文字列との間に微妙な空隙が生じます (図2).
これは如何せん見栄えが悪いので,この空隙を無くす試みをします.
コマンドの統一化
これは過去の私の記事の「\NewDocumentCommandによる自由な引数設定」の中で利用した「\IfValueT」と同様のコマンド「\IfValueTF」を使うことで解決します.こんなふうに.\NewDocumentCommand{\highlight}{O{red}mo}{% \tikz[baseline=(x.base)]{% \IfValueTF{#3}{% True \node[rectangle, rounded corners, fill=#1!10](x){#2}% node[below of=x, color=#1]{#3};% }{% False \node[rectangle, rounded corners, fill=#1!10](x){#2};% }% }% }%
3番目の引数 (=キャプション) が設定されたか否かで,設定されていたら「% True」以下の処理を,そうでなければ「% False」以下の処理を行います.
below ofとbelow
続いて,キャプションと文字列との間の空隙を無くしましょう.ポイントは「highlightマクロ(2)」までのコマンドでキャプションの挿入位置を指定していた「below of=x」という部分にあります.これは,「直上で定義した "x" という名前のノードの下に新たにノードを設定しなさい」という意味になり,具体的にどのくらい下に設定するかを記入していません.したがって,その相対的な距離を指定すればすべてが解決します.
ただ今回はそれだけで終わりにするのではなく「below of」の代わりに*5「below」によって位置を指定してみましょう.
TikZ でノードを相対位置で配置する話 - マクロツイーターでも解説されているように,ノードが高さをもつときには,「below of」ではその中央を起点に,「below」ではその下端を起点として距離を勘定します.なぜ今回「below」を採用したかといえば,註5に記した理由のほかにも,「below」の下端を起点とする相対距離の指定法が今回は適しているからです.
さて,これを踏まえてキャプションと文字列の間の距離を「below」によって指定したマクロが次のマクロです.注意として,「below」の利用には「\usetikzlibrary{positioning}」の呼び出しが不可欠です.
\usetikzlibrary{positioning} %% 中略 %% \NewDocumentCommand{\highlight}{O{red}mo}{% \tikz[baseline=(x.base)]{% \IfValueTF{#3}{% True \node[rectangle, rounded corners, fill=#1!10](x){#2}% node[below=0em of x, color=#1]{#3};% }{% False \node[rectangle, rounded corners, fill=#1!10](x){#2};% }% }% }%
highlightマクロ(3)を使って図2と同じ内容を出力すると,図3のようになります.
キャプションと文字列との間の空隙を取り去ることができ,見栄えが良くなりました.これで終わりです.
参考文献
1. TikZ — Tasuku Soma's webpage2. \NewDocumentCommandによる自由な引数設定 - ト部蛸焼のブログ
3. TikZ でノードを相対位置で配置する話 - マクロツイーター
付録. 図3.の出力のコード
\DeclareMathOperator{\Enc}{Enc}% \NewDocumentCommand{\innerproduct}{mm}{% \left\langle #1, #2 \right\rangle% }% \begin{mdframed}[roundcorner=10pt,frametitle={highlightマクロ(3)},frametitlerule=true]% \centering% $\innerproduct{\bm{v}, \Enc \left( \bm{e}_{k} \right)} = \displaystyle \bigoplus_{i=0}^{4} v[i] \otimes \Enc \left( \delta_{i, k} \right) % ここまで前座 \highlight{% $=\Enc (v[k])$% }[% 準同型性% ]$\par% \end{mdframed}%
*1:「見せるか」ではなく「魅せるか」であることが重要.本当は良くない行為であることが知られています.
*2:鍵括弧を付したのは,「ブログに先行研究ってなんだよ」と思ったためです.
*3:この文献自体はTikZの基本的知識を説明するいい文献ですので,TikZに興味がある方は一読して損はないと思います.特に,highlightマクロの下にある「ふきだしを作る」という部分は非常に利用価値のあるマクロだと思いますので,是非試してみてください.
*4:画面での表示のために文字列のデフォルトの色を「yellow」から「red」に変えてあります.
*5:「今回は」という書き方をしましたが,今後は一貫して「below of」ではなく「below」を使うことが推奨されているようです[3].また,(x.south)などと指定すれば「below of」を用いても以下に述べるような「下端を起点とした相対距離の設定」は可能です.
【紹介】a divides b
今回は,Mathwillsというサイトに記事を書きましたので,そのリンクと,記事の内容を紹介します.
Mathwills:
www.mathwills.com
今回の記事:
www.mathwills.com
この記事では,「約元である」という関係について考察しました.通常,「がの約元である」という関係性を「」で表します*1.見ての通り,使用されている記号は左右対称な形をしています.
左右対称な記号は「対称律*2」 という条件を満たす関係性に対してしばしば使われます.例えば「」や「」がその例です.
一方,「約元である」という関係は普通は対称律を満たしません*3.もちろん「対称な形状の記号は対称律を満たすものにしか使ってはならない」という法はどこにもないので,「約元である」を対称な記号で表記してもなんら問題はありません.しかし,その表記を使う面から考えると「どちらがどちらの約元であるのか」を直観的に示さない表記法はあまり優れていないと少なくとも私は思います.
そこで,今回の記事ではこの「約元である」という関係を左右非対称な記号で表そうとしています.その際,どの記号を用いてこの関係を表すのがよいかを「二項関係」という観点から考え,最終的に本文では「」という記号を用いました*4*5.そして,この記号を使う妥当性を自分なりに記述しました.
表記方法は議論の本質には関係のない瑣末なものです.しかし,表記の分かりやすさは理解のしやすさに関連します.英語に慣れていない人が英語の論文を読んで苦戦しているのに似たものがあるでしょう.瑣末な内容だと吐き捨てることなく,少しでも伝わりやすい記法を使うように心がけることは非常に重要でしょう.
最後に,記事の一貫性を保証するための「予備知識」の項を掲載します.
予備知識
二項関係
が反射律と推移律を満たす
が
が反射律と推移律と反対称律を満たす
が
が反射律と推移律と対称律を満たす
表で上記3つの関係を整理すると次のようになります.
反射律 | 推移律 | 反対称律 | 対称律 | |
---|---|---|---|---|
擬順序 | ○ | ○ | ||
半順序 | ○ | ○ | ○ | |
同値関係 | ○ | ○ | ○ |
整域
- は可換群.
- , .
- , , .
- , , .
を和,を積と呼びます.はと書かれることもありますが,いっそ省略して書かれることも多いです.の単位元を0と書き,
例 1.5
1. ,はそれぞれ通常の和と積によって環をなします.
2. 集合の冪集合上にとを考えたは環をなしません*6.
以下,環を省略してとだけ書きます.
例 1.8
1. は整域である.
2. は整域でない.
任意のがに逆元をもつとき,を
が可換な可除環であるとき,これを
また,が可換でない可除環であるとき,これを
例 1.10
1. は2に整数の逆元がないので可除環でない.
2. ,,は体である.
3. 四元数全体の集合は斜体である.
あるが存在してとなるとき,はの
のときは倍元や約元は倍数や約数と呼ぶのが一般的です.また,に対しても同じようにして倍元 (倍数) や約元 (約数) は定義できます.これは小学校のときから慣れ親しんできた事実でしょう.
*1:これは多くの場合「a divides b」と読まれます.今回の記事のタイトルにもなっていますね.
*2:対称律とは「とがその関係にあるとき,ともその関係にある」という条件を意味します.数学的にはこの後に例示する等号や同型などがこの有名です.現実の世界には対称律を満たさない関係も多く,卑近な例に当てはめると,「AさんはBさんの親友である」という関係性は対称律を満たさない例だとしばしば諧謔的に取り上げられます.
*3:体の上でこの関係を考えると対称律を満たすといえなくはないのですが,そもそも体の上で割り切るという考え方はナンセンスです.
*4:この記号は稀に「擬順序」という関係を表すときに使われます.群論では正規部分群を表すときにも用いられます.単純な大小を表すわけではないものの,大小に関連しているとも言える関係なので,似た記号を使うことにはそれなりに道理が通るように思います.
*5:この記法を私に提示したのは友人です.我が物顔の書き方をしているところがありますがお許しください.