
Ich möchte, dass \cref
nach 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 figure
Umgebung 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 \cref
in 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 \cref
es 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:
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}