%!TEX program = xelatex
%!TEX options = -shell-escape --file-line-error --synctex=1
\documentclass[
a4paper,xelatex,
everyparhook=compat,
ja=standard,
oneside,
textwidth-limit=50,
texwidth=50ze
]{bxjsbook}
\evensidemargin 0.0in
\oddsidemargin 0.0in
\usepackage{amsmath,amsthm,amsfonts}
\usepackage{mathrsfs}
\usepackage[
setpagesize=false,
bookmarksnumbered=true,%
bookmarksopen=true,%
colorlinks=true,%
linkcolor=blue,
citecolor=blue,
urlcolor=blue
]{hyperref}
\usepackage{cleveref}
% 基本のフォント設定
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{unicode-math}
%\usepackage[english,japanese]{babel}
% 言語と日本語フォントの設定
\setmonofont{Cica} % https://github.com/miiton/Cica
\setmainlanguage{japanese}
\setotherlanguage{english}
\newfontfamily\japanesefont{Hiragino Mincho Pro} % ヒラギノ明朝を使用
\newfontfamily\cjkfont{Hiragino Mincho Pro} % CJKフォント
\newfontfamily\cjkfontsf{Hiragino Sans W3}
%%check fontfamilies
% fc-list : family | grep IPA
% IPA明朝,IPAMincho
\usepackage{xcolor}
\usepackage[]{graphicx}
\usepackage{wrapfig}
\usepackage{minted}
\usemintedstyle{perldoc} % minted の style $ pygmentize -L styles で利用可能なstyleが表示される.
\definecolor{LightGray}{gray}{0.9}
\setminted{
breaklines=true,
escapeinside=||,
mathescape=true,
linenos=true,
numbersep=10pt,
xleftmargin=5pt,
fontsize=\scriptsize,
bgcolor=LightGray,
}
\date{\today}
\begin{document}
\begin{wrapfigure}{r}[0pt]{0.4\textwidth}
\begin{minted}{julia}
using Random
β₀ = 2 # β₀は\beta<tab>\_0<tab>と入力
≠ # \noteq<tab>
→ # \rightarrow<tab>
⊂ # \subset<tab>
∘ # \circ<tab>
¬ # \neg<tab>
∀ # \forall<tab>
∃ # \exists<tab>
∈ # \in<tab>
∉ # \notin<tab>
∑ # \sum<tab>
∏ # \prod<tab>
∧ # \wedge<tab>
∨ # \vee<tab>
∩ # \cap<tab>
∪ # \cup<tab>
∼ # \sim<tab>
≈ # \approx<tab>
≡ # \equiv<tab>
≢ # \nequiv<tab>
≤ # \leq<tab>
≥ # \geqv
\end{minted}
\end{wrapfigure}
juliaやpythonはUnicode symboleを変数に利用することができ,合字(ligature)に対応してるが,これらを含むソースコードをそのままコピペでTeXに貼り付けようと思うと,Unicode symbolのフォントの問題でフォントが存在しない場合に文字が消えたり,Tofu $\Box$に置換されたりする.そのため対応するmono space fontをUnicodeや合字に対応したものTeXに指定する必要があるが,欧米のフォント(JuliaMonoなど)は日本語に対応していないため,日本語フォントで探す必要がある.上記要件を満たす日本語フォントして\href{https://github.com/miiton/Cica}{Cica}が要件を満たす(macならhomebrewでinstall可能).
加えてコースコードの転記にlstlistingでは上手いかなかった(ような気がする)ので,mintedを使うことにするがmintedはxelatexでない機能しないようなのでXeLaTeXを使う.ただし,xelatexを使う際に以下の点に注意が必要
\begin{enumerate}
\item documentclassのオプションで``everyparhook=compat"としないとwrapfigがうまく機能しない.
\item \backslash usepackage[dvipdfmx]{graphicx}のようにオプションdvipdfmxをつけるとclashする可能性がある.
\item mintedを用いる場合は python packageのpygmentsがおそらく必要で,
\begin{minted}[
breaklines=true,
escapeinside=||,
mathescape=true,
linenos=true,
numbersep=10pt,
fontsize=\scriptsize,
bgcolor=black,
formatcom=\color{white},
]{bash}
$ which pygmentiz
\end{minted}
で何も表示されない場合は,``pip install pygments"もしくは``conda install pygments"などでpygmentsをインストールする必要があるかもしれない(anaconad,minicondaにはデフォルトで含まれているかもしれない?).
\item minted を使う場合,``xelatex -shell-escape main.tex"のように-shell-escapeのオプションが必須になる.TeXShopでこのオプションをつけるには,マジックコメント(ソースファイル参照)か下記のパスのXeLaTeX.engineの最下部のコマンドを編集して-shell-escapeを追記する.
\begin{minted}[
% breaklines=true,
% escapeinside=||,
% mathescape=true,
% linenos=true,
% numbersep=10pt,
% fontsize=\scriptsize,
bgcolor=black,
formatcom=\color{white},
]{bash}
$ cat ~/Library/TeXShop/Engines/XeLaTeX.engine
#!/bin/tcsh
set path= ($path /Library/TeX/texbin /usr/texbin /usr/local/bin)
xelatex -shell-escape -file-line-error -synctex=1 "$1"
\end{minted}
\end{enumerate}
加えてmintedを使いかつcleverefを使う場合に,\backslash usepacageの順番や場所がシビアになる.
具体的には
amsmath,hyperefのimport後,かつfontspecなどのfontの設定の前で読み込むと私の環境ではうまくいった.
加えて
\begin{listing}[H]
\backslash usepackage[english,japanese]\{babel\}
\end{listing}
を入れるとうまくいかない.
\end{document}