Eliminar espacio alrededor del punto en el nombre calificado

Eliminar espacio alrededor del punto en el nombre calificado

¿Cómo puedo limitar el espacio alrededor de un punto que no son puntos (es decir, no terminan una oración)?

En mi artículo, necesito hacer referencia a nombres calificados (como A.x). Actualmente, los escribo como \texttt{A.x}. Sin embargo, esto a veces genera algo de espacio alrededor del punto, por ejemplo en el siguiente fragmento:

Nombre calificado con espacio.

Me gustaría tener solo un poquito de espacio alrededor del símbolo de punto que separa las partes del nombre, pero todo lo que pude encontrar estaba relacionado con el espaciado en modo matemático. Además, intenté cambiar temporalmente el código cat .a 11, de la siguiente manera:

\newcommand{\codename}[1]{
  \begingroup
  \catcode`.=11
  \texttt{#1}
  \endgroup
}

luego usando \codename{A.x}. Sin embargo, eso no ayudó.

Cualquier ayuda es muy apreciada.

Respuesta1

Puedes definir un comando:

\newcommand{\codename}[2]{#1\kern-.05em.\kern-.05em#2}

Luego compara A.xcon \codename{A}{x}:

ingrese la descripción de la imagen aquí

El uso \kernevitará saltos de línea y estiramientos. Puedes ajustar el factor kern como quieras. Elegí -.05emla longitud en ambos lados, pero en una fuente diferente es posible que necesites diferentes longitudes antes y después.

Respuesta2

Veo que el problema principal del OP es que no le gusta el hecho de que \textttlos puntos tengan el mismo ancho que todos los demás caracteres.

Aquí utilizo un ciclo de token para abordar el problema. Busco en cada muestra del argumento para \codename. Cada vez que encuentro un ., lo reemplazo por \nobreak{\textrm{.}}\nobreak. Esto significa que los nombres en clave con varios puntos no suponen ningún problema para la macro.

Esto evitará el espaciado introducido por los puntos como consecuencia del contexto y, al configurar los puntos en \textrm, evitará el ancho adicional del punto, incluso si \codenameestá configurado en \texttt.

\documentclass{article}
\usepackage{tokcycle}
\Characterdirective{\ifx.#1\addcytoks{\nobreak{\textrm{.}}\nobreak}\else
  \addcytoks{#1}\fi}
\newcommand\codename[1]{\tokencyclexpress#1\endtokencyclexpress}
\begin{document}
Here is \codename{A.1} code name.
Code names such as \texttt{\codename{A.2.4}}, can contain multiple dots!
By setting the dots in textrm, extra spacing is avoided even if the 
codename is set in texttt.
\end{document}

ingrese la descripción de la imagen aquí

información relacionada