
私は、これらの素晴らしい雪の結晶の画像のように、画像にスケール バーを追加する最適な方法を考えています (フル サイズの画像は少し大きいですが、私がやろうとしていることの最良の例です)。
1 つの可能性としては、別のプログラムを使用してスケール バーを挿入することが考えられます。ただし、テキストをラスター イメージの一部として保存するのではなく、テキストがきれいで鮮明になるようにしたいです。また、スケール バーを事前に挿入すると、LaTeX がイメージを拡大縮小するときにテキストのサイズが変更されます。
これまでのところ、これを簡単に実行できる既存のコマンドやパッケージを見つけることができませんでした。画像の実際のサイズを指定し、スケール バーのサイズを計算できるようにしたいと思います。
自分でマクロを書かなければならない場合は、まずオーバーピックパッケージ
私は正しい方向に向かっているでしょうか?
編集2:
TikZ に慣れた後、私が考え出したマクロは次のとおりです。
\usepackage{tikz}
\usepackage{siunitx}
% Inserts a scale bar into an image
% Optional argument 1: the colour of the bar and text
% Argument 2: an \includegraphics command
% Argument 3: the real world width of the image
% Argument 4: the length of the scale bar
% Argument 5: the units in which the scale bar is measured
\newcommand{\scalebar}[5][white]{
\begin{tikzpicture}
\draw (0,0) node[anchor=south west,inner sep=0] (image) { #2 };
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\fill [#1] (0.05,0.2cm) rectangle (#4/#3+0.05,0.4cm);
\draw [#1] (0.05,0.4cm) node[anchor=south west] { \SI{#4}{#5} };
\end{scope}
\end{tikzpicture}
}
ここでは、単位の組み合わせ (cm と画像サイズの分数) を使用しています。この側面はもう少し洗練されているように感じますが、現在の状態でも目的には十分です。
答え1
テキストが読みにくくなった場合に備えて、透明な背景を追加するようにマクロを少し調整しました。
\newcommand{\scalebarbackground}[6][white]{
\begin{tikzpicture}
\node[anchor=south west,inner sep=0] (image) { #2 };
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\fill [fill=blue, fill opacity=0.5] (0.04,1.3em) rectangle (#5*#4/#3+0.04,0.1em);
\draw [#1, line width=0.2em] (0.04,1.2em) -- node[below,inner sep=0.1em, font=\footnotesize] {\SI{#5}{#6}} (#5*#4/#3+0.04,1.2em);
\end{scope}
\end{tikzpicture}
}
結果のスケールバーは次のようになります。
詳細情報と背景なしのスケールバーについては、私の gist を参照してください。https://gist.github.com/rbnvrw/00312251b756f6b48084#file-latexscalebars-md