错误上下文(Latex)

错误上下文(Latex)

早上好,我在 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

输出

相关内容