whutug / whu-thesis

:memo: 武汉大学毕业论文 LaTeX 模版 2024
LaTeX Project Public License v1.3c
931 stars 200 forks source link

如何在摘要中进行引用 #255

Closed eraserqqq closed 5 months ago

eraserqqq commented 5 months ago

摘要貌似不在正文内容中,\cite会报错,有没有大佬知道怎么解决

SwitWu commented 5 months ago
  1. 本科还是硕士?
  2. 哪个分支?
eraserqqq commented 5 months ago

本科毕业论文 main分支

SwitWu commented 5 months ago

你先用 biblatex,别用 bibtex

SwitWu commented 5 months ago

确实能够复现问题,我整理了一个 MWE,请 @zepinglee 李泽平老师看看这个问题的原因在哪儿

MWE 文件

MWE.zip

其中 c.tex 是主文件,abstract.tex 是外部摘要文件(通过 \file_input:n 导入进主文件)

复现步骤及结果

运行 xelatex + bibtex + xelatex * 2 后 PDF 如下图

image

其实第一次运行 xelatex 的时候就有警告 LaTeX Warning: Citation `[' on page 1 undefined on input line 1.

eraserqqq commented 5 months ago

也许是因为摘要不是在\begin{document}中进行引入的?

xkwxdyy commented 5 months ago

确实能够复现问题,我整理了一个 MWE,请 @zepinglee 李泽平老师看看这个问题的原因在哪儿

MWE 文件

MWE.zip

其中 c.tex 是主文件,abstract.tex 是外部摘要文件(通过 \file_input:n 导入进主文件)

复现步骤及结果

运行 xelatex + bibtex + xelatex * 2 后 PDF 如下图 image 其实第一次运行 xelatex 的时候就有警告 LaTeX Warning: Citation `[' on page 1 undefined on input line 1.

刚看了一下,我找到问题了,出在 cls 文件里的 \AtBeginDocument,改成 \ctex_after_end_preamble:n 即可:

% \AtBeginDocument { \__whu_make_abstract: }
\ctex_after_end_preamble:n { \__whu_make_abstract: }
image
xkwxdyy commented 5 months ago

应该是 \AtBeginDocument 的钩子执行阶段还没有开始 bibtex 的设置之类的原因造成的,所以往后一点即可。

xkwxdyy commented 5 months ago

不用 ctex 的钩子,用 begindocument/end 也可以:

\AddToHook { begindocument / end } { \__whu_make_abstract: }
xkwxdyy commented 5 months ago

lthooks-doc.pdf 里也说了,\AtBeginDocument 钩子的内容不应该用来输出 typing 的东西:

image
SwitWu commented 5 months ago

行,那就先换成 begindocument / end

eraserqqq commented 5 months ago

感谢各位,完美解决了问题