%%
%%	exp-002.tex
%%

\documentclass[a4paper]{jsarticle}

%%
%%	追加機能の宣言
%%
%%	ここでは、「枠」をつけるために、ascmac を利用しています。

\usepackage{ascmac}	% cf. http://www.wannabies.net/tex/howto/waku.html

%%
%%	個人固有の情報
%%
%%	自分の名前、所属、連絡先を記述しておく
%%		連絡先のメールアドレスは、プライバシーの観点から削除してもよい
%%

\author{栗野 俊一\thanks{日本大学理工学部数学科 講師{\tt (kurino@math.cst.nihon-u.ac.jp)}}}

%%
%%	文章の公開日時
%%

\date{Ver. 0.01 (2012/06/12 版)}	% 「今日」にしたい場合は、単に \date を削ればよい
%\date{}		% 表示したくない場合

%%
%%	文章のタイトル
%%

\title{\TeX でマクロ}	% タイトルを変更

%%
%%	文章の開始
%%

\begin{document}
\maketitle		% 表題を表示させる

%%
%%	本文開始
%%

%%% ここに「本文」を入れる。

\section{\TeX でマクロ}

\subsection{長い数式}

\TeX で長い式を入力する事を考えます。
例えば、数列 $a_n$ などはどうでしょうか。

  \begin{itembox}[l]{数列 $a_n$ の例(\TeX)}
    \begin{verbatim}
\[
\{a_n\} = a_1, a_2, .., a_i, ..
\]
    \end{verbatim}
  \end{itembox}

  \begin{itembox}[l]{数列 $a_n$ の例(整形後の文章)}
\[
\{a_n\} = a_1, a_2, .., a_i, ..
\]
  \end{itembox}

\subsection{マクロで入力をサボる}

\TeX で複雑な式を何度も入力するのは大変
\footnote{
「何が大変か ?」というと、別に「長い物を入力する事」が大変なわけではなく、
「その長い物が等しいという事を保証する事(等値性)」が大変なのです。
マクロを使えば、
「同じ内容を表現する場合は同じマクロを使う」事で、
簡単に等値性が保証できます。
}
です。

そこで、次のように複雑な数式には名前をつけてしまいましょう。

以下では、長い数式に、\verb|\SeqA| という名前を付けています。
名前を付けるには、\verb|\newcommand|を使います。

\verb|\newcommand|の後ろの一つ目のブレース
\footnote{
「\verb|{|」と「\verb|}|」の事。
}
に囲まれた所
\footnote{
これを「引数(ひきすう)」とよびます。
}
には新しい名前(マクロ名)
\footnote{
マクロ名には、\yen で始まる英文字の並び(数字は使えない)を指定します。
最初の文字を大文字にしておけば、標準のマクロと区別する事ができます。
}
を、
二つ目には、名前を付ける数式
\footnote{
もちろん、数式に限定する必要はなく、
\TeX で利用できる普通の表現
(全てではなく制限がありますが、
まあ、良く利用するものは大概大丈夫..)
はなんでも、書込む事ができます。
}
を指定します。

この\verb|\newcommand|の後
\footnote{
なので、\verb|\newcommand| はプリアンブルに置くのが普通。
}
からは、この名前で式を参照する事ができるようになります。

この新しく、
「式の代わりに利用できるようになった名前」
を
「マクロ」
とよびます。

  \begin{itembox}[l]{数列 $a_n$ をマクロで定義(\TeX)}
    \begin{verbatim}
\newcommand{\SeqA}{\{a_n\} = a_1, a_2, .., a_i, ..} % 数式に名前を付けた
\[
\SeqA % 名前で数式を呼び出す
\]

二度目からが便利になる。

\[
\SeqA % 名前で数式を呼び出す
\]
    \end{verbatim}
  \end{itembox}

  \begin{itembox}[l]{数列 $a_n$ をマクロで定義(整形後の文章)}
\newcommand{\SeqA}{\{a_n\} = a_1, a_2, .., a_i, ..} % 数式に名前を付けた
\[
\SeqA % 名前で数式を呼び出す
\]

二度目からが便利になる。

