-
Notifications
You must be signed in to change notification settings - Fork 2
style
テンプレート作成などの要素として、プリアンブルがあります。 プリアンブルによって図や参照などさまざまな組版の処理を制御し、 LaTeXを書きやすくしたり、組版時のレイアウトを変更することができます。
\documentclass[a4j]{jsarticle}
\usepackage{listings}
\newcommand{\lstref}[1]{リスト\ref{lst:#1}}
\renewcommand{\lstlistingname}{リスト}
\lstset{
numbers=left,
tabsize=4,
frame=trbl,
breaklines=true,
basicstyle=\ttfamily\footnotesize,
}
\begin{document}
LaTeXのコードは\lstref{texcode}のようにプリアンブル(preamble)、
文書本体(決まった呼び方多分ない)によって構成されています。
1行目から3行目がプリアンブルとなります。
\begin{lstlisting}[
language=tex,
caption={\LaTeX の文書構造},
label=lst:texcode,
]
% ------ preamble ------
\documentclass{jsarticle}
\usepackage{here}
% ------ body ------
\begin{document}
Blah Blah Blah
\end{document}
\end{lstlisting}
\end{document}
このコードのプリアンブルではざっくり3種類のことを行っています。
- 外部ファイルからクラス/スタイルの呼び出し
- マクロ定義
- マクロ処理
前述したように、documentclassの指定と、パッケージの利用です。 詳しくは当該記事参照願います。
ここでは\newcommand
と\renewcommand
というコマンドを用いて、
コマンドの定義 / 既存コマンドの再定義を行っています。
まずコマンド定義です。ラベルと参照で述べたように、リストのラベルはlst:
の形でつけられます。
さらに、リストを参照するときは「リスト1は〜」のように記述すると思います。
これをいちいち打つのはアホなので、新しく「リスト参照用のコマンド」を作ります。
\newcommand{\lstref}[1]{リスト\ref{lst:#1}}
これで、\lstref{hoge}
とするとリスト\ref{lst:hoge}
と展開する\lstref
コマンドが新たに定義されました。イケてます。
といった風に、\newcommand
コマンドを用いて、新しいコマンドを定義することができます。使い方は以下。
\newcommand{cmd}[argc][default]{hogehoge}
cmd
はコマンド名、argc
は引数の数、hogehoge
には好きなことかいてください。
引数を使うときは、#1, #2...
のように#数字
で扱うことができます。
シェルスクリプトのコマンドライン引数みたいなかんじ。
呼び出しは\cmd{arg1}{arg2}...
となります。
最初の引数だけオプション引数とすることができて、
引数が1つ不足してdefault
の値が定義されている場合は#1
にはdefault
の値が入っています。
引数使わないときは[]
部分は不要です。
次いで\renewcommand
です。
listingsパッケージは南蛮渡来のブツでして、
基本的にキャプションタイトルは「Listing: なんたら」の形になります。
日本語レポートの一部だけ「Listing: 」とか言われてもドン引きなのでここを「リスト 」に変えたい。
listingsのキャプションのタイトルは\lstlistingname
で定義されているので、
\renewcommand
を使って既存値を変更します。
\renewcommand{\lstlistingname}{リスト}
これでキャプションタイトルが変わりました。
こんな感じで、\renewcommand
コマンドを使えば既存のコマンドを変更することができます。
\renewcommand{cmd}[argc][default]{hogehoge}
ほぼ\newcommand
と同じですね。
今回は引数の無いコマンドを扱いましたが、
もちろん引数のあるコマンドも扱えます。
「マクロ処理」というのは別段用語というわけではなく、今回便宜上そう呼んでいるだけです。
今回で言う\lstset
コマンドのような操作です。
これは、listingsで定義されるコマンドで、行番号の表示、枠の形式などリストの書式を指定するコマンドです。
このような文書本体のスタイルを操作する処理もプリアンブルで行われます。
以上のような操作や、TeX言語の処理など、プリアンブルをひとつにまとめたファイルをスタイルファイルといいます。
スタイルファイルは*.sty
の形になります。
さっきのtexファイルをstyファイルとtexファイルに分割してみましょう。
mylist.sty
\RequirePackage{listings}
\newcommand{\lstref}[1]{リスト\ref{lst:#1}}
\renewcommand{\lstlistingname}{リスト}
\lstset{
numbers=left,
tabsize=4,
frame=trbl,
breaklines=true,
basicstyle=\ttfamily\footnotesize,
}
practice.tex
\documentclass[a4j]{jsarticle}
\usepackage{mylist}
\begin{document}
LaTeXのコードは\lstref{texcode}のようにプリアンブル(preamble)、
文書本体(決まった呼び方多分ない)によって構成されています。
1行目から3行目がプリアンブルとなります。
\begin{lstlisting}[
language=tex,
caption={\LaTeX の文書構造},
label=lst:texcode,
]
% ------ preamble ------
\documentclass{jsarticle}
\usepackage{here}
% ------ body ------
\begin{document}
Blah Blah Blah
\end{document}
\end{lstlisting}
\end{document}
上のようにmylist.sty
を作成し、usepackage{mylist}
とすれば、texファイルにmylist.sty
が読み込まれます。
これで最初のコードと同様の動きをします*1。
お気づきかと思いますが、パッケージはTEXINPUTS
で指定された範囲内にあるstyファイルのことだったわけです。
これでLaTeXを書くのに必要な事項はだいたい抑えたと思います。 あとは具体的な仕様やなんやらを調べながら書いていただければ
*1: lstでは(というか文書以外では)正しいエラー表示のために`usepackage`コマンドを`RequirePackage`とします。