Этот вопрос возник после моего ответаздесь, в котором я использовал \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}