如何让扩展后的`\cref`与周围的文本处于同一组?

如何让扩展后的`\cref`与周围的文本处于同一组?

我想让\cref扩展之后的文本站在同一组周围。

使用 时,如果环境的计数器未设置为中文数字,则\crefname{figure}{图}{图}需要使用来使排版正确。请注意如\cref{...} 所示figure没有空格之前\cref,而之后。这使得它\cref{...}与中文或英文毫无相似之处。因此语法变得更加复杂——有三种语言:中文、英文、一种以中文开头但以英文结尾的虚拟语言。此外,虚拟语言依赖于计数器的格式。通过\cref在同一组周围文本中展开 stand,第三个被消除,并且在纯英语场景中既没有行为也没有语法变化,因为在\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}

在此处输入图片描述

相关内容