latex

LaTeXのenumerateで使う文字を変更する

深さNのところをi, ii, iii,… というふうにしたいならば, \renewcommand{\labelnumN}{\roman{enumN}} \romanの部分は選べる。 なまえ すたいる \alph a, b, c,… \Alph A, B, C,… \arabic 1, 2, 3,… \roman i, ii, iii,… \Roman I, II, III,… プリアンブルに書くと文書全体これになるので,一箇所だけに適用したければ enumerate 環境の中で \renewcommand する。おわり。

PDFやWordファイルのテンプレートでもLaTeXでなんとかする

Word ファイルの場合,仕方ないので Microsoft Word とかで PDF に変換しておく。 LibreOffice とかでも一応 PDF は出てくるけどけっこう崩れる。 で,テンプレートファイルが PDF になったのでこれを1ページ1ファイルに分解する。 $ pdfseparate foo.pdf %d.pdf pdfseparate コマンドがない場合は poppler とかを入れる。 で以下のようにして背景に PDF を埋め込む。 \documentclass[uplatex,dvipdfmx]{jsarticle} \usepackage{wallpaper} \pagestyle{empty} \begin{document} \ThisCenterWallPaper{1}{1.pdf} ここにいろいろ書く \end{document} \pagestyle{empty} でページ番号を消す。 面倒くさいけど \vspace とかでテンプレートに合わせつつなんとかする。 余白が大きすぎる場合は geometry とかで調整する。 jsarticle を使う場合,フォントのサイズを調整すると背景がずれる(縮小して拡大するみたいな実装なので)ので, デフォルトにしておいて必要に応じて \fontsize{12pt}{0pt}\selectfont とかで調整する。

LaTeXでカルノーマップを描画する

kvmap というパッケージが TeX Live にもともと入っていて,それを使えば簡単にカルノーマップを描画できる。 基本的な使い方は以下。 \documentclass[uplatex,dvipdfmx]{jsarticle} % カルノーマップの描画に必要 \usepackage{graphicx} \usepackage{kvmap} \begin{document} \begin{kvmap} \begin{kvmatrix}{A,B,C.D} 1 & 0 & 0 & 1 \\ 1 & 1 & 1 & 1 \\ 1 & 1 & 0 & 0 \\ 0 & 1 & 1 & 0 \\ \end{kvmatrix} \bundle{0}{1}{1}{2} \end{kvmap} \end{document} ちゃんと例を書くのが面倒なので一箇所しか囲んでいないが, \bundle{x1}{y1}{x2}{y2} とするとその範囲に丸い囲みが描画される。 多分ここは完成した画像貼った方がいいんだろうけど面倒なので省略。 あとcolor=...を与えてやると色を変えたりとかも簡単にできる。 問題はここからで, \bundle[invert=true]{...} ってやると端と端を囲むことができるのだが, 例えば以下のような例だと縦の囲みか横の囲みかで曖昧になる。 \begin{kvmap} \begin{kvmatrix}{A,B,C} 1 & 0 & 0 & 1 \\ 1 &

TikZで論理回路を描く

TikZ を使い始めて間もないのであまりきれいに書けていないかもしれない。 ゲートを自分でゴリゴリ描く必要はなくて,そういった図形は提供してくれている。 プリアンブルに以下を書く。 \usepackage{tikz} \usetikzlibrary{shapes.gates.logic.US} で回路図を書くのは以下。 \begin{tikzpicture} \path (2, 3) node[or gate US,logic gate inputs={inverted,inverted},draw](A1){} (2, 2) node[or gate US,logic gate inputs={inverted,inverted},draw](A2){} (4, 2.5) node[and gate US,logic gate inputs={normal, normal},draw](A3){} (5.5, 1) node[or gate US,logic gate inputs={normal,inverted},draw](O1){}; \draw (A1.input 1) -- ++(-1.5, 0) ++(-0.2, 0.1) node {A} (A1.input 2) -- ++(-1.5, 0) ++(-0.2, -0.1) node {B} (A2.input 1) -- ++(-1.5, 0) ++(-0.2, 0.1) node {C} (A2.input 2) -- ++(-1.5, 0) ++(-0.2, -0.1) node {D} (A1.output) -- ++(0.5, 0) |- (A3.input 1) (A2.output) -- ++(0.5, 0) |- (A3.input 2) (A3.output) -- ++(0.5, 0) |- (O1.input 1) (O1.input 2) -- ++(-5.05, 0) ++(-0.2, 0) node {E} (O1.output) -- ++(1, 0) ++(0.2, 0) node {Y}; \end{tikzpicture} 入力を反転することもできて,inputs に inverted を入れれば良い。 また,縦に描画したい場合は rotate=270 とかする。 各入力と出力には名前がついていて,ゲートに付けた名前.input 入力の順番 と言った感じで 入力