¿Por qué tengo un espacio para la siguiente palabra? ¿Como arreglarlo?

¿Por qué tengo un espacio para la siguiente palabra? ¿Como arreglarlo?

Tengo lo que me gustaría pensar, una pregunta sencilla.

Tengo el siguiente código tex:

\begin{description}%[style=nextline]
\item [Category\label{desc:category}] blablabla
\item [Profile\label{desc:profile}] blabla (\nameref{desc:category}) blabla.
\end{description}

El resultado es algo como esto:

Categoríabla bla bla

Perfilblabla (Categoría 'montón de espacios') blabla.

¿Por qué tengo estos espacios después de la referencia de categoría que hice?

Respuesta1

Para replicar el problema que estás informando, resulta necesario cargar el enumitempaquete además del paquete hyperref(o nameref). Por ejemplo, el siguiente MWE

\documentclass{article}
\usepackage{enumitem}
\usepackage[colorlinks]{hyperref} % or: \usepackage{nameref}

\begin{document}
\begin{description}
\item[Category\label{desc:category}] blablabla
\item[Profile\label{desc:profile}] blabla 
   (\nameref{desc:category}) blabla
\end{description}
\end{document}

produce esta salida:

ingrese la descripción de la imagen aquí

En resumen, parece que te has encontrado con un conflicto bastante significativo y desafortunado entre los paquetes enumitemy hyperref. (La respuesta de Christian Hupfer, que se publicó un par de minutos antes que el mío, proporciona un diagnóstico más profundo de la naturaleza del conflicto). Curiosamente, las tres respuestas a la consultaNombre de referencia del elemento de la lista de descripción en LaTeXno parece solucionar el problema de espaciado.

En lugar de utilizar el enumitempaquete, podría considerar utilizar elenumerarpaquete. No ofrece tantas comodidades como el enumitempaquete. Sin embargo, dependiendo de sus necesidades de formato (sobre las cuales no ha revelado exactamente nada hasta ahora...), el enumeratepaquete puede ofrecer toda la funcionalidad que realmente necesita.


Sin embargo, si usted simplementedebeusa el enumitempaquete, te sugieronoemplear el mecanismo básico de LaTeX \labeldentro de los entornos. En su lugar, utilice el mecanismo más general del paquete.\refdescription\hypertarget\hyperlinkhyperref

ingrese la descripción de la imagen aquí

\documentclass{article}
\usepackage{enumerate}
\usepackage[colorlinks]{hyperref}

\begin{document}
\begin{description}
\item[\hypertarget{desc:category}{Category}] blablabla
\item[\hypertarget{desc:profile}{Profile}] blabla 
   (\hyperlink{desc:category}{Category}) blabla
\end{description}
\end{document}

Respuesta2

Aparentemente el OP está usando enumitem(pista style=nextline:)

enumitemagrega un \hfilen la \descriptionlabelmacro, por lo que la etiqueta sería Category\hfil, dejando un espacio grande a la derecha.

El descriptionentorno de las clases estándar (mejor: núcleo LaTeX) no tiene esta característica no deseada.

La idea es \let\hfil\relaxen la \@currentlabelnamemacro, que es el nombre que se almacena para \nameref.

\documentclass{article}
\usepackage{enumitem} % Add easy custom list support
\usepackage{hyperref} % Add ref support
%\setlength\parindent{0pt} % Globally set indentation for new paragraphs
\setlist[description]{labelwidth=0pt,leftmargin=30pt,itemindent=\dimexpr-20pt-\labelsep\relax} % Global Setup Description List

\makeatletter % Redefinition of Description List Items source: http://tex.stackexchange.com/a/1248/13552
\let\orgdescriptionlabel\descriptionlabel
\renewcommand*{\descriptionlabel}[1]{%
  \let\orglabel\label
  \let\label\@gobble
  \phantomsection
  \protected@edef\@currentlabel{#1}%
  \edef\@currentlabelname{\let\hfil\relax #1}%
  \let\label\orglabel
  \orgdescriptionlabel{#1}%
}
\makeatother



\begin{document}
\begin{description}
\item [Category\label{desc:category}] blablabla
\item [Profile\label{desc:profile}] blabla (\nameref{desc:category}) blabla.
\end{description}

\end{document}

ingrese la descripción de la imagen aquí

Respuesta3

Si miras el .auxarchivo, verás

\newlabel{desc:category}{{}{1}{\enit@align {\enit@format {Category\label {desc:category}}}}{Doc-Start}{}}
\newlabel{desc:profile}{{}{1}{\enit@align {\enit@format {Profile\label {desc:profile}}}}{Doc-Start}{}}

y queremos deshacernos de \enit@aligny \enit@format; Esto se puede hacer cargando el gettitlestringpaquete con la expandopción y deshabilitando los dos comandos no deseados haciendo que simplemente entreguen su argumento. Esta redefinición es sólo temporal, mientras namereflas macros van recopilando el título.

\documentclass{article}
\usepackage{enumitem} % Add easy custom list support
\usepackage[expand]{gettitlestring}
\usepackage{hyperref} % Add ref support
\setlist[description]{% Global Setup Description List
  labelwidth=0pt,
  leftmargin=30pt,
  itemindent=\dimexpr-20pt-\labelsep\relax
}

\makeatletter
\GetTitleStringDisableCommands{%
  \let\enit@align\@firstofone
  \let\enit@format\@firstofone
}
\makeatother


\begin{document}
\begin{description}
\item [Category\label{desc:category}] blablabla
\item [Profile\label{desc:profile}] blabla (\nameref{desc:category}) blabla.
\end{description}

\end{document}

Ahora el .auxarchivo tiene

\newlabel{desc:category}{{}{1}{Category}{Doc-Start}{}}
\newlabel{desc:profile}{{}{1}{Profile}{Doc-Start}{}}

y el resultado es el esperado.

ingrese la descripción de la imagen aquí

información relacionada