Esta pregunta surge de una respuesta que estaba dando.aquí, en el que utilicé \includegraphics{...}
dentro de una \def
definición, para incluir gráficos en un contexto en línea.
Pregunta:¿Cómo hago para centralizar el gráfico incluido, cuando lo uso en línea, sin recurrir a métodos manuales como \hspace{}
? Lo intenté con \centering
, pero eso no tiene ningún efecto. Lo agregué fbox
en el siguiente ejemplo para hacerlo más evidente.
\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}
PD. Lo estaba usando \keystroke{...}
desde el keystroke
paquete, pero el problema es más general y se puede describirsinel keystroke
paquete. Sin embargo, aborde esto en su respuesta si es diferente del caso sin usar keystroke
, ya que me gustaría mejorar mi respuesta allí.
Respuesta1
Como han señalado otros, existen varios problemas. Estaban apareciendo espacios sueltos, porque las líneas dentro de una definición de macro no terminaban en un archivo %
. Además, \centering
no tiene relevancia fuera del mecanismo de configuración de párrafos de TeX, que no se aplica dentro de un archivo \fbox
. Finalmente, \fboxsep
es una extensión, no una definición, por lo que debe establecerse como tal. En TeX, eso sería \fboxsep=0pt\relax
, mientras que en LaTeX, preferiblemente se puede usar \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}