
Eu gostaria de fazer com que \cref
após a expansão ficasse no mesmo grupo de texto circundante.
Com \crefname{figure}{图}{图}
, preciso usar 如\cref{...} 所示
para fazer a composição correta, caso o contador do figure
ambiente não esteja configurado para números chineses. Observe que hásem espaço em brancoantes \cref
, enquanto háumdepois. Isso \cref{...}
não tem nenhuma semelhança com o chinês ou o inglês. Portanto, a sintaxe torna-se mais complexa – existem três idiomas: chinês, inglês, uma língua virtual que começa com o chinês, mas termina com o inglês. Além disso, a linguagem virtual depende do formato do contador. Ao fazer a expansão de \cref
stand no mesmo grupo de texto circundante, o terceiro é eliminado, e não há mudança comportamental nem sintática no cenário somente em inglês, uma vez que \cref
é semanticamente tratada como uma palavra inglesa comum no texto e sempre cercada por espaços.
Tendo em mente que às vezes o agrupamento é desejado (por exemplo, quando se usa \crefname{figure}{\bfseries FIG.}{\bfseries Fig.}
), prefiro (se possível) um switch.
Acho que esse pedido é como fazer a expansão de \textbf{...}
stand no mesmo grupo de texto circundante.
Isso poderia ser alcançado?
EDITAR: Com XeLaTeX, o código a seguir fornece a saída:
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}
Responder1
Você pode suprimir o espaço redefinindo os comandos de formato. Se você quiser também para \ref normal, o mais fácil é definir seu próprio 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}