Выровнять маркеры элементов в среде tikz

Выровнять маркеры элементов в среде tikz

При помещении 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-разделителя после каждого блока, но это вполне может быть необходимо в более сложном коде.

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