Warum habe ich ein Leerzeichen zum nächsten Wort? Wie kann ich das beheben?

Warum habe ich ein Leerzeichen zum nächsten Wort? Wie kann ich das beheben?

Ich habe, wie ich gerne glaube, eine einfache Frage.

Ich habe den folgenden Tex-Code:

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

Das Ergebnis sieht ungefähr so ​​aus:

Kategoriebla bla bla

Profilblabla (Kategorie „Haufen von Leerzeichen“) blabla.

Warum habe ich diese Leerzeichen nach der von mir vorgenommenen Kategorieverweisung?

Antwort1

Um das von Ihnen gemeldete Problem zu reproduzieren, ist es notwendig, das enumitemPaket zusätzlich zum hyperref(oder nameref)-Paket zu laden. Beispielsweise das folgende 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}

erzeugt diese Ausgabe:

Bildbeschreibung hier eingeben

enumitemKurz gesagt, es sieht so aus, als wären Sie auf einen ziemlich bedeutenden und ziemlich unglücklichen Konflikt zwischen den und hyperrefPaketen gestoßen . (Antwort von Christian Hupfer, das ein paar Minuten vor meinem gepostet wurde, bietet eine tiefergehende Diagnose der Natur des Konflikts.) Interessanterweise sind die drei Antworten auf die FrageReferenzname des Beschreibungslistenelements in LaTeXscheinen das Abstandsproblem nicht zu beheben.

Anstatt das enumitemPaket zu verwenden, könnten Sie auch dasaufzählenPaket. Es bietet nicht ganz so viele Schnickschnacks wie das enumitemPaket. Abhängig von Ihren Formatierungsanforderungen (über die Sie bisher genau null verraten haben ...) enumeratebietet das Paket möglicherweise jedoch alle Funktionen, die Sie wirklich benötigen.


Wenn Sie jedoch einfachmussbenutze das enumitemPaket, ich empfehle dirnichtVerwenden Sie den grundlegenden LaTeX \label- \refMechanismus innerhalb descriptionvon Umgebungen. Verwenden Sie stattdessen den allgemeineren \hypertargetMechanismus \hyperlinkdes hyperrefPakets.

Bildbeschreibung hier eingeben

\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}

Antwort2

Anscheinend verwendet der OP enumitem(Hinweis style=nextline:)

enumitem\hfilfügt im Makro ein hinzu \descriptionlabel, sodass die Beschriftung lautet Category\hfilund rechts ein großer Abstand bleibt.

Die descriptionUmgebung der Standardklassen (besser: LaTeX-Kern) verfügt nicht über diese unerwünschte Eigenschaft.

Die Idee dahinter ist , \let\hfil\relaxim \@currentlabelnameMakro den Namen anzugeben, der für gespeichert wird \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}

Bildbeschreibung hier eingeben

Antwort3

Wenn Sie sich die Datei ansehen .aux, sehen Sie

\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}{}}

\enit@alignund wir möchten und loswerden \enit@format; dies kann erreicht werden, indem das gettitlestringPaket mit der expandOption geladen wird und die beiden unerwünschten Befehle deaktiviert werden, indem sie einfach ihr Argument übergeben. Diese Neudefinition ist nur vorübergehend, während namerefMakros den Titel erfassen.

\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}

Nun .auxhat die Datei

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

und die Ausgabe ist wie erwartet.

Bildbeschreibung hier eingeben

verwandte Informationen