![! LaTeX 错误:控制序列 \sep:已定义](https://linux22.com/image/470542/!%20LaTeX%20%E9%94%99%E8%AF%AF%EF%BC%9A%E6%8E%A7%E5%88%B6%E5%BA%8F%E5%88%97%20%5Csep%EF%BC%9A%E5%B7%B2%E5%AE%9A%E4%B9%89.png)
我需要将使用 CAS-DC Elsevier 模板编写的几篇研究论文合并到单个 .pdf 文件中,每篇研究论文中都有参考书目,整个 .pdf 文档都有连续的页码。最小工作示例如下:我需要将几篇研究论文合并成一个 .pdf 文件
我尝试了 confproc、combine、pdfpages 和 subfiles、docmute 包。无论使用哪种包,在编译主文档时我总是看到相同的错误:
! LaTeX 错误:控制序列 \sep:已定义。
在编译的主文档中,我看到标题、作者、附属机构等的重复。例如:在第二篇研究论文的主文件中,有来自第一篇研究论文的标题、作者、附属机构、电子邮件 ORCID 等。
这与连接无关,我需要借助 LaTex(MiKTeX、TeXstudio)来解决问题。
非常感谢您的所有建议。提前谢谢您。
答案1
关键字 environment 的定义cas-common.sty
是
\NewDocumentEnvironment { keywords } { O{ Keywords } }
{
\tex_global:D \tex_setbox:D \g_stm_key_box = \vtop \bgroup
\hsize=.25 \textwidth
\cs_new:Nn \sep: { \par }
\cs_set_eq:NN \sep \sep:
\parindent \z@
A\,R\,T\,I\,C\,L\,E\ \ I\,N\,F\,O \par \skip_vertical:n { -3pt }
\rule{.25 \textwidth}{.2pt}\par\footnotesize
\noindent \textit { #1 }: \par
}
{ \egroup }
很难对这段代码说任何友好的话,这是一种 tex-latex-expl3 洋泾浜语。
无论如何,问题出在 (useless) 上\cs_new:Nn
。在环境定义中,永远不要使用此命令。
您可以通过重新定义环境来避免错误(这并不会使情况变得更好,它只能避免错误):
\documentclass[a4paper,fleqn,twoside]{cas-dc}
\ExplSyntaxOn\makeatletter
\RenewDocumentEnvironment { keywords } { O{ Keywords } }
{
\tex_global:D \tex_setbox:D \g_stm_key_box = \vtop \bgroup
\hsize=.25 \textwidth
%\cs_new:Nn \sep: { \par } % removed
\def\sep{\par} % \cs_set_eq:NN \sep \sep:
\parindent \z@
A\,R\,T\,I\,C\,L\,E\ \ I\,N\,F\,O \par \skip_vertical:n { -3pt }
\rule{.25 \textwidth}{.2pt}\par\footnotesize
\noindent \textit { #1 }: \par
}
{ \egroup }
\ExplSyntaxOff\makeatother
答案2
好的,这是我的初步分析结果。
第一种方法
目标:让你的文件编译。
在此过程中,我MikTeX console
要求安装一些缺失的文件,包括 cas-dc.cls 。
更改标记为 后,% <<< !!
我终于可以进行main.tex
编译了(只有第一个 subfile() 调用处于活动状态)。 按照sub1.tex
上述方法更改后,两个文件都可以单独编译,这是理所当然的。
尽管有警告,但\sep error
并没有出现。
主文本:
%
%
\documentclass[a4paper,fleqn,twoside]{cas-dc}
\usepackage{subfiles}
\usepackage[numbers]{natbib}
\usepackage[T1,T2A]{fontenc}
\usepackage[utf8,]{inputenc}
%\usepackage{tempora}
%\usepackage{XCharter}
\usepackage{textcomp}
\usepackage[russian,ukrainian,romanian,english]{babel}
%\usepackage[dvipsnames,x11names]{xcolor}
\renewcommand{\rmdefault}{ftm}
\usepackage{yfonts}
\usepackage{multicol}
\usepackage{lineno,hyperref}
%\modulolinenumbers[5]
\usepackage{amsmath,amsfonts,amssymb,amsthm,mathtools,enumerate,float}
\sloppy
\makeatletter
\def\ps@first{%
\let\@oddhead\@empty
\let\@evenhead\@empty
\def\@oddfoot{}
\let\@evenfoot\@oddfoot
}
\usepackage{wrapfig}
\usepackage{graphicx}
\renewcommand{\rmdefault}{cmr}
\renewcommand{\sfdefault}{cmss}
\renewcommand{\ttdefault}{cmtt}
%\renewcommand{\rmdefault}{cmss}
\renewcommand{\ttdefault}{cmss}
%\DeclareFontSubstitution{T2A}{cmr}{m}{n}
%\DeclareSymbolFont{T2Aletters}{T2A}{cmr}{m}{it}
\usepackage{geometry}
\renewcommand{\theenumi}{\arabic{enumi}}% Меняем везде перечисления на цифра.цифра
\renewcommand{\labelenumi}{\arabic{enumi}}% Меняем везде перечисления на цифра.цифра
\renewcommand{\theenumii}{.\arabic{enumii}}% Меняем везде перечисления на цифра.цифра
\renewcommand{\labelenumii}{\arabic{enumi}.\arabic{enumii}.}% Меняем везде перечисления на цифра.цифра
\renewcommand{\theenumiii}{.\arabic{enumiii}}% Меняем везде перечисления на цифра.цифра
\renewcommand{\labelenumiii}{\arabic{enumi}.\arabic{enumii}.\arabic{enumiii}.}% Меняем везде перечисления на цифра.цифра
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead{}
\fancyhead[LE,RO]{\thepage}
\fancyhead[CO]{ }
%\fancyhead[LO] {}
\fancyhead[CE]{ }
%\fancyhead[RE] { }
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0.5pt}
\fancyfoot[C]{}%}} % <<< !!
{
\fancyfootoffset[R]{-12cm}
\fancyfoot[L]{}
\fancyfoot[C]{}
\fancyfoot[R]{}
\renewcommand{\footrulewidth}{0.3 mm}
\renewcommand{\headrulewidth}{0.3 mm}
}
\setlength{\voffset}{-10mm}
\setlength{\topmargin}{0mm}
\setlength{\headheight}{5mm}
\setlength{\headsep}{5mm}
\setlength{\footskip}{6mm}
%\newcommand{\l@abcd}[2]{\hbox to\textwidth{#1\dotfill #2}}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\BR@backref}{\newblock}{\newblock(page~}{}{}
\patchcmd{\BR@backref}{\par}{)\par}{}{}
\makeatother
\usepackage[]{notes2bib}
\usepackage[nottoc]{tocbibind}
\usepackage[colorlinks]{hyperref}
%\hypersetup{pdffitwindow=true,linkcolor=LightSkyBlue,citecolor=Sienna,urlcolor=Navy,menucolor=black}
\hypersetup{
colorlinks=true,
linkcolor=magenta,
filecolor=blue,
urlcolor=blue,
citecolor=green,
anchorcolor=blue,
menucolor=blue,
backref=false,
backref=page,
pdfpagemode=UseNone,
pdfstartview=}
\RequirePackage[hyperpageref]{backref}
\renewcommand*{\backref}[1]{}
\renewcommand*{\backrefalt}[4]{
\ifcase #1
No cited.
\or
Cited on page #2.
\else
Cited on pages #2.
\fi}
\begin{document}
\subfile{sub1} % <<< !!
\subfile{sub2} % <<< !! (not used in 1st approach)
\end{document}
sub1.tex,部分内容缺失(图像)或不清晰(\maketitle):
%\documentclass[document]{subfiles}
\documentclass[main]{subfiles} % <<< !!
\begin{document}
\title [mode = title]{ }
\tnotemark[1]
\tnotetext[1]{Research Paper}
\tnotetext[1]{This document is the result of blood, sweat, tears and taxpayer money.}
\nonumnote{This note has no numbers. In this work we demonstrate $a_b$
the formation Y\_1 of a new type of polariton on the interface
between a cuprous oxide slab and a polystyrene micro-sphere placed
on the slab.}
\credit{Conceptualization of this study, Methodology, Software}
\author[2]{ }
[orcid=https://orcid.org/]
\cormark[2]
\fnmark[2]
\fntext[fn2]{ }
\ead{[email protected]}
\ead[URL]{www. }%
% Address/affiliation
\affiliation[2]{organization={National Scientific Center «Hon. Prof. M. S. Bokarius Forensic Science Institute»},
addressline={ },
city={ },
country={ }}
\credit{ }
\begin{abstract}
Abstract Text
\end{abstract}
\begin{keywords}
keywords
\vspace*{0.5\baselineskip}
\textbf{Article history:}\\ Received: 30.09.2021\\ Received in revised form: 19.12.2021 \\Accepted: 9.01.2022 \\Available online: 11.01.2022
\end{keywords}
%\maketitle % <<< !!
\section{ }
Text
\section{ }
text
\section{ }
Text
\section{Conclusions}
Text
\section{Conclusions}
Text
\subsection{Acknowledgements}
Text
%\bio{{figs/image1}} % <<< !!
Author biography with author photo.
%\end{multicols} % <<< !!
\end{document}
第二种方法
如何激发\sep errors
?让我们尝试包含第二个文件:
- 包括
sub1.tex
做了(!) - 将 sub1.tex 修改为稍微改变的
sub2.tex
版本 (!)
笔记:
包含两个不同的子文件
main
sub1
进展顺利,编译时导致
sub2
错误main.tex
! LaTeX 错误:控制序列 \sep:已定义。如需立即帮助,请键入 H . ... l.44 \end {keywords}
那么,它在哪里?
我通过以下方式证明:
- 注释掉整个关键字环境(无错误)
- 仅允许
\begin \end
语句(错误)
它在这里:
% <<< !!!
\begin{keywords}
%keywords
%\vspace*{0.5\baselineskip}
%\textbf{Article history:}\\ Received: 30.09.2021\\ Received in revised form: 19.12.2021 \\Accepted: 9.01.2022 \\Available online: 11.01.2022
\end{keywords}
您可能需要\renewenvironment
关键字环境,或者类似的操作。
结论
在这种情况下,代码的逐步增强就足以导致错误。阅读错误消息可以很容易地找到问题制造者:环境。
也许某个熟记该cas-dc.cls
课程的人可以为您提供治疗。
但是,还有一些工作要做,例如调整计数器,正如没有麻烦制造者生成的 main.pdf 所示: