Как сделать так, чтобы `\cref` после расширения стоял в той же группе окружающего текста?

Как сделать так, чтобы `\cref` после расширения стоял в той же группе окружающего текста?

Я хотел бы \crefпосле расширения остановиться на той же группе окружающего текста.

С \crefname{figure}{图}{图}, мне нужно использовать 如\cref{...} 所示для корректного набора текста, если счетчик figureокружения не установлен на китайские цифры. Обратите внимание, что естьбез пробеловпрежде \crefчем естьодинafter. Это \cref{...}не имеет никакого сходства с китайским или английским. Поэтому синтаксис становится более сложным — есть три языка: китайский, английский, виртуальный язык, начинающийся с китайского, но заканчивающийся английским. Кроме того, виртуальный язык зависит от формата счетчика. Заставляя расширение стоять \crefв той же группе окружающего текста, третий устраняется, и нет ни поведенческих, ни синтаксических изменений в сценарии только на английском языке, поскольку \crefсемантически рассматривается как обычное английское слово в тексте и всегда окружен пробелами.

Учитывая, что иногда желательно группирование (например, когда используется \crefname{figure}{\bfseries FIG.}{\bfseries Fig.}), я предпочитаю (если возможно) переключатель.

Я полагаю, что эта просьба очень похожа на то, чтобы заставить расширение \textbf{...}стоять в той же группе окружающего текста.

Можно ли этого достичь?

РЕДАКТИРОВАТЬ: С помощью XeLaTeX следующий код дает вывод:

выход

МВЭ:

% !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}

решение1

Вы можете подавить пробел, переопределив команды форматирования. Если вы хотите, чтобы он был и для обычного \ref, проще всего определить собственную команду:

\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}

введите описание изображения здесь

Связанный контент