我的文本中只有一些日语单词,我使用zxjatype
和 zxjafont
包来获得日语字体的渲染。但问题是所有出现的单引号(‘) 后面的空格太大。
因此,有了以下 MWE……
\documentclass{article}
\usepackage{zxjatype}
\usepackage[ipa]{zxjafont}
\begin{document}
\section{日本語}
Machin
お早う
l’orem
\textsf{こんにちわ}
\end{document}
我得到了这个渲染:
我补充说,我无法用 替换 字符’
。'
我确实需要使用U+2019
。
那么,如何删除引号后面的空格?
更新:我需要U+2019
特别使用。
答案1
U+2019 字符似乎表示要转换为日语。不清楚遵循什么规则,但在转换时会添加空格;而且 IPAMincho 中的 U+2019 字符与假名字符的宽度相同,导致空格非常宽。
'
使用时不会发生这种情况。
\documentclass{article}
\usepackage{zxjatype}
\usepackage[ipa]{zxjafont}
\begin{document}
\section{日本語}
Machinお早うMachin
l’orem
l'orem
\textsf{こんにちわ}
\end{document}
我不懂日语,所以不知道这是否会产生不利影响:
\documentclass{article}
\usepackage{zxjatype}
\usepackage[ipa]{zxjafont}
\XeTeXcharclass`’=\XeTeXcharclass`A
\begin{document}
\section{日本語}
Machinお早うMachin
l’orem
l'orem
\textsf{こんにちわ}
\end{document}
答案2
我现在有一些时间,所以我想将我对 egreg 的回答的评论作为我自己的评论发布出来并提供一些附加信息。
正如 egreg 猜测的那样,U+2019 被认为是日文字符,并进行了以下调整:
- 切换到日文字体
- 在 CJK 和拉丁字符之间插入空格
如果您想禁用这些调整,可以\textrawen
使用提供的zxjatype
选项。我认为这比使用低级原语更安全。
\documentclass{article}
\usepackage{zxjatype}
\usepackage[ipa]{zxjafont}
\begin{document}
\section{日本語}
Machin
お早う
l’orem
l\textrawen{’}orem
\textsf{こんにちわ}
\end{document}
如果你不想\textrawen
每次书写时都使用’
,并且文档中的所有字符’
都可以安全地假定为拉丁字符,则可以使用newunicodechar
包裹。
\documentclass{article}
\usepackage{newunicodechar}
\usepackage{zxjatype}
\usepackage[ipa]{zxjafont}
\newunicodechar{’}{\textrawen{’}}
\begin{document}
\section{日本語}
Machin
お早う
l’orem
\textsf{こんにちわ}
\end{document}
顺便说一句,“Machin”和“お早う”之间的空格在 OP 的代码和 egreg 的代码中是不同的。请考虑以下示例:
\documentclass{article}
\usepackage{zxjatype}
\usepackage[ipa]{zxjafont}
\xeCJKsetup{
CJKecglue =
{ \hspace { 1em } }
% initially set to \hspace { 0.25em plus 0.15em minus 0.05em } by zxjatype.
}
\begin{document}
Machin%
お早う
Machin
\end{document}
前者就是我上面提到的 CJK 和拉丁字符之间的空格,后者就是 插入的空格\n
。两者都可以,但请确保在同一文档中保持一致。
正如名称所暗示的那样,zxjatype
这是一个包排版用 XeLaTeX 排版一份日文文档,xeCJK
用 XeLaTeX 排版一份中日韩文档。既然你说
我的文本中只有一些日语单词
在问题中,您似乎不是要用日语制作整个文档,而是将几个日语单词放在拉丁字符文档中。在这种情况下,使用zxjatype
andxeCJK
是一种过度使用,甚至可能像这个问题一样有害。
如果你只想使用带有日文字体的字体,fontspec
足够。
\documentclass{article}
\usepackage{fontspec}
\newfontfamily{\mainja}{ipam.ttf}
\newfontfamily{\sansja}{ipag.ttf}
\newcommand*{\textsfja}[1]{{\sansja #1}}
\begin{document}
English, Français, and {\mainja 日本語} \par
\sffamily English, Français, and \textsfja{日本語}
\end{document}
请注意,由于如果没有 ,CJK 和拉丁字符之间的空格不会自动插入zxjatype
,因此您需要使用 ASCII 空格来分隔单词。
答案3
最后,我没有使用,而是用zxjatype
解决了这个问题xeCJK
。