在创作数学文章时,时常会遇到句号的转换问题,中文句号优势会引起歧义(下标0),并且添加在公式或者字母后显得不合理。以前的处理思路是全局替换,但是不足之处在于:
联想到exam-zh有全文的句号映射,不知道是如何做出来的?
不管怎么说,使用编辑器进行全局替换(快捷键一般是 Ctrl+F
)都是最好的方案,因为这在编译前替换省去了不少可能出现的问题。如果你想在部分场景下替换,可以考虑下面的代码。
\documentclass{ctexart}
\newcommand\myrep[1]{.\relax}
\newXeTeXintercharclass\rep
\XeTeXcharclass `。=\rep
\XeTeXinterchartoks 0 \rep {\myrep}
\XeTeXinterchartoks \rep \rep {\myrep}
\XeTeXinterchartoks 4095 \rep {\myrep}
\begin{document}
.....
。。。。。。
......
\end{document}
效果如下
查看exam-zh.cls
中有关fullwidth-stop
的内容可知:
\AtEndOfPackageFile* { xeCJK }
{
\msg_redirect_name:nnn { xeCJK } { CJKfamily-redef } { none }
\defaultCJKfontfeatures
{
Script = CJK,
% Mapping = fullwidth-stop ,
}
}
进一步逆向检索xeCJK
的文档又可知:
于是一个最小工作示例如下:
\documentclass{ctexart}
\setCJKmainfont[Mapping=fullwidth-stop]{SimSun}
\begin{document}
.....
。。。。。。
你好,世界。
Hello, world.
\end{document}
附:若参考张晨南老师的博客内容,可以更进一步自定义字符映射。
另外对于你自答中的newunicodechar
宏包的使用是否在ctex
文档类以及不同编译引擎(PDFLaTeX
,XeLaTeX
,LuaLaTeX
)中均生效,To Be Continued.... 有关的讨论也可以见这个问题中雾月老师的回答。
Another related: https://ask.latexstudio.net/ask/question/3247.html