
Я пытаюсь понять, как лучше всего добавлять масштабные линейки к моим изображениям, как, например, на этих замечательных изображениях снежинок (полноразмерное изображение немного великовато, но это лучший пример того, что я пытаюсь сделать):
Одной из возможностей было бы вставить масштабные линейки с помощью другой программы. Однако я хочу убедиться, что текст будет красивым и четким, а не сохранять его как часть растрового изображения. Кроме того, если я вставлю масштабные линейки заранее, то текст изменится в размере, когда LaTeX масштабирует изображения.
Пока что мне не удалось найти ни одной существующей команды или пакета, которые бы упростили это. Я хотел бы иметь возможность указать реальный размер изображения и рассчитать размер масштабной линейки.
Если мне придется писать свой собственный макрос, я думаю, я начну спакет overpic
В правильном ли направлении я двигаюсь?
ПРАВКА 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}
}
Я использую здесь комбинацию единиц (см и доли размера изображения). Мне кажется, что этот аспект мог бы быть немного более элегантным, но то, что у меня есть сейчас, достаточно для моих целей.
решение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}
}
Получившаяся масштабная линейка выглядит следующим образом:
Более подробную информацию и масштабную линейку без фона смотрите в моем руководстве:https://gist.github.com/rbnvrw/00312251b756f6b48084#file-latexscalebars-md
решение2
я нашелИПЭбыть хорошим инструментом для этого.
ipelets -> вставить изображение.
Затем добавьте текст и сохраните в формате eps или pdf.