一段时间以来,我亲眼目睹 latexmk 连续 5 次编译我的文档。我以为那是因为我用 beamer 做了非常复杂的事情。
但请考虑以下代码:
\documentclass{article}
\usepackage{fontspec}
\setmonofont{Source Code Pro}
\begin{document}
gh
\end{document}
用 编译它latexmk -pdflua test.tex
。它编译一次并生成一个漂亮的 PDF 文件。
现在删除 PDF 文件并运行相同的命令:latexmk 在中止之前编译了 5 次,因为'lualatex' needed too many passes
。(注意:在我的正常设置中,我在子目录中进行编译并将生成的 PDF 移回,这就是出现这种情况的原因;如果目标 PDF 仍然存在,latexmk 将根本不会开始编译)。
现在尝试不使用 PDF 和 .aux 文件:编译一次。
尝试不使用 PDF,使用 .aux 但不使用所有其他生成的文件:无休止地编译。
这个恶意的 .aux 文件的内容是什么?这个:
\relax
最后,删除\setmonofont{Source Code Pro}
源中的并再次实验:一切正常。事实上,latexmk 说
Changed files, or newly in use since previous run(s):
'/opt/yann/texlive/2018/texmf-var/luatex-cache/generic/fonts/otl/sourcecodepro-boldit.luc'
'/opt/yann/texlive/2018/texmf-var/luatex-cache/generic/fonts/otl/sourcecodepro-regular.luc'
这些文件确实是在编译期间被修改的。
@DG 评论后更新:运行luaotfload-tool --cache=erase
允许一次正常编译,但之后问题再次出现。
在所有情况下,日志文件都是相同的:
This is LuaTeX, Version 1.07.0 (TeX Live 2018) (format=lualatex 2019.2.12) 18 FEB 2019 10:15
restricted system commands enabled.
**test.tex
(./test.tex
LaTeX2e <2018-12-01>
Lua module: luaotfload-main 2019-01-28 2.95 luaotfload entry point
Lua module: luaotfload-init 2019-01-28 2.95 luaotfload submodule / initializatio
n
Lua module: lualibs 2019-01-28 2.63 ConTeXt Lua standard libraries.
Lua module: lualibs-extended 2019-01-28 2.63 ConTeXt Lua libraries -- extended c
ollection.
Lua module: luaotfload-log 2019-01-28 2.95 luaotfload submodule / logging
Lua module: luaotfload-parsers 2019-01-28 2.95 luaotfload submodule / filelist
Lua module: luaotfload-configuration 2019-01-28 2.95 luaotfload submodule / conf
ig file reader
luaotfload | conf : Root cache directory is /opt/yann/texlive/2018/texmf-var/lua
tex-cache/generic/names.
luaotfload | init : Loading fontloader “fontloader-2019-01-28.lua” from kpse
-resolved path “/opt/yann/texlive/2018/texmf-dist/tex/luatex/luaotfload/fontlo
ader-2019-01-28.lua”.
Lua-only attribute luaotfload@state = 1
Lua-only attribute luaotfload@noligature = 2
Lua-only attribute luaotfload@syllabe = 3
luaotfload | init : Context OpenType loader version “3.107”
Inserting `luaotfload.node_processor' at position 1 in `pre_linebreak_filter'.
Inserting `luaotfload.node_processor' at position 1 in `hpack_filter'.
Lua module: luaotfload-loaders 2019-01-28 2.95 luaotfload submodule / callback h
andling
Inserting `luaotfload.define_font' at position 1 in `define_font'.
Lua module: luaotfload-database 2019-01-28 2.95 luaotfload submodule / database
Lua module: luaotfload-colors 2019-01-28 2.95 luaotfload submodule / color
Lua-only attribute luaotfload_color_attribute = 4
Lua module: luaotfload-resolvers 2019-01-28 2.95 luaotfload submodule / resolver
s
luaotfload | conf : Root cache directory is /opt/yann/texlive/2018/texmf-var/lua
tex-cache/generic/names.
Lua module: luaotfload-features 2019-01-28 2.95 luaotfload submodule / features
Lua module: luaotfload-letterspace 2019-01-28 2.95 luaotfload submodule / color
Lua module: luaotfload-auxiliary 2019-01-28 2.95 luaotfload submodule / auxiliar
y functions
Inserting `luaotfload.aux.set_sscale_dimens' at position 1 in `luaotfload.patch_
font'.
Inserting `luaotfload.aux.patch_cambria_domh' at position 2 in `luaotfload.patch
_font'.
Inserting `luaotfload.aux.fixup_fontdata' at position 1 in `luaotfload.patch_fon
t_unsafe'.
Inserting `luaotfload.aux.set_capheight' at position 3 in `luaotfload.patch_font
'.
Inserting `luaotfload.rewrite_fontname' at position 4 in `luaotfload.patch_font'
.
luaotfload | main : initialization completed in 0.064 seconds
(/opt/yann/texlive/2018/texmf-dist/tex/latex/base/article.cls
Document Class: article 2018/09/03 v1.4i Standard LaTeX document class
(/opt/yann/texlive/2018/texmf-dist/tex/latex/base/size10.clo
File: size10.clo 2018/09/03 v1.4i Standard LaTeX file (size option)
luaotfload | db : Font names database loaded from /opt/yann/texlive/2018/texmf-v
ar/luatex-cache/generic/names/luaotfload-names.luc)
\c@part=\count80
\c@section=\count81
\c@subsection=\count82
\c@subsubsection=\count83
\c@paragraph=\count84
\c@subparagraph=\count85
\c@figure=\count86
\c@table=\count87
\abovecaptionskip=\skip41
\belowcaptionskip=\skip42
\bibindent=\dimen102
)
(/opt/yann/texlive/2018/texmf-dist/tex/latex/fontspec/fontspec.sty
(/opt/yann/texlive/2018/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
(/opt/yann/texlive/2018/texmf-dist/tex/latex/l3kernel/expl3.sty
Package: expl3 2019-02-15 L3 programming layer (loader)
(/opt/yann/texlive/2018/texmf-dist/tex/latex/l3kernel/expl3-code.tex
Package: expl3 2019-02-15 L3 programming layer (code)
\ucharcat@table=\catcodetable5
\c_max_int=\count88
\l_tmpa_int=\count89
\l_tmpb_int=\count90
\g_tmpa_int=\count91
\g_tmpb_int=\count92
\g__kernel_prg_map_int=\count93
\c_log_iow=\count94
\l_iow_line_count_int=\count95
\l__iow_line_target_int=\count96
\l__iow_one_indent_int=\count97
\l__iow_indent_int=\count98
\c_zero_dim=\dimen103
\c_max_dim=\dimen104
\l_tmpa_dim=\dimen105
\l_tmpb_dim=\dimen106
\g_tmpa_dim=\dimen107
\g_tmpb_dim=\dimen108
\c_zero_skip=\skip43
\c_max_skip=\skip44
\l_tmpa_skip=\skip45
\l_tmpb_skip=\skip46
\g_tmpa_skip=\skip47
\g_tmpb_skip=\skip48
\c_zero_muskip=\muskip10
\c_max_muskip=\muskip11
\l_tmpa_muskip=\muskip12
\l_tmpb_muskip=\muskip13
\g_tmpa_muskip=\muskip14
\g_tmpb_muskip=\muskip15
\l_keys_choice_int=\count99
\l__intarray_loop_int=\count100
\c__intarray_sp_dim=\dimen109
\g__intarray_font_int=\count101
\c__fp_leading_shift_int=\count102
\c__fp_middle_shift_int=\count103
\c__fp_trailing_shift_int=\count104
\c__fp_big_leading_shift_int=\count105
\c__fp_big_middle_shift_int=\count106
\c__fp_big_trailing_shift_int=\count107
\c__fp_Bigg_leading_shift_int=\count108
\c__fp_Bigg_middle_shift_int=\count109
\c__fp_Bigg_trailing_shift_int=\count110
\g__fp_array_int=\count111
\l__fp_array_loop_int=\count112
\l__sort_length_int=\count113
\l__sort_min_int=\count114
\l__sort_top_int=\count115
\l__sort_max_int=\count116
\l__sort_true_max_int=\count117
\l__sort_block_int=\count118
\l__sort_begin_int=\count119
\l__sort_end_int=\count120
\l__sort_A_int=\count121
\l__sort_B_int=\count122
\l__sort_C_int=\count123
\l__tl_analysis_normal_int=\count124
\l__tl_analysis_index_int=\count125
\l__tl_analysis_nesting_int=\count126
\l__tl_analysis_type_int=\count127
\l__regex_internal_a_int=\count128
\l__regex_internal_b_int=\count129
\l__regex_internal_c_int=\count130
\l__regex_balance_int=\count131
\l__regex_group_level_int=\count132
\l__regex_mode_int=\count133
\c__regex_cs_in_class_mode_int=\count134
\c__regex_cs_mode_int=\count135
\l__regex_catcodes_int=\count136
\l__regex_default_catcodes_int=\count137
\c__regex_catcode_L_int=\count138
\c__regex_catcode_O_int=\count139
\c__regex_catcode_A_int=\count140
\c__regex_all_catcodes_int=\count141
\l__regex_show_lines_int=\count142
\l__regex_min_state_int=\count143
\l__regex_max_state_int=\count144
\l__regex_left_state_int=\count145
\l__regex_right_state_int=\count146
\l__regex_capturing_group_int=\count147
\l__regex_min_pos_int=\count148
\l__regex_max_pos_int=\count149
\l__regex_curr_pos_int=\count150
\l__regex_start_pos_int=\count151
\l__regex_success_pos_int=\count152
\l__regex_curr_char_int=\count153
\l__regex_curr_catcode_int=\count154
\l__regex_last_char_int=\count155
\l__regex_case_changed_char_int=\count156
\l__regex_curr_state_int=\count157
\l__regex_step_int=\count158
\l__regex_min_active_int=\count159
\l__regex_max_active_int=\count160
\l__regex_replacement_csnames_int=\count161
\l__regex_match_count_int=\count162
\l__regex_min_submatch_int=\count163
\l__regex_submatch_int=\count164
\l__regex_zeroth_submatch_int=\count165
\g__regex_trace_regex_int=\count166
\c_empty_box=\box27
\l_tmpa_box=\box28
\l_tmpb_box=\box29
\g_tmpa_box=\box30
\g_tmpb_box=\box31
\l__box_top_dim=\dimen110
\l__box_bottom_dim=\dimen111
\l__box_left_dim=\dimen112
\l__box_right_dim=\dimen113
\l__box_top_new_dim=\dimen114
\l__box_bottom_new_dim=\dimen115
\l__box_left_new_dim=\dimen116
\l__box_right_new_dim=\dimen117
\l__box_internal_box=\box32
\l__coffin_internal_box=\box33
\l__coffin_internal_dim=\dimen118
\l__coffin_offset_x_dim=\dimen119
\l__coffin_offset_y_dim=\dimen120
\l__coffin_x_dim=\dimen121
\l__coffin_y_dim=\dimen122
\l__coffin_x_prime_dim=\dimen123
\l__coffin_y_prime_dim=\dimen124
\c_empty_coffin=\box34
\l__coffin_aligned_coffin=\box35
\l__coffin_aligned_internal_coffin=\box36
\l_tmpa_coffin=\box37
\l_tmpb_coffin=\box38
\g_tmpa_coffin=\box39
\g_tmpb_coffin=\box40
\c__coffin_empty_coffin=\box41
\l__coffin_display_coffin=\box42
\l__coffin_display_coord_coffin=\box43
\l__coffin_display_pole_coffin=\box44
\l__coffin_display_offset_dim=\dimen125
\l__coffin_display_x_dim=\dimen126
\l__coffin_display_y_dim=\dimen127
\g__file_internal_ior=\read1
\l__coffin_bounding_shift_dim=\dimen128
\l__coffin_left_corner_dim=\dimen129
\l__coffin_right_corner_dim=\dimen130
\l__coffin_bottom_corner_dim=\dimen131
\l__coffin_top_corner_dim=\dimen132
\l__coffin_scaled_total_height_dim=\dimen133
\l__coffin_scaled_width_dim=\dimen134
\l__seq_internal_a_int=\count167
\l__seq_internal_b_int=\count168
)
(/opt/yann/texlive/2018/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
File: l3pdfmode.def 2019-02-15 v L3 Experimental driver: PDF mode
\l__driver_color_stack_int=\count169
))
Package: xparse 2018-10-17 L3 Experimental document command parser
\l__xparse_current_arg_int=\count170
\g__xparse_grabber_int=\count171
\l__xparse_m_args_int=\count172
\l__xparse_mandatory_args_int=\count173
\l__xparse_v_nesting_int=\count174
)
Package: fontspec 2019/02/12 v2.7b Font selection for XeLaTeX and LuaLaTeX
Lua module: fontspec 2019/02/12 2.7b Font selection for XeLaTeX and LuaLaTeX
(/opt/yann/texlive/2018/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty
Package: fontspec-luatex 2019/02/12 v2.7b Font selection for XeLaTeX and LuaLaTe
X
\l__fontspec_script_int=\count175
\l__fontspec_language_int=\count176
\l__fontspec_strnum_int=\count177
\l__fontspec_tmp_int=\count178
\l__fontspec_tmpa_int=\count179
\l__fontspec_tmpb_int=\count180
\l__fontspec_tmpc_int=\count181
\l__fontspec_em_int=\count182
\l__fontspec_emdef_int=\count183
\l__fontspec_strong_int=\count184
\l__fontspec_strongdef_int=\count185
\l__fontspec_tmpa_dim=\dimen135
\l__fontspec_tmpb_dim=\dimen136
\l__fontspec_tmpc_dim=\dimen137
(/opt/yann/texlive/2018/texmf-dist/tex/latex/base/fontenc.sty
Package: fontenc 2018/08/11 v2.0j Standard LaTeX package
(/opt/yann/texlive/2018/texmf-dist/tex/latex/base/tuenc.def
File: tuenc.def 2018/08/11 v2.0j Standard LaTeX file
LaTeX Font Info: Redeclaring font encoding TU on input line 82.
))
(/opt/yann/texlive/2018/texmf-dist/tex/latex/fontspec/fontspec.cfg)
LaTeX Info: Redefining \itshape on input line 3776.
LaTeX Info: Redefining \slshape on input line 3781.
LaTeX Info: Redefining \scshape on input line 3786.
LaTeX Info: Redefining \upshape on input line 3791.
LaTeX Info: Redefining \em on input line 3821.
LaTeX Info: Redefining \emph on input line 3846.
))
luaotfload | cache : Lookup cache loaded from /opt/yann/texlive/2018/texmf-var/l
uatex-cache/generic/names/luaotfload-lookup-cache.luc.
luaotfload | aux : font no 29 (nil) does not define feature smcp for script latn
with language dflt
luaotfload | aux : no font with id 29
luaotfload | aux : font no 34 (nil) does not define feature smcp for script latn
with language dflt
luaotfload | aux : no font with id 34
luaotfload | aux : font no 35 (nil) does not define feature smcp for script latn
with language dflt
luaotfload | aux : no font with id 35
luaotfload | aux : font no 36 (nil) does not define feature smcp for script latn
with language dflt
luaotfload | aux : no font with id 36
Package fontspec Info: Font family 'SourceCodePro(0)' created for font 'Source
(fontspec) Code Pro' with options
(fontspec) [WordSpace={1,0,0},HyphenChar=None,PunctuationSpace=WordS
pace].
(fontspec)
(fontspec) This font family consists of the following NFSS
(fontspec) series/shapes:
(fontspec)
(fontspec) - 'normal' (m/n) with NFSS spec.:
(fontspec) <->"SourceCodePro:mode=node;script=latn;language=DFLT;"
(fontspec) - 'small caps' (m/sc) with NFSS spec.:
(fontspec) and font adjustment code:
(fontspec) \fontdimen 2\font =1\fontdimen 2\font \fontdimen 3\font
(fontspec) =0\fontdimen 3\font \fontdimen 4\font =0\fontdimen
(fontspec) 4\font \fontdimen 7\font =0\fontdimen 2\font
(fontspec) \tex_hyphenchar:D \font =-1\scan_stop:
(fontspec) - 'bold' (bx/n) with NFSS spec.:
(fontspec) <->"SourceCodePro/B:mode=node;script=latn;language=DFLT;"
(fontspec) - 'bold small caps' (bx/sc) with NFSS spec.:
(fontspec) and font adjustment code:
(fontspec) \fontdimen 2\font =1\fontdimen 2\font \fontdimen 3\font
(fontspec) =0\fontdimen 3\font \fontdimen 4\font =0\fontdimen
(fontspec) 4\font \fontdimen 7\font =0\fontdimen 2\font
(fontspec) \tex_hyphenchar:D \font =-1\scan_stop:
(fontspec) - 'italic' (m/it) with NFSS spec.:
(fontspec) <->"SourceCodePro/I:mode=node;script=latn;language=DFLT;"
(fontspec) - 'italic small caps' (m/itsc) with NFSS spec.:
(fontspec) and font adjustment code:
(fontspec) \fontdimen 2\font =1\fontdimen 2\font \fontdimen 3\font
(fontspec) =0\fontdimen 3\font \fontdimen 4\font =0\fontdimen
(fontspec) 4\font \fontdimen 7\font =0\fontdimen 2\font
(fontspec) \tex_hyphenchar:D \font =-1\scan_stop:
(fontspec) - 'bold italic' (bx/it) with NFSS spec.:
(fontspec) <->"SourceCodePro/BI:mode=node;script=latn;language=DFLT;
"
(fontspec) - 'bold italic small caps' (bx/itsc) with NFSS spec.:
(fontspec) and font adjustment code:
(fontspec) \fontdimen 2\font =1\fontdimen 2\font \fontdimen 3\font
(fontspec) =0\fontdimen 3\font \fontdimen 4\font =0\fontdimen
(fontspec) 4\font \fontdimen 7\font =0\fontdimen 2\font
(fontspec) \tex_hyphenchar:D \font =-1\scan_stop:
LaTeX Info: Redefining \ttfamily on input line 4.
(./test.aux)
\openout1 = test.aux
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 4.
LaTeX Font Info: ... okay on input line 4.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 4.
LaTeX Font Info: ... okay on input line 4.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 4.
LaTeX Font Info: ... okay on input line 4.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 4.
LaTeX Font Info: ... okay on input line 4.
LaTeX Font Info: Checking defaults for TU/lmr/m/n on input line 4.
LaTeX Font Info: ... okay on input line 4.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 4.
LaTeX Font Info: ... okay on input line 4.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 4.
LaTeX Font Info: ... okay on input line 4.
Package fontspec Info: Adjusting the maths setup (use [no-math] to avoid
(fontspec) this).
\symlegacymaths=\mathgroup4
LaTeX Font Info: Overwriting symbol font `legacymaths' in version `bold'
(Font) OT1/cmr/m/n --> OT1/cmr/bx/n on input line 4.
LaTeX Font Info: Redeclaring math accent \acute on input line 4.
LaTeX Font Info: Redeclaring math accent \grave on input line 4.
LaTeX Font Info: Redeclaring math accent \ddot on input line 4.
LaTeX Font Info: Redeclaring math accent \tilde on input line 4.
LaTeX Font Info: Redeclaring math accent \bar on input line 4.
LaTeX Font Info: Redeclaring math accent \breve on input line 4.
LaTeX Font Info: Redeclaring math accent \check on input line 4.
LaTeX Font Info: Redeclaring math accent \hat on input line 4.
LaTeX Font Info: Redeclaring math accent \dot on input line 4.
LaTeX Font Info: Redeclaring math accent \mathring on input line 4.
LaTeX Font Info: Redeclaring math symbol \colon on input line 4.
LaTeX Font Info: Redeclaring math symbol \Gamma on input line 4.
LaTeX Font Info: Redeclaring math symbol \Delta on input line 4.
LaTeX Font Info: Redeclaring math symbol \Theta on input line 4.
LaTeX Font Info: Redeclaring math symbol \Lambda on input line 4.
LaTeX Font Info: Redeclaring math symbol \Xi on input line 4.
LaTeX Font Info: Redeclaring math symbol \Pi on input line 4.
LaTeX Font Info: Redeclaring math symbol \Sigma on input line 4.
LaTeX Font Info: Redeclaring math symbol \Upsilon on input line 4.
LaTeX Font Info: Redeclaring math symbol \Phi on input line 4.
LaTeX Font Info: Redeclaring math symbol \Psi on input line 4.
LaTeX Font Info: Redeclaring math symbol \Omega on input line 4.
LaTeX Font Info: Redeclaring math symbol \mathdollar on input line 4.
LaTeX Font Info: Redeclaring symbol font `operators' on input line 4.
LaTeX Font Info: Encoding `OT1' has changed to `TU' for symbol font
(Font) `operators' in the math version `normal' on input line 4.
LaTeX Font Info: Overwriting symbol font `operators' in version `normal'
(Font) OT1/cmr/m/n --> TU/lmr/m/n on input line 4.
LaTeX Font Info: Encoding `OT1' has changed to `TU' for symbol font
(Font) `operators' in the math version `bold' on input line 4.
LaTeX Font Info: Overwriting symbol font `operators' in version `bold'
(Font) OT1/cmr/bx/n --> TU/lmr/m/n on input line 4.
LaTeX Font Info: Overwriting symbol font `operators' in version `normal'
(Font) TU/lmr/m/n --> TU/lmr/m/n on input line 4.
LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal'
(Font) OT1/cmr/m/it --> TU/lmr/m/it on input line 4.
LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal'
(Font) OT1/cmr/bx/n --> TU/lmr/bx/n on input line 4.
LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal'
(Font) OT1/cmss/m/n --> TU/lmss/m/n on input line 4.
LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `normal'
(Font) OT1/cmtt/m/n --> TU/SourceCodePro(0)/m/n on input line 4
.
LaTeX Font Info: Overwriting symbol font `operators' in version `bold'
(Font) TU/lmr/m/n --> TU/lmr/bx/n on input line 4.
LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold'
(Font) OT1/cmr/bx/it --> TU/lmr/bx/it on input line 4.
LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold'
(Font) OT1/cmss/bx/n --> TU/lmss/bx/n on input line 4.
LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold'
(Font) OT1/cmtt/m/n --> TU/SourceCodePro(0)/bx/n on input line
4.
[1
{/opt/yann/texlive/2018/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] (./test.
aux))
Here is how much of LuaTeX's memory you used:
11516 strings out of 494383
100000,383344 words of node,token memory allocated
414 words of node memory still in use:
3 hlist, 1 vlist, 1 rule, 2 glue, 3 kern, 1 glyph, 5 attribute, 49 glue_spec,
5 attribute_list, 1 write nodes
avail lists: 2:15,3:3,4:2,5:21,6:1,7:15,8:1,9:6
15661 multiletter control sequences out of 65536+600000
36 fonts using 7879519 bytes
47i,4n,67p,343b,446s stack positions out of 5000i,500n,10000p,200000b,100000s
</home/yann/texmf/fonts/opentype/public/lm/lmroman10-regular.otf>
Output written on test.pdf (1 page, 2755 bytes).
PDF statistics: 15 PDF objects out of 1000 (max. 8388607)
8 compressed objects within 1 object stream
0 named destinations out of 1000 (max. 131072)
1 words of extra memory for PDF output out of 10000 (max. 100000000)
什么鬼?
lualatex 是版本 1.07.0(TeX Live 2018)。latexmk 是版本 4.61。操作系统是 KUbuntu 18.04。
答案1
显然,latexmk 可以被指示通过将以下内容添加到~/.latexmkrc
$hash_calc_ignore_pattern{'luc'}='^';
这只是一种变通方法,而不是真正的解决方案,因为 .luc 文件似乎毫无理由地被 lualatex 触碰。