\[
\SeqA % 名前で数式を呼び出す
\]

  \end{itembox}

\subsection{似た式なら引数でまとる}

今度は、数列 $b_n$ を考えましょう。数列 $a_n$ 同様にマクロが定義できます。


  \begin{itembox}[l]{数列 $b_n$ もマクロで定義(\TeX)}
    \begin{verbatim}
\newcommand{\SeqA}{\{a_n\} = a_1, a_2, .., a_i, ..}
\newcommand{\SeqB}{\{b_n\} = b_1, b_2, .., b_i, ..}
\[
\SeqA
\]

\[
\SeqB
\]
    \end{verbatim}
  \end{itembox}

  \begin{itembox}[l]{数列 $b_n$ もマクロで定義(整形後の文章)}
\newcommand{\SeqA}{\{a_n\} = a_1, a_2, .., a_i, ..}
\newcommand{\SeqB}{\{b_n\} = b_1, b_2, .., b_i, ..}
\[
\SeqA
\]

\[
\SeqB
\]
  \end{itembox}

しかし、\verb|\SeqA| も \verb|\SeqB| ほとんど同じで、$a$ が $b$ に
変っただけです。

そこで、このような場合は、違った所を番号 ( \verb|#1| ) を
付け替えたものにします。

  \begin{itembox}[l]{引数付きマクロ(\TeX)}
    \begin{verbatim}
\newcommand{\Seq}[1]{\{#1_n\} = #1_1, #1_2, .., #1_i, ..} % a,b が #1 になっている
\[
\Seq{a} % a を引数に指定
\]

\[
\Seq{b} % b を引数に指定
\]
    \end{verbatim}
  \end{itembox}

  \begin{itembox}[l]{引数付きマクロ(整形後の文章)}
\newcommand{\Seq}[1]{\{#1_n\} = #1_1, #1_2, .., #1_i, ..} % a,b が #1 になっている
\[
\Seq{a} % a を引数に指定
\]

\[
\Seq{b} % b を引数に指定
\]
  \end{itembox}

ついでですから、添字 ( $i$ ) も指定できるようにしましょう。

  \begin{itembox}[l]{複数の引数付きマクロ(\TeX)}
    \begin{verbatim}
\newcommand{\SeqI}[2]{\{#1_n\} = #1_1, #1_2, .., #1_{#2}, ..}
\[
\SeqI{a}{i} % a,i を引数に指定
\]

\[
\SeqI{b}{j} % b,j を引数に指定
\]
    \end{verbatim}
  \end{itembox}

  \begin{itembox}[l]{複数の引数付きマクロ(整形後の文章)}
\newcommand{\SeqI}[2]{\{#1_n\} = #1_1, #1_2, .., #1_{#2}, ..}
\[
\SeqI{a}{i} % a,i を引数に指定
\]

\[
\SeqI{b}{j} % b,j を引数に指定
\]
  \end{itembox}

\section{いつも使うマクロは別ファイルを分けて input する}

気に入ったマクロは、何度も使い回す事になるとおもいます。
その場合は、そのマクロをファイルに保存しておいて、
それを読み込むようにしておくと便利です。

以下の例では、マクロ \verb|\SeqI| の定義が、
ファイル \verb|macro.tex| の中に記述されているという想定です。

その場合には、\verb|\input| を利用して、そのファイルの内容を、
読み込む事ができます。

  \begin{itembox}[l]{マクロ定義をファイルに追い出す(\TeX)}
    \begin{verbatim}
\input{mymacro.tex} % \SeqI の定義はこの中にあるものとする
                    % input は通常、プリアブル(\begin{document} の前) に置く
\[
\SeqI{a}{i} % \SeqI を利用
\]
    \end{verbatim}
  \end{itembox}

  \begin{itembox}[l]{マクロ定義をファイルに追い出す(整形後の文章)}
\input{mymacro.tex} % \SeqI の定義はこの中にあるものとする
                    % input は通常、プリアブル(\begin{document} の前) に置く
\[
\SeqI{a}{i} % \SeqI を利用
\]
  \end{itembox}

%%
%%	本文終了
%%

\end{document}

%%
%%	ファイルの終了
%%
