Централизовать `\includegraphics` внутри `\def`

Централизовать `\includegraphics` внутри `\def`

Этот вопрос возник после моего ответаздесь, в котором я использовал \includegraphics{...}в \defопределении, чтобы включить графику в строчный контекст.

Вопрос:Как мне централизовать включенную графику при использовании in-line, не прибегая к ручным способам вроде \hspace{}? Я пробовал с \centering, но это не дало эффекта. Я добавил fboxв пример ниже, чтобы сделать это более очевидным.

в линейной графике с (без) центрированием?

\documentclass{article}
\usepackage{graphicx,keystroke,scalerel}
\renewcommand{\fboxsep}{0pt}
\def\abcd{%
    {\centering \fbox{\scalerel*{\includegraphics{example-image-a}}{X}}}
}

\begin{document}
    This is an in-line graphic \fbox{\keystroke{\abcd}}.

    This is an in-line graphic \fbox{\abcd} with some space on either side.
\end{document}

ps. Я использовал его \keystroke{...}из keystrokeпакета, но проблема более общая и может быть описанабезпакет keystroke. Однако, пожалуйста, укажите это в своем ответе, если это отличается от случая без использования keystroke, так как я хотел бы улучшить свой ответ там.

решение1

Как отметили другие, есть несколько проблем. Случайные пробелы вкрались, поскольку строки внутри определения макроса не заканчивались на %. Кроме того, \centeringне имеет значения за пределами механизма настройки абзацев TeX, который не применяется внутри \fbox. Наконец, \fboxsepявляется длиной, а не определением, и поэтому должно быть установлено как таковое. В TeX это было бы \fboxsep=0pt\relax, тогда как в LaTeX предпочтительно использовать \setlength{\fboxsep}{0pt}.

\documentclass{article}
\usepackage{graphicx,keystroke,scalerel}
\setlength{\fboxsep}{0pt}
\newcommand\abcd{\fbox{\scalerel*{\includegraphics{example-image-a}}{X}}}
\begin{document}
    This is an in-line graphic \fbox{\keystroke{\abcd}}.

    This is an in-line graphic \fbox{\abcd} with some space on either side.
\end{document}

введите описание изображения здесь

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