Open11

また TeX/LaTeX で頭を抱えようとしている私へ

KusaReMKNKusaReMKN

\LaTeX でビジネス文書を書く

みんなレポートや論文を書くだけでビジネス文書なんて書いてやくれないと思っていたが、そんなことはなかった。 jbusinessdoc を利用することでビジネス文書を便利に書くことができる[1]。 しかし、本家は \rm p\LaTeX\rm up\LaTeX にしか対応していない。

脚注
  1. https://github.com/h1g0/latex_jbusinessdoc ↩︎

KusaReMKNKusaReMKN

latexmk を使ってコンパイルする

latexmk は \LaTeX 文書をよしなにコンパイルしてくれるコマンドである[1]

私は \mathrm{Lua}\LaTeX をよく使う。 latexmk を用いて \mathrm{Lua}\LaTeX の文書をコンパイルしてもらうには、tex のソースファイルがあるディレクトリで以下のように実行する。

$ latexmk -lualatex

しぶしぶ \mathrm{p}\LaTeX\mathrm{up}\LaTeX を用いるときは、次のように実行する。

$ latexmk -latex='platex'		# pLaTeX の場合
$ latexmk -latex='ptex2pdf -u -l'	# upLaTeX で PDF 生成までやってもらう場合

latexmk は tex ソースファイルを監視して、更新があったときに自動で再コンパイルすることもできる。 以下のように実行すると、latexmk は Ctrl+C を押下されるまでの間 tex ファイルを監視し続ける。 ただし、オプションの -interaction= は、コンパイルに失敗した場合に対話的なモードに入らないことを指示している。

$ latexmk -pvc -interaction=nonstopmode -latex='ptex2pdf -u -l'

(追記 2023-12-15)上の方法だと、latexmk は dvi を生成した気になっているかもしれない。 dvi 経由で pdf に変換していることを明示するためには、オプション -pdfdvi を指定して、dvipdf の代わりに dvipdfmx を用いることを指示したほうが良さそう。

$ latexmk -pvc -pdfdvi -latex=uplatex -e '$dvipdf="dvipdfmx %O %S";' -interaction=nonstopmode

(追記ここまで)

なお、MS-Windows の cmd.exe 上で実行する場合は、一重引用符を二重引用符に置き換えたほうが良いかもしれない。

脚注
  1. https://texwiki.texjp.org/?Latexmk ↩︎

KusaReMKNKusaReMKN

「図」とか「表」とか書かない

figure 環境とか table 環境とかで \caption{} を使うと、図 X: ほげほげ とか 表 Y: ふがふが とか表示される。 それに \label{} を用いてラベルをつけ、参照するときに 図~\ref{hoge} とか 表~\ref{fuga} とか書かないこと。 誰がそれを「図」と呼び、「表」と呼ぶと決め付けたのかよく考えなさい。 \figurename~\ref{hoge} とか \tablename~\ref{fuga} とか書くと、勝手に「図」とか「表」とかにしてくれる。

また、\ref{}\cite{} の前には改行しないスペース ~ を置くと、その位置での改行を禁止しながら見栄えよく仕上がる。

2024-02-07 追記

ちょっと違う話ではあるが、Twitter 上で@underachiever_R 氏から指摘をいただいた。

https://twitter.com/underachiever_R/status/1754720062899204494

~ の幅は \xkanjiskip とは異なるかもしれないから、見栄えに影響しそうである。 代わりに \figurename\nobreak\ref{hoge} のように記述すればよいのだが、毎回これを記述することは煩雑で仕方がないので、楽に記述できるように以下のようなマクロを用意すると良さそう。

\newcommand{\図}[1]{\figurename\nobreak\ref{#1}}
\newcommand{\表}[1]{\tablename\nobreak\ref{#1}}
\newcommand{\式}[1]{\nobreak\eqref{#1}}
KusaReMKNKusaReMKN

テーブルのカラムの長さを指定しつつ中揃えにする

プレアンブルに以下を追加して、p{width} のように C{width} とかする[1]

プレアンブル追加分
\usepackage{array}
\newcommand{\PreserveBackslash}[1]{\let\temp=\\#1\let\\=\temp}
\newcolumntype{C}[1]{>{\PreserveBackslash\centering}p{#1}}
\newcolumntype{R}[1]{>{\PreserveBackslash\raggedleft}p{#1}}
\newcolumntype{L}[1]{>{\PreserveBackslash\raggedright}p{#1}}
サンプル
\documentclass[uplatex,dvipdfmx]{jsarticle}
\usepackage{array}
\newcommand{\PreserveBackslash}[1]{\let\temp=\\#1\let\\=\temp}
\newcolumntype{C}[1]{>{\PreserveBackslash\centering}p{#1}}
\newcolumntype{R}[1]{>{\PreserveBackslash\raggedleft}p{#1}}
\newcolumntype{L}[1]{>{\PreserveBackslash\raggedright}p{#1}}
\begin{document}
\begin{table}
  \centering
  \caption{ほげほげ}
  \begin{tabular}{C{5zw}C{10zw}}
    \hline
    あれ & それ \\
    \hline
    hoge & fuga \\
    piyo & hogera \\
    foo & bar \\
    \hline
  \end{tabular}
\end{table}
\end{document}
脚注
  1. https://tex.stackexchange.com/questions/286950/how-to-create-a-table-with-fixed-column-widths ↩︎

KusaReMKNKusaReMKN

危険な曲がり角を表示する

危険な曲がり角 ☡ を表示するには manfnt を読み込んで \dbend とします。

\documentclass[lualatex]{jlreq}
\usepackage{manfnt}
\begin{document}
\LaTeX では危険な曲がり角は\dbend のように見えます。

亜種もあります。

\lhdbend
\reversedvideodbend
\textdbend
\textlhdbend
\textreversedvideodbend
\end{document}

KusaReMKNKusaReMKN

\label の引数を表示する

showlabels パッケージがちょうどその仕事をしてくれます[1]

\documentclass[lualatex,paper=b7,landscape]{jlreq}
\usepackage{amsmath}
\usepackage[inline]{showlabels}
\usepackage{tikz}
\begin{document}\nobreak\eqref{すごい式}は有名なやつです。
\begin{equation}
  1729
  = 12^3 + 1^3
  = 10^3 + 9^3
  \label{すごい式}
\end{equation}

あと、\figurename\nobreak\ref{すごい図}もまた有名なやつです。
\begin{figure}
  \centering
  \tikz\draw(0,0)--(1,2)--(2,0)--(3,2)--(4,0);
  \caption{簡単な図}
  \label{すごい図}
\end{figure}
\end{document}

サンプル出力

脚注
  1. https://konoyonohana.blog.fc2.com/blog-entry-299.html ↩︎

KusaReMKNKusaReMKN

罫線(HTML の <HR> のようなもの)

水平線は \hrulefill で出せます。点線が良いなら \dotfill で出せます。段落の字下げが邪魔なら \noindent を前に付けてやります。