“未定义的控制序列” heisenbug

“未定义的控制序列” heisenbug

我正在编辑下面的文件,然后开始收到“未定义的控制序列”错误。问题是,我认为代码没有错误。事实上,在第 6 项中,第二个数学显示是从第一个复制而来的,但当我有第二行时会出错,但如果我删除第二行而只有第一行,则不会出错。同样,如果我删除文件的其他随机部分,文件可以正常编译。我认为这可能是软件中的某个错误,但我不确定如何处理。我正在使用 Texmaker 4.5。如果有人能告诉我如何修复这个问题或我可以向哪个组报告错误,那就太好了。错误和代码如下。

! Undefined control sequence.
\f@ncyorh ->\myauthor 
                      \strut 
l.120 \end{document}
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
[2] (./PainRankinErrata.aux) )
Here is how much of TeX's memory you used:
13472 strings out of 493089
262778 string characters out of 6134842
311803 words of memory out of 5000000
16685 multiletter control sequences out of 15000+600000
6590 words of font info for 26 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
55i,12n,67p,425b,262s stack positions out of 5000i,500n,10000p,200000b,80000s
</usr/local/texlive/2015/texmf-dist/fonts/type1/p
ublic/amsfonts/cm/cmmi10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/pu
blic/amsfonts/cm/cmmi7.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/publ
ic/amsfonts/cm/cmr10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public
/amsfonts/cm/cmr5.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public/am
sfonts/cm/cmr7.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfo
nts/cm/cmss10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfon
ts/cm/cmsy10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfont
s/cm/cmsy7.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/
cm/cmti10.pfb>
Output written on PainRankinErrata.pdf (2 pages, 86516 bytes).
PDF statistics:
50 PDF objects out of 1000 (max. 8388607)
36 compressed objects within 1 object stream
0 named destinations out of 1000 (max. 500000)
13 words of extra memory for PDF output out of 10000 (max. 10000000)

代码如下

\documentclass[10pt,a4paper]{article}

\usepackage[utf8]{inputenc}
\usepackage[margin=1in]{geometry}
\usepackage{amsmath,amsfonts,amssymb,amsthm}
\usepackage{comment}
\usepackage{fancyhdr}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{calc}
\pagestyle{fancy}
\usepackage{enumerate}

\DeclareMathOperator{\tr}{tr}
\DeclareMathOperator{\erfc}{erfc}
\newcommand{\Z}{\mathbb{Z}}
\newcommand{\Q}{\mathbb{Q}}
\newcommand{\N}{\mathbb{N}}
\newcommand{\I}{\mathbb{I}}
\newcommand{\R}{\mathbb{R}}
\newcommand{\lb}{\lbrace}
\newcommand{\rb}{\rbrace}
\newcommand{\exist}{\exists}
\newcommand{\abs}[1]{\lvert#1\rvert}
\newcommand{\norm}[1]{\lVert#1\rVert}
\newcommand{\seq}[1]{\left\lb#1\right\rb}

\theoremstyle{definition}
\newtheorem{theorem}{Theorem}
\newtheorem{lemma}{Lemma}

\newcommand{\mytitle}{Errata for Introduction to Vibrations and Waves by H. J. Pain and Patricia Rankin}
\newcommand{\mydate}{February 11, 2018}

\newcommand{\mymaketitle}{
\centering{\mytitle\\
\mydate\\
}
}

\lhead{\mydate}
\chead{\mytitle}
\rhead{\myauthor}

\begin{document}\thispagestyle{empty}

\mymaketitle
\bigskip
\begin{enumerate}
\item Page 9, Worked Example. The following text\\
\bigskip
\fbox{\begin{minipage}{4 in}
In Figure 1.1(g) the energy equation is
\begin{gather*}
E = \frac{1}{2}m\dot x^2 + A\rho gx^2\\
\frac{\mathrm{d}E}{\mathrm{d}t} = (m\ddot x + 2A\rho gx)\dot x = 0\\
m\ddot x + sx = 0
\end{gather*}
with
\begin{gather*}
s=2A\rho g\\
\omega^2 = \frac{2A\rho g}{m} = \frac{2g}{l}
\end{gather*}
\end{minipage}}\\
\bigskip
should be replaced with\\
\bigskip
\fbox{\begin{minipage}{4 in}
In Figure 1.1(g) the energy equation is
\begin{gather*}
E = \frac{1}{2}m\dot x^2 + \frac{1}{2}A\rho gx^2\\
\frac{\mathrm{d}E}{\mathrm{d}t} = (m\ddot x + A\rho gx)\dot x = 0\\
m\ddot x + sx = 0
\end{gather*}
with
\begin{gather*}
s=A\rho g\\
\omega^2 = \frac{A\rho g}{m} = \frac{g}{l}
\end{gather*}
\end{minipage}}\\
\bigskip
This makes the formula for $\omega^2$ match that in Figure 1.1(g).

\item Page 12, Figure 1.5. Change the label

\begin{equation*}
\mathsf{L\dot q + \frac{q}{c} = 0}
\end{equation*}
to
\begin{equation*}
\mathsf{L\ddot q + \frac{q}{c} = 0}
\end{equation*}
\item Page 14, Figure 1.6. Change the angle for $\phi_2$ to indicate the angle between the x-axis and the vector with length $a_2$.
\item Page 18, Problem 1.10. Change ``a spring of length \textit{1}'' to ``a spring of length $l$''.
\item Page 35, last line. Change
\begin{equation*}
A^2 = A_0^2 e^{(-rt/2m)^2}
\end{equation*}
to
\begin{equation*}
A^2 = A_0^2 (e^{-rt/2m})^2
\end{equation*}

\item Page 37, first equation. Change
\begin{equation*}
-\Delta E = \frac{\mathrm{d}E}{\mathrm{d}t} \Delta t = \frac{-r}{m} E \frac{1}{\nu'}
\end{equation*}
to
\begin{equation*}
-\Delta E = \frac{\mathrm{d}E}{\mathrm{d}t} \Delta t = \frac{-r}{m} E \frac{1}{\nu'}
\end{equation*}

\item Page 39, Worked Example solution, first line. Change ``Critical dumping:'' to ``Critical damping:''.
\end{enumerate}

\begin{flushleft}

\end{flushleft}

\end{document}

答案1

如果你查看错误信息,

! Undefined control sequence.
\f@ncyorh ->\myauthor 
                      \strut 

它告诉你命令\myauthor(TeX 术语中的控制序列)未定义。如果你查看文档,你会发现你定义了\mytitle和 ,\mydate但没有定义\myauthor

该错误似乎是 Heisenbug,因为它仅当您构建“花哨”的页眉时才会触发;第一页没有页眉或页脚(\thispagestyle{empty}),因此仅当文档足够长以生成另一页时才会发生这种情况。

您可能会怀疑,因为\f@ncyorh让人想起“花哨”(实际上,包的内部“变量”和“函数”都fancyhdr用该前缀存储,以避免与其他包发生冲突)。

所以

\newcommand{\myauthor}{user109923} 

将会修复它。

相关内容