![Выровнять маркеры элементов в среде tikz](https://rvso.com/image/298791/%D0%92%D1%8B%D1%80%D0%BE%D0%B2%D0%BD%D1%8F%D1%82%D1%8C%20%D0%BC%D0%B0%D1%80%D0%BA%D0%B5%D1%80%D1%8B%20%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2%20%D0%B2%20%D1%81%D1%80%D0%B5%D0%B4%D0%B5%20tikz.png)
При помещении tikzpicture
среды в itemize
среду маркер некорректно выровнен с изображением tikz
. В этом случае «корректно» означает, что маркер должен быть вертикально отцентрирован относительно изображения.
Раньше я просто вручную настраивал, baseline
чтобы получить то, что мне нужно, но настройка будет зависеть от шрифта, который я использую, и т. д. Я бы хотел избежать использованиямагическое числов моей базовой настройке, чтобы он автоматически подстраивался под шрифт, который я использую. Есть предложения, как этого добиться?
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{itemize}
\item
\begin{tikzpicture}%[baseline = -2.5pt] % magic number tweak
\draw [very thick, ->] (0,0) -- (2,0);
\node[left] at (0,0) {XX};
\node[right] at (2,0) {YY};
\end{tikzpicture}
\end{itemize}
\end{document}
решение1
Лучше всего выполнить выравнивание по известной естественной точке в узле:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{itemize}
\item
\begin{tikzpicture}[baseline=(A.base)] % magic number tweak
\draw [very thick, ->] (0,0) -- (2,0);
\node[left] at (0,0) (A) {XX};
\node[right] at (2,0) {YY};
\end{tikzpicture}
\item \( X \)
\end{itemize}
\end{document}
Если вы хотите исправить горизонтальное выравнивание (о чем вы не спрашивали, но Барбара Битон спросила), то вам придется потрудиться немного усерднее.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{itemize}
\item
\begin{tikzpicture}[baseline=(A.base)] % magic number tweak
\node at (0,0) (A) {XX};
\pgfkeysgetvalue{/pgf/inner xsep}{\myAxsep}
\node at (2,0) (B) {YY};
\pgfkeysgetvalue{/pgf/inner xsep}{\myBxsep}
\draw [very thick, ->] (A) -- (B);
\pgfresetboundingbox
\useasboundingbox ($(A.south west)+(\myAxsep,0)$) rectangle
($(B.north east)-(\myBxsep,0)$);
\end{tikzpicture}
and some text.
\item \( X \)
\end{itemize}
\end{document}
Возможно, я был излишне осторожен, проверяя значение x-разделителя после каждого блока, но это вполне может быть необходимо в более сложном коде.