Wie kann man dafür sorgen, dass „\cref“ nach der Erweiterung in derselben Gruppe wie der umgebende Text steht?

Wie kann man dafür sorgen, dass „\cref“ nach der Erweiterung in derselben Gruppe wie der umgebende Text steht?

Ich möchte, dass \crefnach der Erweiterung der umgebende Text in derselben Gruppe steht.

Mit \crefname{figure}{图}{图}muss ich verwenden, 如\cref{...} 所示um den Satz richtig zu machen, wenn der Zähler der figureUmgebung nicht auf chinesische Zahlen eingestellt ist. Beachten Sie, dass eskeine Leerzeichenvorher \cref, während eseinsdanach. Dies hat \cref{...}keinerlei Ähnlichkeit mit Chinesisch oder Englisch. Daher wird die Syntax komplexer – es gibt drei Sprachen: Chinesisch, Englisch und eine virtuelle Sprache, die mit Chinesisch beginnt, aber mit Englisch endet. Außerdem ist die virtuelle Sprache vom Format des Zählers abhängig. Indem die Erweiterung von \crefin derselben Gruppe wie der umgebende Text steht, wird die dritte eliminiert, und es gibt weder Verhaltens- noch Syntaxänderungen in einem rein englischen Szenario, da \crefes semantisch wie ein normales englisches Wort im Text behandelt wird und immer von Leerzeichen umgeben ist.

Wenn man bedenkt, dass eine Gruppierung manchmal erwünscht ist (z. B. wenn man verwendet \crefname{figure}{\bfseries FIG.}{\bfseries Fig.}), bevorzuge ich (wenn möglich) einen Schalter.

Ich vermute, dass diese Anfrage so ähnlich ist, als würde man die Erweiterung „ \textbf{...}Stand“ in derselben Gruppe wie den umgebenden Text vornehmen.

Konnte dies erreicht werden?

BEARBEITEN: Mit XeLaTeX gibt der folgende Code die Ausgabe aus:

Ausgabe

MWE:

% !TEX program = xelatex
\documentclass{article}
\usepackage{ctex}% Note: some Chinese fonts are needed
\usepackage[a6paper]{geometry}
\usepackage{cleveref}
  \crefname{figure}{图}{图}
  
\begin{document}

\begin{figure}
\centering
$a^2 + b^2 = c^2$
\caption{test}
\label{eq:test}
\end{figure}

中文 字符 之间 不 需要 空格。% direct translation of each piece: Chinese, character(s), between, not, need, whitespace(s). Combination: There is no need to place whitespaces between Chinese characters.

前后\par % case 1
前 后\par% case 2
前\cref{eq:test}后 --- \verb|\cref|\par  % case 3
前 \cref{eq:test} 后 --- \verb|\cref|\par% case 4. I would like to make case 4 behave like case 3.
前\ref{eq:test}后 --- \verb|\ref|\par  % case 5
前 \ref{eq:test} 后 --- \verb|\ref|\par% case 6. I would like to make case 6 behave like case 5.

Note the very different behaviour of \verb|\ref| and \verb|\cref|.

one \textbf{two} three\par
one\textbf{two}three\par
\end{document}

Antwort1

Sie können das Leerzeichen unterdrücken, indem Sie die Formatierungsbefehle neu definieren. Wenn Sie dies auch für normale \refs wünschen, ist es am einfachsten, einen eigenen Befehl zu definieren:

\documentclass{article}
\usepackage{ctex}% Note: some Chinese fonts are needed
\usepackage[a6paper]{geometry}
\usepackage{cleveref}
\crefname{figure}{\unskip 图}{\unskip 图}
\crefdefaultlabelformat{#2#1#3\aftergroup\ignorespaces} 
\newcommand\myref[1]{\unskip\ref{#1}\ignorespaces}
\begin{document}

\begin{figure}
\centering
$a^2 + b^2 = c^2$
\caption{test}
\label{eq:test}
\end{figure}

前后\par % case 1
前 后\par% case 2
前\cref{eq:test}后 --- \verb|\cref|\par  % case 3
前 \cref{eq:test}  后 --- \verb|\cref|\par% case 4. I would like to make case 4 behave like case 3.
前\myref{eq:test}后 --- \verb|\ref|\par  % case 5
前 \myref{eq:test} 后 --- \verb|\ref|\par% case 6. I would like to make case 6 behave like case 5.

Note the very different behaviour of \verb|\ref| and \verb|\cref|.
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen