空論上の砂、楼閣上の机。

The Castle of Indolence

(ver.1.0) ぼくのかんがえたさいきょうのTeX環境

改訂しました: www.all-for-nothing.com


今までかなり適当に (u)pLaTeX を使ってきたので色々整理したくなりました。

まず LuaLaTeX に鞍替えしました。最近の TeXLive には入ってると思うので大丈夫だと思います。その次に BXJS クラスを使いました。geometry パッケージが(工夫しないと)使えなかったりするので一度マニュアルを読むといいかもしれないのですが、設定を変えないなら後に載せるコードのままでいいと思います。

完成図は次です。 f:id:all_for_nothing:20190903034106p:plainf:id:all_for_nothing:20190903034110p:plain

注意:\usepackage[all, warning]{onlyamsmath} と blanker オプションはどうやら競合しているようです。特に問題なさそうなので無視して構いません。もし amsmath について熟知しているならそもそもこのパッケージを読み込まなくてもよいでしょう。

また、theorem や definition とわざわざ書いて使うのは可読性を高めるためで、実際に入力する際は Atom などのオートコンプリート機能があるエディタを用いてください。Atom の場合はまず begin と(スラッシュを打たずに)して tab を叩き、あとは適当にやればよいです。

\documentclass[b5paper,twocolumn,lualatex,ja=standard]{bxjsarticle}

\RequirePackage[l2tabu, orthodox]{nag} %古い書き方をしたら警告を出す
\usepackage[all, warning]{onlyamsmath} %amsmath 以外の数式環境を使ったら警告を出す

% 書式設定
\usepackage{graphicx}
\setpagelayout{top=20truemm,bottom=20truemm,left=15truemm,right=15truemm} % 余白
\usepackage{fancyhdr} % ヘッダー・フッター
\pagestyle{fancy}
  \lhead{}
  \chead{\leftmark}
  \rhead{}
  \cfoot{\thepage}
\renewcommand{\headrulewidth}{1pt} % 上線 (1cm)
\renewcommand{\footrulewidth}{1pt} % 下線 (1cm)
\usepackage{titlesec} % 見出し
\usepackage{xcolor} % 色
\titleformat{\section}[block]
  {\Large\sffamily}
  {\thesection}
  {.5em}
  {\titlerule[1pt]\\[.8ex]\bfseries}
\titleformat{\subsection}
  {\normalsize\bfseries}
  {\colorbox{black}{\color{white}\thesubsection}}
  {1em}{}
\titleformat{\subsubsection}
  {\normalsize\bfseries}
  {\fbox{\thesubsubsection}}
  {1em}{}

% 図表環境
\usepackage{tikz}
\usepackage{wrapfig} % 図の回り込み
\usepackage{overpic} % 図上に文字
\usepackage{tcolorbox}
\usepackage{multirow}

% 数式環境
\usepackage{amsmath, amssymb}
\usepackage{bm} % 数式太字
\usepackage{siunitx} % 単位
\usepackage{empheq} % 連立方程式

\newcommand{\B}[1]{\tag{$\because$ #1}}
\newcommand{\nPr}[2]{{}_{#1}\mathrm{P}_{#2}}
\newcommand{\nCr}[2]{{}_{#1}\mathrm{C}_{#2}}
\newcommand{\abs}[1]{\left\lvert#1\right\rvert} % 絶対値
\newcommand{\norm}[1]{\left\lVert#1\right\rVert} % ノルム

% rank や rot などを DeclareMathOperator 環境を用いて定義するといいと思います。自分のはまだ人様に見せられるほど整理できていないので、また今度の機会に。

% 定理環境
\usepackage{amsthm}
\tcbuselibrary{theorems,breakable,skins}
\tcbset{
  defstyle/.style={sharp corners, interior empty,
    arc=0mm,outer arc=0mm,
    boxrule=0mm,toprule=0mm,bottomrule=1pt,left=1mm,right=1mm,
    titlerule=0mm,toptitle=0mm,bottomtitle=0mm,top=0mm,
    borderline south={1pt}{0pt}{white!25!black},
    colframe=white!25!black,colback=white,coltitle=white,
    title style=white!25!black,
    fonttitle=\bfseries,fontupper=\normalsize},
}
\newtcbtheorem[number within=section]{definition}{定義}{defstyle}{def}
\newtcbtheorem[use counter from=definition]{theorem}{定理}{defstyle}{thm}
\newtcbtheorem[use counter from=definition]{proposition}{命題}{defstyle}{prop}
\newtcbtheorem[use counter from=definition]{lemma}{補題}{defstyle}{lem}
\newtcbtheorem[use counter from=definition]{corollary}{}{defstyle}{cor}
\newtcbtheorem[use counter from=definition]{postulate}{要請}{defstyle}{pos}
\newtcbtheorem[use counter from=definition]{axiom}{公理}{defstyle}{axiom}
\theoremstyle{definition}
\newtheorem*{ex}{}
\tcolorboxenvironment{ex}{blanker,breakable,
  left=1em,before skip=10pt,after skip=10pt,
  borderline west={1mm}{0pt}{}
}
\newtheorem*{note}{}
\tcolorboxenvironment{note}{blanker,breakable,
  left=1em,before skip=10pt,after skip=10pt,
  borderline west={1mm}{0pt}{}
}
\renewcommand\proofname{\textbf{証明}}
\tcolorboxenvironment{proof}{blanker,breakable,
  left=1em,before skip=10pt,after skip=10pt,
  borderline west={1mm}{0pt}{}
}

% フォント
\usepackage{luatexja-fontspec} % Latin Modern
\usepackage[deluxe,expert,bold,hiragino-pr6n]{luatexja-preset}

% その他
\usepackage[unicode,hidelinks,pdfusetitle]{hyperref} % ハイパーリンク
\usepackage{comment} % コメント
\usepackage{url} % URL
\usepackage{bxokumacro} % ふりがな・圏点
\usepackage[at]{easylist} % @で箇条書き
\renewcommand{\labelenumi}{(\arabic{enumi})} % enumerateを(n)にする
\usepackage{lipsum}
% 索引
\usepackage{makeidx}
\makeindex
% ソースコード
\usepackage{listings}
\lstset{
    basicstyle=\ttfamily\footnotesize,
    columns=flexible,
    tabsize=2,
    frame=single,
    extendedchars=true,
    showspaces=false,
    showstringspaces=false,
    numbers=left,
    numberstyle=\tiny,
    breaklines=true,
    breakautoindent=true,
    captionpos=b
}

\begin{document}

\title{サンプル ver 1.0}
\author{bear}
\date{\today}
\maketitle

\section{環境}
Lua\LaTeX + bxjsarticle でコンパイルを想定。作成環境は macOS 10.14.6 なので Windows とかで使う人はヒラギノ埋め込みとかを変えておいてください。他にも二段組が嫌な場合は twocolumn を外してください。

\section{サンプル}
\subsection{定理環境}
\begin{theorem}{ほにゃらら}{}
  ほにゃらら
\end{theorem}
\begin{proof}
  ほにゃらら
\end{proof}
\begin{ex}
  ほにゃらら
\end{ex}
\begin{note}
  ほにゃらら
\end{note}

\subsection{コード}
\begin{lstlisting}
  int main(){} % C++の最小のコード
\end{lstlisting}

\subsubsection{書くことがないのでlipsum}
\lipsum[1-5]

\end{document}