早上好,我在 3 台不同的电脑上遇到了以下问题:使用 ConTeXt(LuaTex) 库在 TexWorks (Ver.0.6.8) 中编译序言时遇到以下错误:错误消息顶行末尾的控制序列从未被 \def'ed。您可以继续,因为我会忘记所有未定义的内容。mtx 上下文 | 致命错误:返回代码:1
我安装了 TexLive 和 MikTex 的软件包。
但是,相同的代码在另外 2 个装有 TexWorks(Ver. 0.6.4)和仅 TexLive 的站点上运行。(2 年前安装)
\section{Descrizione dell'opera.} Oggetto della presente
relazione è il dimensionamento di un'apparecchiatura a
pressione rientrante nell'ambito delle opere soggette alla
normativa 2014/68/UE - Direttiva Apparecchi in Pressione
(PED), in quanto sottoposta ad una pressione interna superiore
a 0,05 \Mega\Pascal.
L'apparecchiatura è composta da una camera principale, a sua
volta costituita da due fondi bombati (superiore ed inferiore)
e da un fasciame cilindrico, con asse verticale.
\section{Codice di calcolo ed unità di misura.} Il codice di
calcolo utilizzato nel dimensionamento volto a garantire la
stabilità a pressione dell'apparecchiatura è la normativa EN
13445, ed in particolare la normativa armonizzata UNI EN 13445.
Le unità di misura utilizzate nell'esecuzione dei calcoli sono
le seguenti:
\starttabulate[|l j2|c|]
\NC dimensioni \NC \hfill \Milli \Meter \NC \FR%
\NC forze \NC \hfill \Newton \NC \NR%
\NC pressioni \NC \hfill \Mega \Pascal \NC \NR%
\NC sforzi \NC \hfill \Mega \Pascal \NC \NR%
\NC temperature \NC \hfill \Degrees \Celsius \NC \LR%
\stoptabulate%
我怎么解决这个问题?
谢谢。
我在 3 台计算机上安装了该程序,尝试了不同的库、不同的文本编辑器等......
我希望解决这个问题,并生成最终的 PDF
答案1
为了正确回答这个问题,你应该包括一个平均能量损失(即,您的代码应该包括加载任何包以及\starttext
/ \stoptext
)和完整的错误消息(清楚地标识哪个命令未定义,而不是让我们猜测)。
我认为这是针对该问题的正确 MWE:
\usemodule[units]
\startTEXpage[offset=1em]
Test \Mega\Pascal\ test.
\stopTEXpage
使用 TeX Live 2023,使用context --luatex filename.tex
(MkIV) 进行编译可得
[...]
system > ConTeXt ver: 2023.05.05 18:36 MKIV fmt: 2024.1.27 int: english/english
[...]
modules > 'units' is loaded
open source > level 3, order 5, name '/usr/local/texlive/2023/texmf-dist/tex/context/modules/mkiv/m-units.mkiv'
resolvers > lua > loading file '/usr/local/texlive/2023/texmf-dist/tex/context/modules/mkiv/x-mathml.lua' succeeded
units > The units module is obsolete because functionality is built into the core.
[...]
system | total runtime: 0.678 seconds
但使用context filename.tex
(MkXL/LMTX) 进行编译
[...]
system > ConTeXt ver: 2023.05.05 18:36 LMTX fmt: 2024.1.13 int: english/english
[...]
modules > 'units' is loaded
[...]
tex error > tex error on line 4 in file ./context-units-error.tex: Undefined control sequence
<line 3.4>
Test \Mega
\Pascal\ test.
1 \usemodule[units]
2
3 \startTEXpage[offset=1em]
4 >> Test \Mega\Pascal\ test.
5 \stopTEXpage
6
The control sequence at the end of the top line of your error message was never
\def'ed. You can just continue as I'll forget about whatever was undefined.
mtx-context | fatal error: return code: 1
这里的问题是 TeX Live 2023 现在使用 ConTeXt MkXL/LMTX。如果你打开$TEXMFDIST/tex/context/modules/mkiv/m-units.mkiv
,前 16 行是
%D \module
%D [ file=m-units,
%D version=1997.03.19,
%D title=\CONTEXT\ Extra Modules,
%D subtitle=Scientific Units,
%D author={Hans Hagen \& Ton Otten},
%D date=\currentdate,
%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
\ifcase\contextlmtxmode\else\endinput\fi
%D Best use the built in unit handle!
显示单位模块拒绝使用 LMTX 加载。
此处正确的解决方案是切换到新的单位语法:
\startTEXpage[offset=1em]
Test \unit{mega pascal} test.
\stopTEXpage
您也可以运行context --luatex <filename>
而不是context <filename>
继续使用旧的 MkIV 版本。
最后,您可以欺骗单位模块使用 LMTX 加载,尽管我不建议这样做,因为它不受广泛支持:
\chardef\contextlmtxmode=0
\usemodule[units]
\chardef\contextlmtxmode=1
\startTEXpage[offset=1dk]
Test \Mega\Pascal\ test.
\stopTEXpage