
Me gustaría que \cref
después de la expansión se situara en el mismo grupo de texto circundante.
Con \crefname{figure}{图}{图}
, necesito usarlo 如\cref{...} 所示
para hacer que la tipografía sea correcta, si el contador del figure
entorno no está configurado en números chinos. Tenga en cuenta que haysin espacios en blancoantes \cref
mientras que hayunodespués. Esto \cref{...}
no tiene ningún parecido con el chino o el inglés. Por lo tanto, la sintaxis se vuelve más compleja: hay tres idiomas: chino, inglés, un idioma virtual que comienza con chino pero termina en inglés. Además, el lenguaje virtual depende del formato del contador. Al hacer la expansión de \cref
stand en el mismo grupo de texto circundante, se elimina el tercero, y no hay cambio de comportamiento ni sintáctico en el escenario solo en inglés, ya que \cref
se trata semánticamente como una palabra en inglés común en el texto y siempre está rodeada por espacios.
Teniendo en cuenta que a veces se desea agrupar (por ejemplo, cuando se usa \crefname{figure}{\bfseries FIG.}{\bfseries Fig.}
), prefiero (si es posible) un interruptor.
Supongo que esta solicitud es muy parecida a hacer que la expansión \textbf{...}
se coloque en el mismo grupo de texto circundante.
¿Podría lograrse esto?
EDITAR: Con XeLaTeX, el siguiente código proporciona el resultado:
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}
Respuesta1
Puede suprimir el espacio redefiniendo los comandos de formato. Si lo quieres también para \ref normal, lo más fácil es definir tu propio comando:
\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}