LaTeXで連立1次方程式

#私家版のしょぼいマクロ

```example.tex
\documentclass{jsarticle}

\makeatletter
\newenvironment{syslineq}[1][10]{%
  \mbox\bgroup\begin{math}\left\{%
  \renewcommand{\arraycolsep}{.15em}%
  \begin{array}{*{#1}{cr}l}
}{%
  \end{array}%
  \right.\end{math}\egroup%
}
\makeatother

\begin{document}

\begin{syslineq}
 & 7 x &-& y & &     &=& 1 \\
 &     & & y &+&   z &=& 2 \\
-&   x & &   &+& 8 z &=& 3
\end{syslineq}

\end{document}
```
![output](https://qiita-image-store.s3.amazonaws.com/0/108155/0298432c-f478-374f-67ca-f23a6816b38d.png)

事実上，array 環境。`&` を並べるのが鬱陶しい…。


#systeme パッケージ

CTAN: Package [systeme](https://www.ctan.org/pkg/systeme) - Format systems of equations （連立方程式の整形）

- TeX Live や MiKTeX には含まれている。
- 自分のシステムに新たに追加する場合は，`systeme.sty` と `systeme.tex` をダウンロードして，適当なところに置けばよい。
- 説明書は仏語。でも，眺めていれば使い方は何となくわかる。たぶん。 

```example.tex
\documentclass{jsarticle}
\usepackage{systeme}

\begin{document}
\systeme{7x-y=1,y+z=2,-x+8z=3}
\end{document}
```
![20170327-000001.png](https://qiita-image-store.s3.amazonaws.com/0/108155/50b30dec-0976-29d1-84cc-a96302016ae4.png)

`\systeme` の中は数式モードなので，中のものを `$` でくくる必要はない，とのことらしい。

いろいろな使用例を掲載した頁を作ろう。＞自分


#autoaligne パッケージ

CTAN: Package [autoaligne](https://www.ctan.org/pkg/autoaligne) - Align terms and members in math expressions （項を揃えてくれる）

- TeX Live や MiKTeX には含まれている。
- 自分のシステムに新たに追加する場合は，`autoaligne.sty` と `autoaligne.tex` をダウンロードして，適当なところに置けばよい。
- listofitems パッケージが必要。autoaligne パッケージを読み込む中で読み込まれる。
 - listofitems パッケージを自分のシステムに新たに追加する場合は，`listofitems.sty` と `listofitems.tex` をダウンロードして，適当なところに置けばよい。
- 説明書は仏語。でも，眺めていれば使い方は何となくわかる。たぶん。 
- `\autoaligne` の中は数式モードなので，中のものを `$` でくくる必要はない，とのことらしい。

```example.tex
\documentclass{jsarticle}
\usepackage{autoaligne}

\begin{document}
\autoaligne{7x-y=1\\y+z=2\\-x+8z=3}
\end{document}
```
![output](https://qiita-image-store.s3.amazonaws.com/0/108155/445aed3b-204e-12ff-3fc8-c64528eba322.png)

あれれ？　期待通りに縦に揃ってくれない…。

縦に揃えるには，空くところに `+` を入れれば良いようだ。

```example.tex
\documentclass{jsarticle}
\usepackage{autoaligne}

\begin{document}
\autoaligne{7x-y=1\\+y+z=2\\-x++8z=3}
\end{document}
```
![output](https://qiita-image-store.s3.amazonaws.com/0/108155/358a7562-7f62-e6e7-6951-8168762a5003.png)

いろいろな使用例を掲載した頁を作ろう。＞自分


#spalignパッケージ

CTAN: Package [spalign](https://www.ctan.org/pkg/spalign) - Type­set ma­tri­ces and ar­rays with spaces and semi­colons as de­lim­iters （行列の組版，成分の区切りはスペースとセミコロン）

- TeX Live や MiKTeX には含まれている。
- 自分のシステムに新たに追加する場合は，`spalign.dtx` と `spalign.ins` をダウンロードして，`platex spalign.ins` を実行して，得られた `spalign.sty` を適当なところに置けばよい。

`\spalignsys` コマンドの利用。`\+` は２項演算子のダミー。`\.` はダミー項。

```exapmle.tex
\documentclass{jsarticle}
\usepackage{spalign}

\begin{document}

$\spalignsys{7x - y \+ \. = 1; \. \+ y + z = 2; -x \+ \. + 8z = 3}$
\qquad
$\left\{\spalignsys*{
  7x - y \+ \. = 1; \. \+ y + z = 2; -x \+ \. + 8z = 3
 }\right.$

\end{document}
```
![output](https://qiita-image-store.s3.amazonaws.com/0/108155/09d5b819-53c6-9f69-f380-95f68ef5bdb3.png)

半角スペースが区切りと認識されることに注意。係数と文字の間にうっかり空白を入れると…，

```exapmle.tex
\documentclass{jsarticle}
\usepackage{spalign}

\begin{document}

$\spalignsys{7 x - y \+ \. = 1; \. \+ y + z = 2; -x \+ \. + 8 z = 3}$

\end{document}
```
![output](https://qiita-image-store.s3.amazonaws.com/0/108155/7768a139-c42d-3918-cbda-5b9e2c822def.png)

…こんな風に失敗する。

いろいろな使用例を掲載した頁を作ろう。＞自分

#参考

- CTAN: Topic [Maths sys­tem equa­tions](https://www.ctan.org/topic/maths-syseqn)：連立方程式のためのパッケージの紹介

* * *
おしまい。