考虑下面我编译的代码Lualatex
:
\documentclass{book}
%\usepackage{fontspec}
\begin{document}
\LARGE
Some words\ldots. % ellipsis and period without fontspec
%Some words\ldots. % ellipsis and period with fontspec
\end{document}
完美地产生了
但是,当我调用fontspec
包并运行代码时:
\documentclass{book}
\usepackage{fontspec}
\begin{document}
\LARGE
%Some words\ldots. % ellipsis and period without fontspec
Some words\ldots. % ellipsis and period with fontspec
\end{document}
我明白了
问题:如何使用fontspec
,才能产生\ldots.
与不使用该包并使用 进行编译时一样好的效果lualatex
?
谢谢。
答案1
首先,\ldots
在文本模式下使用最终会扩展为\textellipsis
。
然后,\textellipsis
将导致非unicode引擎(如pdfTeX)和unicode引擎(如XeTeX和LuaTeX)的输出不同。
对于非 Unicode 引擎,字体编码都T1
将OT1
使用默认定义,即排版三个间距松散的点。
% latex.ltx, line 7205:
\DeclareTextCommandDefault{\textellipsis}{%
.\kern\fontdimen3\font
.\kern\fontdimen3\font
.\kern\fontdimen3\font}
对于unicode引擎,默认TU
使用字体编码,这种编码方式\textellipsis
会直接使用当前字体中的字符U+2026
,而这个字符在默认的Latin Modern Roman字体中以三个紧密排列的点来表示。
一个快速的解决方法是将编码重新定义\textellipsis
为其TU
默认定义。
% compile with xelatex or lualatex
\documentclass{book}
% comment out this definition to see the default output
\DeclareTextCommand\textellipsis{TU}
{\csname T1\string\textellipsis\endcsname}
\begin{document}
\usefont{T1}{cmr}{m}{n}
--\ldots-- % ellipsis in Computer Modern Roman
\usefont{TU}{lmr}{m}{n}
--\ldots-- % ellipsis in Latin Modern Roman
\end{document}