In der Tabelle hätte ein geschütztes Leerzeichen (`~') verwendet werden müssen

In der Tabelle hätte ein geschütztes Leerzeichen (`~') verwendet werden müssen

Ich erstelle eine Tabelle mit \ref{key}nur Inhalt in der ersten Spalte. Ich beziehe mich dynamisch auf Artikelnummern in einem \enumerate{}. CHKTeX gibt mir die Warnung aus Non-breaking space (`~') should have been used.. Ich habe versucht, vor dem eine Tilde hinzuzufügen, \refaber dann gibt CHKTeX die Warnung aus Double space found..

Wie werde ich diese Warnung los?

Stromeingang:

    \begin{tabular}{l c c c c c c}
        ~\ref{key}        &   & x & x &   &   &   \\ 
        ~\ref{anotherkey} & x & x & x &   &   &   \\ 
    \end{tabular}

Antwort1

Ein Minimalbeispiel ist

\documentclass{article}

\begin{document}

\section{Zzzz\label{zz}}

\begin{tabular}{ll}
\ref{zz}  & zzzz\\
\ref{zzz}  & zzzz  zzz\\
\end{tabular}

\section{Zzzz zzz\label{zzz}}


\end{document}

das erzeugt

Warning 2 in dd197.tex line 8: Non-breaking space (`~') should have been used.
\ref{zz}  & zzzz\\  
^
Warning 2 in dd197.tex line 9: Non-breaking space (`~') should have been used.
\ref{zzz}  & zzzz  zzz\\  
^

Diese Warnungen sind schlichtweg falsch, daher wäre es sinnvoll, sie zu ignorieren oder chktex nicht auszuführen.

Sie möchten keine falschen Leerzeichen oder unnötig komplizierten Code erzwingen, nur um einen fehlerhaften Syntaxprüfer zum Schweigen zu bringen, aber es scheint, dass Sie dies tun können, wenn Sie möchten, und den Verweis in eine Gruppe einfügen

\documentclass{article}

\begin{document}

\section{Zzzz\label{zz}}

\begin{tabular}{ll}
{\ref{zz}}  & zzzz\\
{\ref{zzz}}  & zzzz  zzz\\
\end{tabular}

\section{Zzzz zzz\label{zzz}}


\end{document}

hat keine Warnungen

Antwort2

Ich habe es selbst herausgefunden: Wenn Sie den Vorschlag ~von CHKTeX verwenden, wird vor dem Element ein Leerzeichen erstellt. Die korrekte Vorgehensweise ist stattdessen \nolinebreak. Dies ist eine Tilde, aber unsichtbar. Sie können auch Leerzeichen davor einfügen, ohne eine Warnung zu generieren. Auf diese Weise wird der Code immer noch eingerückt, aber es wird kein Leerzeichen hinzugefügt. Der Code sieht dann folgendermaßen aus:

    \nolinebreak\ref{reqBoot} &   & x & x &   &   &   \\ 
    \nolinebreak\ref{reqDisplays} &   &   & x &   &   &   \\ 
    \nolinebreak\ref{reqBoot} &   & x & x &   &   &   \\ 

Die Ausgabe sieht folgendermaßen aus:

Bildbeschreibung hier eingeben

verwandte Informationen