LaTeXのマイテンプレート

2018.05.24

LaTeX のマイテンプレートと,それをいじるときのメモ.

dotfiles/report at master · noyuno/dotfiles

概要

  • Pandocを使ってMarkdownからLaTeXに変換している.ちょっとしたものを書くときに使用
  • latexmkを使っている
  • が,GIF画像変換やPandocの残念な部分を直す必要があるので,makeで力任せで修正

カスタマイズ

itemizeの左側を調整したい

\usepackage{enumitem}
\setlist{leftmargin=1zw}
\setlist[itemize,1]{leftmargin=1zw}

英字も強調はゴシック体にしたい

\makeatletter
\renewcommand{\textbf}[1]{ {\sffamily#1}}
\renewcommand{\title}[1]{\gdef\@title{\sffamily#1}}
\makeatother

sectionも同様にしたいとき

\makeatletter
\renewcommand{\section}{
  \@startsection{section}%
   {1}%
   {\z@}%
   {-3.5ex \@plus -1ex \@minus -.2ex}%
   {2.3ex \@plus.2ex}%
   {\sffamily\normalsize}%
}%
\renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}%
{0.1ex}%
{0.1ex}%
{\sffamily\normalsize}}

\renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}%
{0.1ex}%
{0.1ex}%
{\sffamily\normalsize}}
\makeatother

途中から2段落にしたい

\begin{multicols}{2}

注意:この環境の中では,Pandocで出力されるlongtableが使えないので, supertabularに書き換える.

sed -i -e 's/\\begin{longtable}/\\vspace{2zh}\\begin{center}\\begin{supertabular}/g' \
    -e 's/\\end{longtable}/\\end{supertabular}\\end{center}\\vspace{2zh}/' \
    -e 's/\\endhead//' \
    $@

当然だが,multicols環境内ではMarkdownが使えないのでLaTeXを手打ち

画像を横並びにしたい.図番号は(a), (b)としたい

minipagesubcaptionを使う

プリアンブル

\usepackage[subrefformat=parens]{subcaption}
\captionsetup{compatibility=false}

使い方

\begin{figure}[H]
\begin{minipage}{0.5\hsize}
    \centering
    \includegraphics[width=6cm]{./sample/1.png}
    \subcaption{left \label{fig:2fig1}}
\end{minipage}
\begin{minipage}{0.5\hsize}
    \centering
    \includegraphics[width=6cm]{./sample/2.png}
    \subcaption{right \label{fig:2fig2}}
\end{minipage}
\caption{2 figures \label{fig:2fig}}
\end{figure}

図でサイズ未指定のときは幅12cmとみなす

sed -i -e 's/\\begin{figure}$$/\\begin{figure}[H]/g' \
    -e 's/\\includegraphics{/\\includegraphics[width=12cm]{/g' \
    $@

図表番号ラベルを統一したい

\newcommand\figr[1]{Figure~\ref{fig:#1}}
\newcommand\tabr[1]{Table~\ref{tab:#1}}
\newcommand\srcr[1]{List~\ref{src:#1}}

ソースコードをいい感じに掲載したい

\lstset{basicstyle=\ttfamily\small,breaklines=true,frame=single}
\lstset{
  language={},
  basicstyle={\ttfamily},%
  identifierstyle={},%
  commentstyle={\color{BlueGreen}},%
  keywordstyle={\color{blue}},%
  ndkeywordstyle={\color{BlueGreen}},%
  stringstyle={\color{brown}},
  frame={lrtb},
  breaklines=true,
  columns=[l]{fullflexible},%
  numbers=left,%
  xrightmargin=0zw,%
  xleftmargin=3zw,%
  numberstyle={\scriptsize},%
  stepnumber=1,
  numbersep=1zw,%
  lineskip=-0.5ex,%
  breakindent=0pt,%
  showstringspaces=false,%
  tabsize=4,%
  caption=\lstname,%
  keepspaces=true%
}

Pandoc --listingでインラインlistingが使えないので修正する

pandoc --listingで実行すると\passthrough{\lstinline!...!}と知らないコマンドが出てくるので \texttt{...}と置き換える.

sed -i -e 's/\\passthrough{\\lstinline\!\([^!]*\)\!}/\\texttt{\1}/g' \
    -e 's/\\passthrough{\\lstinline"\([^"]*\)"}/\\texttt{\1}/g' \
    -e 's/\\passthrough{\\lstinline'"'"'\([^'"'"']*\)'"'"'}/\\texttt{\1}/g' \
    -e 's/\\passthrough{\\lstinline\*\([^*]*\)\*}/\\texttt{\1}/g' \
    -e 's/\\passthrough{\\lstinline,\([^,]*\),}/\\texttt{\1}/g' \
    $@

謙虚なタイトルにしたい

\makeatletter
\renewcommand\maketitle[0]{
    \begin{center}
    \hspace{-1em}
    \fontsize{18}{72}{\textgt{\@title}} \normalsize \\
    \vspace{1zh}
    \@date \quad \@author
    \end{center}
}
\makeatother

テストパターン

image