修改/添加 TeX-Ligatures?

修改/添加 TeX-Ligatures?

我最终屈服并转而使用 LuaLaTeX,这样我就可以在任何地方正确使用 UTF-8,当然,还可以使用\usepackage{fontspec}

\usepackage{fontspec}
\setmainfont[Numbers={OldStyle, Proportional}, Ligatures={TeX}]{Minion Pro}

我的问题是:那些常见的“TeX-Ligatures”在哪里定义,我该如何修改(阅读:添加)它们?(请注意,我并不反对破解一些核心(Lua)(La)TeX 文件。)

-- 变成 n 破折号,--- 变成 m 破折号:这些都很好并且恰当,但还有其他一些,最紧迫的是 ... (三个点)变成...(适当的省略号)。

答案1

它实际上并不是可见的,但如果你复制粘贴,你就会看到它有效:

\documentclass{article}
\usepackage{fontspec}
\directlua{
fonts.handlers.otf.addfeature{
    name = "dotlig",
    type = "ligature",
    data = {
      [0x2026] = { ".", ".", "." },
    },
  }

}
\setsansfont{texgyreheros}[RawFeature=+dotlig;]
\setmainfont{texgyretermes}[RawFeature=+dotlig;]
\begin{document}
some text .... some text

\sffamily 

some text .... some text 
\end{document}

答案2

有几种方法可以实现您的目标。其中一种方法——我相信其他读者会发布更多方法——是使用 LuaTeX 的process_input_buffer回调将所有 实例替换为...\dots这种方法可确保在文本模式下使用文本样式的省略号,在数学模式下使用数学样式的省略号。如果您希望整个文档都使用文本模式省略号,则应替换

  s = s:gsub ( '%.%.%.', '\\dots{}' ) 

  s = s:gsub ( '%.%.%.', '\\char"2026{}' )

在下面显示的Lua函数中。

这种基于预处理器的方法的优点是,您只需为整个文档运行一次代码。但潜在的缺点是,您无法选择性地对某些字体禁用或启用此功能,而对其他字体则不行。

在此处输入图片描述

\documentclass{article}
\usepackage{fontspec} % 'Ligatures={TeX,Common}' is enabled by default
\setmainfont{Minion Pro}[Numbers={OldStyle,Proportional}]
\setsansfont{Myriad Pro}[Numbers={OldStyle,Proportional}, Scale=MatchLowercase]

\usepackage{luacode}
\begin{luacode}
function dots2ellipsis ( s ) 
  s = s:gsub ( '%.%.%.', '\\dots{}' ) 
  return s
end
\end{luacode}

\AtBeginDocument{\directlua{luatexbase.add_to_callback ( 
   "process_input_buffer" , dots2ellipsis , "dots2ellipsis" )}}
   

\begin{document}
abc123 -- --- ... | $...$

\sffamily
abc123 -- --- ... | $...$
\end{document}

相关内容