LaTeX関係
VScodeとlatexmkを使ってXeLaTeXでBXjsclsをtypesetしてることが多いので関連する投稿が多いと思います.
ダミーイメージの表示
\includegraphics[width=\textwidth]{example-image}
\includegraphics[width=\textwidth]{example-image-a}
\begin{figure}[h]\centering
\includegraphics[width=\textwidth]{example-image}
\caption{test}
\label{fig:example-image}
\end{figure}
reference
comment
本当は\usepackage{MWE}
が必要だけど\usepackge{graphicx}
すると読み込まれているっぽい
ダミーテキストの表示
\usepackage{lipsum}
で意味のない文章を生成できる.
使い方
以下のように使えば1から2段落分の文章が挿入される
\lipsum[1-2]
reference
文献関係でTwitterでバズってたやつなんだっけ
文献リストから引用箇所に飛べるやつだっけ...?
hyperlink.styのoption設定だった気がする
画像だけdraft mode
documentclassのoptionにdraftを入れるとtypesetが軽くなるdraft modeになる
その代わりに
\usepackage[draft]{graphicx}
すると画像だけdraft modeになり画像が表示されなくなりtypesetが早くなる.
基本的に画像renderingに時間がかかってるだけなのでこちらの方が良い気がする
reference
BXjsclsのfigure環境では図と番号の間が空かない
bxjsarticle
とかのBXjsclsを使うと図の番号が図1.1
みたいになる.
本文中で参照すると図 1.1
.
jsarticle
で確認したら両方図 1.1
だった.
BXjsclsのmanual確認したけどoptionでどうこうできなさそう.
たぶん\renewcommand{\thefigure}{~\arabic{chapter}.\arabic{figure}}
とかすればいい話ではあるんだろうけど, 問題の根源が気になる...
図番号と”図”の間が空くのは正しいのか
多分英語だとFigure 1.1
で空くのが普通だからそのまま"Figure"を"図"に置換すると空いてしまうんだと思うんだけど, 日本語的には空かないのが普通な気がする.
適当に教科書パラパラしてみたらみんな空いてる.
reference
comment
BXjsclsのoptionに出てくるcompat
はcompatibleの略っぽい
BXjsclsのstyle fileの
\def\fnum@figure{\figurename\nobreak\thefigure}
にある\nobreak
が原因なので
preambleで
\makeatletter
\def\fnum@figure{\figurename\thefigure}
\makeatother
とすれば良い.
tableは
\makeatletter
\def\fnum@table{\tablename\nobreak\thetable}
\makeatother
逆に本文中の参照にスペースを潰す方法が不明.
cleverefを使っており,
\crefname{figure}{図\nobreak}{図\nobreak}
%1つ目は参照先が1つの図のとき(Fig. X)
%2つ目は参照先が2つ以上の図のとき(Figs. X-Y), 日本語では区別しない.
は意味なし.
comment
こちらもmacroの再定義が必要...?
そもそも\nobreak
って空白を潰すcommandだったっけ...
並置した図のcaptionの開始位置を揃える.
minipageを使って図を並置した場合, captionの開始位置がずれて見苦しくなることがある.
minipageの配置optionをt
にすれば良い.
\begin{figure}[h]
\begin{minipage}{0.5\hsize}\centering
\includegraphics[width=\textwidth]{example-image-a}
\caption{\lipsum[1]}
\label{fig:1}
\end{minipage}
\begin{minipage}{0.5\hsize}\centering
\includegraphics[width=\textwidth]{example-image-b}
\caption{\lipsum[2]}
\label{fig:2}
\end{minipage}
\end{figure}
これが
\begin{figure}[h]
\begin{minipage}[t]{0.5\hsize}\centering
\includegraphics[width=\textwidth]{example-image-a}
\caption{\lipsum[1]}
\label{fig:1}
\end{minipage}
\begin{minipage}[t]{0.5\hsize}\centering
\includegraphics[width=\textwidth]{example-image-b}
\caption{\lipsum[2]}
\label{fig:2}
\end{minipage}
\end{figure}
こう
reference
comment
図番号が(a)(b)とかになって良いのなら\usepackage{subcaption}
して\caption
を\subcaption
にすれば良い.
referenceにあるけど画像の縦の大きさが揃ってない場合はちょっとめんどそう.
latexmkを使用されるdriverで使い分ける
latexmkは$pdf_mode
の値で呼ばれるdriverが決まるっぽい.
実行時に普段設定しているdriverとは別のdriverを使いたい場合は$pdf_mode
の値を実行時引数として直接指定できないので対応するoptionでdriverを指定する.
$pdf_mode |
driver | option | 流れ | 使用される変数 |
---|---|---|---|---|
0 | (u)pLaTeX | なし | .tex→.dvi | $latex |
1 | pdfLaTeX | -pdf |
.tex→.pdf | $pdflatex |
2 | (u)pLaTeX | -pdfps |
.tex→.ps→.pdf |
$latex →$dvips →$ps2pdf
|
3 | (u)pLaTeX | -pdfdvi |
.tex→.dvi→.pdf |
$latex →$dvipdf
|
4 | LuaLaTeX | -pdflua |
.tex→.pdf | $lualatex |
5 | XeLaTeX | -pdfxe |
.tex→.dvi→.pdf |
$xelatex →$xdvipdfmx
|
latexmk -pdfdvi -pv hoge.tex
みたいな使い方をする.
reference
comment
普通(u)pLaTeXは$pdf_mode=3
-xelatex
というオプションもあるっぽい(謎)
-pdfxe - generate pdf by xelatex
-xelatex - use xelatex for processing files to pdf
-xelatex
は-pdfxe -dvi- -ps-
と等価.(texdoc latexmk
から)
dviとpsの出力をしないようにして-pdfxe
を使用という意味になる
数式あり和洋混合文の書き方.
この辺を見つつtemplateを固めたい.
数式の標準記号があるらしい
数式マナーの根拠
物理系はIUPAPのred book
\mathrm{e}
, \mathrm{d}
, 転置: A^\mathrm{T}
化学系はIUPACのgreen book
それ以外の自然科学分野はISO80000-2?
JISはないっぽい JIS Z 8201-1981JIS Z 8000-2:2022
日本工業規格 (JIS) では2022年に制定された JIS Z 8000-2:2022 が相当する。これに伴い、それまで ISO 80000-2 に相当する部分を担ってきた JIS Z 8201:1981 は廃止された[2][3]。
引用元: https://ja.wikipedia.org/wiki/ISO_80000-2
数学はAMS style guide...?
電荷素量
The Art of
和洋混合文の問題点
- 全角括弧・全角句読点の存在
日本語で組版する場合は全角括弧・全角句読点が正しいとされている(どこで?)
一方で欧文では半角括弧・半角句読点が用いられている.
英語を半角括弧で閉じて日本語は全角括弧で閉じると
(日本語(English))
のようになり))
がキモい.
お前のお気持ちなんざ知るかという話だけど何とかならないものか...
- 漢数字と英数字問題
- 句読点はどれにするか問題
- カタカナ表記か英語表記か
他
- 和洋混合文では文頭に英単語が来ても大文字にしない←文章としては日本語なので.
漢数字と英数字問題
わからん
1度 vs 一度
3角形 vs 三角形
第1原理 vs 第一原理
3角形より三角形の方が違和感ないけど, じゃあ六万五千五百三十七角形って書くのか?問題(Wikipediaは書いているけども...)
JIS X 4051に基づいた日本語組版処理の要件というものが公開されており,jlreqドキュメントクラスも作成されている
複数行comment outにcomment.styはいらんらしい
Twitterで見た
\section
とかに\bm
がいるとerrorになる
hyperref.sty使っていると起こるらしい.
\texorpdfstring{tex command)}{代替text}
とすれば良い.
\section{\texorpdfstring{\(\bm{x}\)}{x}}
reference
\bm
は使えないが代わりに\pmb
を使う
MathJaxではGithubやJupyter Notebookなど
matplotlibも?
{}
で囲わなければ以降の文字色が全て変わる
(x)color.styでここまで黒文字
\color{blue}
ここは全部青文字
\color{red}
ここから全部赤文字
\footnote{\color{blue}}
したらそれ以降の色の変更が無効化された????????
ここまで黒文字
\color{blue}
ここは全部青文字
\footnote{\color{blue}}
ここは全部黒文字??????
\color{red}
ここから全部赤文字
\makeatletter
と\makeatother
は@
をエスケープしてるだけ
\renewcommand
するときとかにたまに\makeatletter
と\makeatother
で囲まれたものがあるがsource fileに書くときはエスケープ(ではないが)しないといけないから必要ということらしい.
少しだけちゃんとした説明
英文字が11
, 記号などのその他の文字は12
である.
\makeatletter
は@
のcategory codeを11
に, \makeatother
は12
にするcommand.
というわけでcategory codeをいい感じにしないといけないということらしい.
(@
のcategory codeをなぜ11
に変更しないといけないのかは要勉強)
category codeの説明
TeX 文書において文書ファイル中の個々の文字に割り当てられた分類番号。 例えば,TeX 文書のコマンドは通常,バックスラッシュ文字 (環境によっては円記号で表示されるが文字コードはバックスラッシュ文字と同一) で始まる文字列(\documentclass の類)だが, これはバックスラッシュ文字のカテゴリーコードが 0 に設定されていることによる (従って,ほかの文字のカテゴリーコードを 0 に変更すると, その文字をコマンドの記述に用いることができる)。
reference
comment
日本語のcategory codeはどうなっているんだろう. 12?
GitHubの数式renderingがバッキバキに壊れる件
複数の\sum
と\hat
があると壊れる?
TODO
- MWEを作る
matplotlib周り
数式のfontをcomputer modern?にする
from matplotlib import rc
rc('text', usetex=True)
\bm
とか使いたい場合
要は使いたいpackageをここで\usepackage
する
plt.rcParams['text.latex.preamble'] = [r"\usepackage{amsmath,bm}"]
comment
これやるとズンドコ重くなるので注意
古い記法を使っていたら警告を出す
より
古いコマンドやパッケージの利用を警告するもの
\RequirePackage[l2tabu, orthodox]{nag}
これを導入すると、現在では使用を避けた方が良いものを使っていた場合、タイプセット時に警告が出ます。amsmath が提供しない数式環境を使用した場合に警告するもの
\usepackage[all, warning]{onlyamsmath}
これを導入すると、amsmath パッケージでの使用を避けた方が良いコマンドなどを使っていた場合、タイプセット時に警告が出ます
comment
amsmathの方は使ったらめっちゃ怒られてtypesetできなくなってとりあえず切ってしまった気がするのでまた時間があるときに確認したい.
\RequirePackage[l2tabu, orthodox]{nag}
使っているときにalign環境をfootnote環境におくとtypesetが通らない
ZoteroでBibTeX fileの内容をclipboardにcopy
事前準備
- 適当な文献を右clickして
選択されたアイテムから参考文献目録を作成...
をclick -
スタイルを管理する..
をclick -
他の引用スタイルを入手する...
をclick -
bibtex
で検索するとBibTeX generic citation style
が出てくるのでclick - 引用スタイル管理windowを閉じる
やり方
- BibTeX fileを出力したい文献を右clickして
選択されたアイテムから参考文献目録を作成...
をclick - 引用スタイルlistから
BibTeX generic citation style
をclickして選択 - 出力モードを
参考文献目録
, 出力方法をクリップボードにコピー
にしてOK
をclick
これで該当文献のBibTeX fileの内容がcopyされている.
改行が入らないので注意.
(Better BibTeXが必要なのかよく分かってない)
Recipe terminated with fatal error: spawn latexmk ENOENT.
VScodeでたまに出て
大体再起動すれば直るけどムカつく.
error messageを調べるとlatexmkの居場所を見失っているらしい.
shellの環境解決ができない場合に発生している気がするけどよく分からない.
shellの初期化に10秒以上かかる場合は失敗するようになっているっぽい.
公式websiteを見ると時間がかかるところを特定してなんとかせいということが書いてあるっぽい.
pyenvの初期化を入れてるのが悪い気がする...
terminalからVScodeを起動するとshellの解決を行わないようにできるらしい.
Gitの差分でlatexdiff
ここがよさそう
-
.bbl
をcommitしておかないといけないけどGitHubの.gitgnore templateには含まれているのでcommitされるようにしておく必要がある.
\usepackage{newtxtext,newtxmath}
が使えない...?
BXjsclsで後で確認する
未確認だけどunicode-math
との競合な気がする
図と表を並べる
これが一番楽だった
TODO
\centering
とexample-image
を使ってMWEを作る
captionの位置揃えるのがむずそう
この辺が沼
center環境は常に避けるべきなのか問題
center環境をfigure環境などで使うと不必要に縦方向の空白が開くので代わりに\centering
を使うべきという話がある.
したがってfigure環境などの環境内では\centering
を使うべきであるが, そのような環境内ではない場合はどうなのだろう.
{\centering}
とcenter環境の違いは\par
(段落変更)が追加されるかどうかで, {\centering \par}
figure環境も末尾に\par
を追加するらしいのでfigure環境内でcenter環境を使うと\par\par
みたいになってしまうので避けましょうとなっているのかもしれない(要確認).
BibLaTeXの参考文献listのtitleに色を付ける
以下はerrorになる.
\printbibliography[title=\textcolor{red}{参考文献}]
よくわからないけどred
がRED
に変換されてしまうらしくそんな色知らねーになるっぽいので黒魔術感がすごいけど
\definecolor{RED}{RGB}{255,0,0}
と大文字の色を用意してやれば良い.
comment
自分で書いててアレだけど需要が謎すぎる
XeLaTeXで日本語Beamer
fontいじると沼だけど他にもやってる人がいた
-
\XeTeXlinebreaklocale "ja"
がないと
\begin{frame}{タイトル}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{itemize}
\item ああああああああああああああ
\item あああああああああああああああ
\end{itemize}
\end{column}
\begin{column}{0.5\textwidth}
\end{column}
\end{columns}
\end{frame}
これが
こう
化学式の書き方
\usepackage[version=4]{mhchem}
\ce{C6H6}
\usepackage[version=4]{mhchem}
\usepackage[draft]{graphicx}
\usepackage[version=4]{mhchem}
が\usepackage[draft]{graphicx}
の先にあるとdraftモードが無効化される(?????)
inputするときはdocument環境を巻き込んではいけない
\input{hoge}
でsourceを分割してたけどその中に\begin{document}
が含まれて\end{document}
と別fileになるとerrorになるっぽい
VScode latex-workshopのchktexに静かにしてもらう
VScodeのlatex-workshopの設定項目の
latex-workshop.linting.chktex.exec.args
からchktexに渡すoptionを指定することができるので
-n[警告ID]
を追加する.
ここで[警告ID]
には警告したくない警告IDを入れる.
Beamerで順番にコンテンツを表示するときにベースラインを揃える
unicode-math
後で読む
unicode-math
を使うと\mathcal
と\mathscr
が縮退する
解決法
-
\lAngle
,\rAngle
で2重角括弧が書ける
https://texdoc.org/serve/unicode-math/0 -
\bm
の代わりは\symbfit
siuintx.sty
の使い方
プリアンブル
\usepackage{siunitx}
書き方
\unit{\milli\second} %単位だけ書く
\qty{10}{\milli\second} %値と単位のセット
数式に図を入れて縦に中央揃え
\begin{equation}
\vcenter{\hbox{\includegraphics[width=0.2\textwidth]{example-image}}} = \vcenter{\hbox{\includegraphics[width=0.2\textwidth]{example-image-a}}} + \vcenter{\hbox{\includegraphics[width=0.2\textwidth]{example-image-b}}}
\end{equation}
unicode-math
とamsmath
seriesとbm
とかは両立しない
統合セルを持つテーブルの作り方
\documentclass{beamer}
\usepackage{multirow}
\begin{document}
\begin{frame}{Fused Table in Beamer}
\begin{table}
\begin{tabular}{|c|c|c|c|}\hline
\multicolumn{2}{|c|}{\multirow{2}{*}{table}} & \multicolumn{2}{|c|}{column} \\\cline{3-4}
\multicolumn{2}{|c|}{} & 1 & 2 \\\hline
\multirow{2}{*}{\rotatebox{90}{row\ }} & 1 & 11 & 12 \\\cline{2-4}
& 2 & 21 & 22 \\\hline
\end{tabular}
\end{table}
\end{frame}
\end{document}
class optionで挙動を切り替える
\documentclass[draft]{beamer} % Use the draft class option to enable draft mode
\makeatletter
\@ifclasswith{beamer}{draft}{
% Draft mode
\newcommand{\myitem}{\item First item}
}{
% Not in draft mode
\newcommand{\myitem}{\item Second item}
}
\makeatother
\begin{document}
\begin{frame}
\frametitle{Conditional Itemize Example}
\begin{itemize}
\myitem % Use the custom item command
\end{itemize}
\end{frame}
\end{document}
\frametitle
がギリはみ出して2行になるときにちょっと左に動かして1行にする
%mの半分の幅だけ左にずらしている
\newlength{\charwidth}
\newlength{\halfcharwidth}
\newcommand{\hcharacter}{\settowidth{\charwidth}{m}\setlength{\halfcharwidth}{0.5\charwidth}}
\hcharacter % Calculate the width of the character "m" and store it in \charwidth
\begin{frame}[c]{\hspace{-\halfcharwidth} too long frametitle}
\end{frame}
%mの幅だけ左にずらしている
\newlength{\charwidth}
\newcommand{\hcharacter}{\settowidth{\charwidth}{m}}
\hcharacter % Calculate the width of the character "m" and store it in \charwidth
\begin{frame}[c]{\hspace{-\charwidth} too long frametitle}
\end{frame}
TikZで条件分岐?
unicode-math
で\mathscr
と\mathcal
を使い分ける
Unicodeではスクリプト体(\mathscr
)とカリグラフィ体(\mathcal
)が区別されないため,unicode-math
では\mathscr
と\mathcal
で同じ字形が表示されてしまう [1][2].
unicode-math
で利用可能なフォントの中で,unicode-math
の設定で\mathscr
と\mathcal
で使い分けができるのは
- SITX Two Math
- NewComputerModernMath
- XITS Math
- KpMath
- Gramond-Math
のみの模様.
フォント設定
それぞれのフォント設定は下記の通り.
共通して\usepackage{unicode-math}
が事前に必要.
なお,Gramond-Mathは設定がss03
とss08
の2種類ある[3].
見た目は下画像を参照のこと.
SITX Two Math
\setmathfont{STIX Two Math}
\setmathfont{STIX Two Math}[
range = { scr, bfscr },
StylisticSet = 1
]
NewComputerModernMath
\setmathfont{NewComputerModernMath}
\setmathfont{NewComputerModernMath}[
range = { scr, bfscr },
StylisticSet = 1
]
XITS Math
\setmathfont{XITS Math}
\setmathfont{XITS Math}[
range = { cal, bfcal },
StylisticSet = 1
]
KpMath
\setmathfont{KpMath}
\setmathfont{KpMath}[
range = { cal, bfcal },
StylisticSet = 1
]
Gramond-Math (ss03)
\setmathfont{Garamond-Math}
\setmathfont{Garamond-Math}[
range = { cal, bfcal },
StylisticSet = 3
]
Gramond-Math (ss08)
\setmathfont{Garamond-Math}
\setmathfont{Garamond-Math}[
range = { cal, bfcal },
StylisticSet = 8
]
参考画像
参考文献
詳しくはこの記事を参照のこと.
Latexmk: Stopping because of bad filename(s). (VScode, latex-workshop)
原因: file pathに~
が入ってるとbuildに失敗する
- ↑"latex-workshop.latex.tools"の
%DOC%
を%DOCFILE
にするとよい?
- ↑
%DOC%
や%DOCFILE
などの意味
より
%DOC%
(ファイルのフルパスから拡張子を除いたもの)の代わりに%DOCFILE%
(フォルダを含まないファイルの名前から拡張子を除いたもの)を指定すると、フォルダの日本語がlatexmkに渡されないので、正しくコンパイルできるようになると思います。
unicode-math
で指定する数学用フォントが見つからない (XeLaTeX)
とりあえず
-
sudo fc-cache -fsv
を試す -
[sudo] tlmgr update --self --all
→sudo fc-cache -fsv
を試す -
[font_name]-Regular.otf
とかに\setmathfont
の指定を変えてみる
くらい
未解決だけどlatexmk -pdflua
だといけた...
table
環境やfigure
環境において\label
は\caption
に紐付いているっぽいので\label
を\caption
の前においていけない
enumitem
羅列環境の高度な操作
\mathrm
と\text
の違い
\mathrm
は数式用fontの立体,\text
は本文fontの立体が使われる[要出典]
\middle\mid
したい
-
\mid
: 集合を定義するときに使う中棒.単に|
とするのと比べると中棒の周囲に空白ができる.-
\left
,\right
に非対応.左右の\{
,\}
が大きくなっても\mid
は取り残される.
-
-
\middle
:\left
,\right
に対応,ただし\mid
で空いていた空白がなくなる.
したがって\middle\mid
したくなるが,これはerror.なぜerrorなのかは下の記事に詳しく書いてある.
\newcommand{\suchthat}{\;\ifnum\currentgrouptype=16 \middle\fi|\;}
を定義して
$\left\{ a\in A \suchthat a \leq \frac12 \right\}$
のように使う.
他の方法
\sum
や\prod
みたいな演算子を自作する
big operatorとかいうらしい
こう書くと
% preambleに書く
\DeclareMathOperator*{\bigtimeordered}{\mathcal{T}}
こう
-
\mathop
とか\operatorname
とかもあるけど基本的に\DeclareMathOperator
でokっぽい
https://tex.stackexchange.com/questions/84302/what-is-the-difference-of-mathop-operatorname-and-declaremathoperator -
\DeclareMathOperator*
で大型演算子相当っぽい - 添え字の位置は
\limit
,\nolimit
,\displaylimit
で制御可能
mactex install後 shellの再起動か以下のcommandを実行する必要がある
eval "$(/usr/libexec/path_helper)"
misc link
XeLaTeXでシステムフォントではないフォントを指定する場合拡張子が必要
任意長矢印
\newcommand{\myxleftarrow}[1]{\xleftarrow{\makebox[#1]{}}}
\myxleftarrow{1cm}
みたいに使う.
xleftarrow
には最小サイズが存在するため,それより小さくしたい場合は\usepackage{stmaryrd}
の\shortleftarrow
を使う.ただし長さの調整不可
時間順序積
\usepackage{mathtools}
\newcommand{\myxleftarrow}[1]{\xleftarrow{\makebox[#1]{}}}
\DeclareMathOperator*{\Tprod}{
\mathchoice
{\mathrlap{\hspace{-0.1em}\longleftarrow}\prod}%display
{\mathrlap{\hspace{-0.1em}\myxleftarrow{0.65em}}\prod}%textstyle
{\mathrlap{\hspace{-0.025em}\scalebox{0.7}{$\myxleftarrow{0.7em}$}}\prod}%scriptstyle
{\mathrlap{\scalebox{0.5}{$\myxleftarrow{0.8em}$}}\prod}%scriptscriptstyle
}
これが
\begin{equation}
\Tprod_{i=3}^{6}f_{\Tprod_{i=3}^{6}f_{\Tprod_{i=3}^{6}f}}
\end{equation}
こう
unicode-math
とmathtools
を同時に使うときwarningを出さない読み込み方
\usepackage{mathtools}% mathtoolsが先
\usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
TikZ
数式上に書く斜線の色を変える
- まず斜線を描くには
\usepackage{cancel}
- 色を変えるには
\renewcommand{\CancelColor}{\color{red}}
と書いておく-
\usepackage{color}
か\usepackage{xcolor}
が必要だと思う
-
-
\cancel{hoge}
と書けばhogeに色のついた斜線が書かれる
\\ %
はバグる