Draw by MetaPost with LuaTeX and luamplib in Japanese
Author
Satie Moonlight
Last Updated
6年前
License
Creative Commons CC BY 4.0
Abstract
Test paper for Japanese TeX and MetaPost User
Test paper for Japanese TeX and MetaPost User
%\documentclass{article}
\documentclass[fleqn,a4paper]{ltjsarticle}
\usepackage[top=10truemm,bottom=10truemm,left=10truemm,right=10truemm]{geometry}
\usepackage{amsmath,amssymb}
\usepackage{luatexja-fontspec}
\usepackage{luamplib}
\usepackage{luatexja-ruby}
\usepackage{multicol}
\everymplib{beginfig(1);}
\everyendmplib{endfig;}
\begin{document}
% title
\noindent$\square$\hfill$\square$\par\vspace{-1\zw}
\noindent\Huge\hfill%
Overleaf というブラウザ経由での\TeX 環境で,\hfill~\par\noindent\hfill%
Lua\LaTeX で日本語と\verb+\luamplib+を使って\hfill~\par\noindent\hfill%
日本語での数式込み\textsf{MetaPost}作図な文面を試す
\hfill~\par%\vspace{-1\zw}
\normalsize
\noindent$\square$\hfill$\square$\par
%
%
\begin{multicols}{2}
\ruby{私}{わたし}は\ruby{誰}{だれ}?
%
\par\noindent\hfill$\infty$\hfill~\par
%
それはさておき...
%
\par\noindent\hfill$\infty$\hfill~\par
%
\TeX 文書の冒頭,所謂プリアンブルなどと呼ばれる部分は,
このお試し文書では次のようにしてみた。
%
\begin{quotation}\parindent=0pt\begin{verbatim}
\documentclass[fleqn,a4paper]{ltjsarticle}
\usepackage[top=10truemm,bottom=10truemm,%
left=10truemm,right=10truemm]{geometry}
\usepackage{amsmath,amssymb}
\usepackage{luatexja-fontspec}
\usepackage{luamplib}
\usepackage{luatexja-ruby}
\usepackage{multicol}
\everymplib{beginfig(1);}
\everyendmplib{endfig;}
\begin{document}
\end{verbatim}\end{quotation}
%
少しだけ説明してみましょう。\par
%
\noindent\verb+\documentclass[fleqn,a4paper]{ltjsarticle}+
\par
これは\ruby{\textbf{文書}}{document}\ruby{\textbf{クラス}}{class}というもので,\verb+ltjsarticle+という仕様で,
\verb+fleqn+は「数式の位置を左から一定の位置に書く」ことにしてねっていう指示で,\verb+a4paper+はそのまま。
\verb+ltjsarticle+については,
\verb+l-t-js-article+みたいな区切りで読めば多分よくて,\verb+lua+な\verb+tex+での\verb+js+は日本語での\verb+article+は本(book)でもレポート(report)でもない記事(article)という短い文書用の体裁でっていう指定です。
\noindent\verb+\usepackage[top=10truemm,bottom=10truemm,+\par
\noindent\verb+left=10truemm,right=10truemm]{geometry}+\par
これは,巷のワープロなどと同様でデフォルトだと文書の余白が余裕で広いので,余白調整したいなぁという時の呪文。
\noindent\verb+\usepackage{luamplib}+\par
これで\verb+lua+で\verb+mp+(MetaPost)を使う\verb+lib+(ライブラリ)のパッケージを使うよってしておいて\par
\noindent\verb+\everymplib{beginfig(1);}+\par
\noindent\verb+\everyendmplib{endfig;}+\par
はその\verb+luamplib+を快適に使うための\ruby{御呪い}{おまじない}。
%
\par\noindent\hfill$\infty$\hfill~\par
%
さて,
\vspace{1\zw}\par\noindent\hfill%
\begin{mplibcode}
pickup pencircle scaled 3mm;
draw (0,0)--(5cm,5cm){dir 270}..{dir 180}(2.5cm,0)..{dir 90}(0,2.5cm)..(1.5cm,4cm)..(3cm,1cm)..{dir 90}(2.5cm,5cm);
\end{mplibcode}
\hfill~\par\vspace{1\zw}
%
このように\textsf{MetaPost}で図を描くことも容易だ。
もちろん,こんな感じで,
\vspace{1\zw}\par\noindent\hfill%
\begin{mplibcode}
pickup pencircle scaled 0.5mm;
z.A=(4cm,5cm);z.B=(0cm,0cm);z.C=(6cm,0cm);z.M=1/2[z.B,z.C];
draw z.A--z.B--z.C--z.A--z.M;
label(textext("A"),z.A+(3mm,0) rotated 90);
label(textext("B"),z.B+(3mm,0) rotated 200);
label(textext("C"),z.C+(3mm,0) rotated -20);
label(textext("M"),z.M+(3mm,0) rotated -90);
\end{mplibcode}
\hfill~\par\vspace{1\zw}
所謂初等幾何的な図もサクサク描くことができる。
ちなみに上の三角形の部分は,
\begin{quotation}\begin{verbatim}
\begin{mplibcode}
pickup pencircle scaled 0.5mm;
z.A=(4cm,5cm);z.B=(0cm,0cm);
z.C=(6cm,0cm);z.M=1/2[z.B,z.C];
draw z.A--z.B--z.C--z.A--z.M;
label(textext("A"),z.A+(3mm,0) rotated 90);
label(textext("B"),z.B+(3mm,0) rotated 200);
label(textext("C"),z.C+(3mm,0) rotated -20);
label(textext("M"),z.M+(3mm,0) rotated -90);
\end{mplibcode}
\end{verbatim}\end{quotation}
というとてもシンプルなものだ。
\end{multicols}
\end{document}