使用 xesearch 查找并显示 UTF-8 字符

使用 xesearch 查找并显示 UTF-8 字符

xesearch包允许用其他文本替换文本。例如:

\documentclass{ctexbook}
\usepackage{fontspec}
\usepackage{xesearch}
\SearchList{list1}{newspaper}{book}
\begin{document}
    The book costs \$1.
\end{document}

当文档编译时,它会显示“报纸的价格为 1 美元。”当我尝试使用其他语言(例如\SearchList{list1}{书}{book})时,它会打印“报纸的价格为 1 美元。”(字符应该出现的位置有空格),但是,文档在文档的其他地方显示相同的字符“书”没有任何困难。

我怎样才能替换外文字符?

更新:

代码成功替换了字符,但是替换文本中的行并没有断开:

\documentclass[a5paper]{ctexbook}
\pdfpagewidth=148mm
\pdfpageheight=210mm
\usepackage{fontspec}
\setmainfont{Adobe Song Std}
\setCJKmainfont{Adobe Song Std}
\usepackage{xesearch}
\SearchList{list1}{床前明月光,疑是地上霜。举头望明月,低头思故乡。}{poem}
\begin{document}
    \Huge
    \noindent 床前明月光,疑是地上霜。举头望明月,低头思故乡。 \\
    \noindent poem \\
\end{document}

答案1

\makexeCJKactive在 的第二个参数的开头添加\SearchList。这有效:

\documentclass[a5paper]{ctexbook}
\pdfpagewidth=148mm
\pdfpageheight=210mm
\usepackage{fontspec}
\setmainfont{Adobe Song Std}
\setCJKmainfont{Adobe Song Std}
\usepackage{xesearch}
\SearchList{list1}{\makexeCJKactive 床前明月光,疑是地上霜。举头望明月,低头思故乡。}{poem}
\begin{document}
    \Huge
    \noindent 床前明月光,疑是地上霜。举头望明月,低头思故乡。 \\
    \noindent poem \\
\end{document}

警告:我还没有对xesearch软件包进行足够的测试。任何两个使用\XeTeXinterchartoks大量不同的软件包都可能无法很好地协同工作。我不确定xesearch

答案2

这有效:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Kai}
\usepackage{xesearch}
\SearchList{list1}{书}{book}
\begin{document}
    The book costs \$1.
\end{document}

在此处输入图片描述

当前字体必须包含字形。如果不包含,则要求 XeLaTeX 使用包含该字形的字体:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\newfontfamily{\kanjifont}{Kai}
\usepackage{xesearch}
\SearchList{list1}{{\kanjifont 书}}{book}
\begin{document}
    The book costs \$1.
\end{document}

在此处输入图片描述

(我使用了一种可以更清楚地显示差异的主字体。)

对于较长的字符串,您必须重置语言环境。至少对于此代码,两行的结果是相同的:

\documentclass[a5paper]{ctexbook}
\pdfpagewidth=148mm
\pdfpageheight=210mm
\usepackage{fontspec}
\setmainfont{Kai}
\setCJKmainfont{Kai}
\usepackage{xesearch}
\def\1{\XeTeXlinebreaklocale "zh" \XeTeXlinebreakskip = 0pt plus 20pt\relax}

\SearchList{list1}{{\1床前明月光,疑是地上霜。举头望明月,低头思故乡。}}{poem}
\begin{document}
    \Huge
    \noindent 床前明月光,疑是地上霜。举头望明月,低头思故乡。 \\
    \noindent poem \\
\end{document}

但一些 xeCJK 专家可能会提供更好的帮助。

然而,xesearch这不是适合此目的的正确工具:\poem扩展为的 宏床前明月光,疑是地上霜。举头望明月,低头思故乡。会更有用。

相关内容