Как добавить масштабную линейку к изображению

Как добавить масштабную линейку к изображению

Я пытаюсь понять, как лучше всего добавлять масштабные линейки к моим изображениям, как, например, на этих замечательных изображениях снежинок (полноразмерное изображение немного великовато, но это лучший пример того, что я пытаюсь сделать):

Одной из возможностей было бы вставить масштабные линейки с помощью другой программы. Однако я хочу убедиться, что текст будет красивым и четким, а не сохранять его как часть растрового изображения. Кроме того, если я вставлю масштабные линейки заранее, то текст изменится в размере, когда 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.

Связанный контент