我希望如果我设置,\tolerance = 9999
就不会出现溢出框的情况。但是,我遇到过这种情况,更改容差值根本没有效果。此外,您可以直观地看到哪里是断线的好地方,但 LuaTeX 却没有这样做。这是 LuaTeX 的一个错误吗?
以下是一个例子(抱歉,有很多非英语文字):
\documentclass[11pt, twoside, paper = B5]{scrbook}
\usepackage[babelshorthands = true]{polyglossia}
\setdefaultlanguage{russian}
\usepackage{fontspec}
\usepackage{amsmath}
\usepackage{unicode-math}
\usepackage{lualatex-math}
\usepackage{xcolor}
\usepackage{luacolor}
\usepackage{tikz}
\usepackage{microtype}
\usepackage{floatflt}
\usepackage{luacode}
\setmainfont{Erewhon}
\newfontfamily\cyrillicfont{Erewhon}
\setmathfont{Erewhon Math}
\KOMAoptions{BCOR = 5mm, DIV = 14}
\begin{luacode}
function PrintShipoutBox()
local soBox = tex.getbox("ShipoutBox")
-- local nodetree = require('nodetree')
-- nodetree.print(soBox)
end
\end{luacode}
\AddToHook{shipout/before}{\directlua{PrintShipoutBox()}}
\tolerance = 9999
\begin{document}
\begin{floatingfigure}[l]{43mm}
\noindent\begin{tikzpicture}
\fill[black!10] (0,0) rectangle (43mm, 74mm);
\end{tikzpicture}
\end{floatingfigure}
Возьмём какое"=нибудь событие~— назовём его событием $O$~— в качестве начала отсчёта времени и
пространственных координат. Другими словами, в четырёхмерной системе координат, на осях которой
откладываются $x$, $y$, $z$ и $t$, мировая точка события $O$ будет началом координат. Посмотрим
теперь, в каком отношении к данному событию $O$ находятся все остальные события. Для наглядности мы
будем рассматривать только одну пространственную координату и время, откладывая их на двух осях
(рис.~2). Прямолинейное равномерное движение частицы, проходящей точку $x = 0$ при $t = 0$,
изобразится прямой линией, проходящей через $O$ и наклонённой к оси $t$ под углом, тангенс которого
равен скорости частицы. Поскольку наибольшая возможная скорость равна $c$, то существует наибольший
угол, который может образовывать эта прямая с осью $t$. На рис.~2 изображены две прямые,
изображающие распространение двух сигналов (со скоростью света) в противоположных направлениях,
проходящих через событие $O$ (т.~е. проходящих $x = 0$ при $t = 0$). Все ли\-нии, изображающие
движения частиц, могут лежать только внутри областей $aOc$ и $dOb$. На прямых $ab$ и $cd$, очевидно,
$x = \pm ct$. Рассмотрим сначала события, мировые точки которых лежат внутри области $aOc$. Легко
сообразить, что во всех точках этой области $c^2t^2 - x^2 > 0$. Другими словами, интервалы между
любым событием этой области и событием $O$~— времениподобные. В этой области $t > 0$, т.е. все
события этой области происходят «после» события $O$. Но два события, разделённых времениподобным
интервалом, ни в какой системе отсчёта не могут происходить одновременно. Следовательно, нельзя
выбрать и никакой системы отсчёта, где бы какое"=нибудь из событий области $aOc$ происходило «до»
события $O$, т.е. когда было бы $t < 0$. Таким образом, все события области $aOc$ являются будущими
по отношению к $O$, и притом во всех системах отсчёта. Эту область можно поэтому назвать «абсолютно
будущей» по отношению к событию $O$.
\end{document}
您可以在示例中看到,我甚至为 指定了连字符点ли\-нии
,但它却突出来了。如果取消注释 中的行PrintShipoutBox
,则可以检查生成的节点树。我没有看到任何可疑之处。这是第一个突出的 附近t = 0
:
有什么想法吗?
答案1
感谢 Marcel Krüger 指出第 175 期在 中luaotfload
。问题线程提到了 luatex 补丁,您应该忽略它。如果您遇到此问题,请执行以下操作。
首先,获取dev
的分支luaotfload
:
git clone -b dev https://github.com/latex3/luaotfload.git
然后将.lua
文件从那里复制到你的 TeX 安装中。例如:
sudo find src -type f \( -name 'luaotfload*.lua' -or -name 'fontloader*.lua' \) -exec cp {} /usr/local/texlive/2021/texmf-dist/tex/luatex/luaotfload \;
更新
没有什么是容易的。事实证明,上面的内容不足以luaotfload-status.lua
执行指定的加载程序:
["notes"]={
["loader"]="fontloader-2021-05-16.lua"
},
当 Lua 引擎尝试加载 时fontloader-2021-05-16.lua
,它会将搜索文件的任务委托给kpathsea
库。后者要么查看文件ls-R
以找到位置,要么在您的主目录中开始复杂的搜索。由于fontloader-2021-05-16.lua
名称中有日期,因此它不在文件中ls-R
,因此搜索失败。
正确的解决方案是将其复制luaotfload
到您的主目录中:
mkdir -p ~/.texlive2021/texmf-var/tex/luatex/luaotfload
find src -type f \( -name 'luaotfload*.lua' -or -name 'fontloader*.lua' \) -exec cp {} ~/.texlive2021/texmf-var/tex/luatex/luaotfload \;