\documentclass{doublecol-new}
\def\newblock{\hskip .11em plus .33em minus .07em}
\begin{document}
\setcounter{page}{1}
\title{IJKL}
\maketitle
\begin{abstract}
\end{abstract}
\section{Introduction}
\cite{jojo}
\begin{thebibliography}{10}
\bibitem{jojo} ABCD
\end{thebibliography}
\end{document}
以上是一个可以编译的最小工作示例,但当我尝试引用 bibitem 时会留下一个 ? 标记。有人能帮我解决这个问题吗?
PS:cls文件链接:http://www.inderscience.com/www/download/latex-double-column.zip。解压链接文件将提供 cls 文件。
答案1
这班级 完全地重新定义thebibliography
环境以设置每个的常规列表\bibitem
。实际上,没有引用写入辅助文件以用作\cite
实际文档中的。
以下是重新定义的观点thebibliography
:
\def\thebibliography#1{%
\par{\section*{References and Notes}}%
\list{}{\settowidth\labelwidth{#1}
\setlength{\topsep}{0pt}
\labelsep 0pt\labelwidth 0pt
\leftmargin 8pt
\itemindent-8pt
\itemsep 5pt
\def\bibitem{\item \NINE
\baselineskip10pt plus 0.3pt minus 0.25pt\relax}}
\def\newblock{\hskip .11em plus .33em minus .07em}
\sloppy\clubpenalty4000\widowpenalty4000
\sfcode`\.=1000\relax}
\bibitem
注意是如何\def
设置的\item
,并且没有迹象表明内容已写入文件。现在查看LaTeX 内核中的 (和朋友).aux
的默认定义\bibitem
latex.ltx
:
\def\bibitem{\@ifnextchar[\@lbibitem\@bibitem}
\def\@lbibitem[#1]#2{\item[\@biblabel{#1}\hfill]\if@filesw
{\let\protect\noexpand
\immediate
\write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces}
\def\@bibitem#1{\item\if@filesw \immediate\write\@auxout
{\string\bibcite{#1}{\the\value{\@listctr}}}\fi\ignorespaces}
从上面可以明显看出,任何对 的调用都会将内容writ
添加en
到文件中。.aux
\bibitem
我的假设是该类不打算允许使用\cite
。您会在文件中看到类似的行为sample.tex
,而不仅仅是在您的最小示例中。因此,它似乎是按设计状态。
顺便提一下,这个类名为doublecol-new
,但它实际上是通过开头的singlecol
一条语句提供的。这个类需要做一些认真的工作。我建议不要使用它。
\ProvidesClass{singlecol}
doublecol-new.cls
答案2
如果你真的想(或必须)\cite
与doublecol-new
文档类一起工作 - 我真的不确定这是否可取! - 最好的选择是首先注释掉(或删除)以下代码块,它占据了类文件的第 714 行到第 728 行:
\def\thebibliography#1{%
\par{\section*{References and Notes}}%
\list{}{\settowidth\labelwidth{#1}
\setlength{\topsep}{0pt}
\labelsep 0pt\labelwidth 0pt
\leftmargin 8pt
\itemindent-8pt
\itemsep 5pt
\def\bibitem{\item \NINE
\baselineskip10pt plus 0.3pt minus 0.25pt\relax}}
\def\newblock{\hskip .11em plus .33em minus .07em}
\sloppy\clubpenalty4000\widowpenalty4000
\sfcode`\.=1000\relax}
\def\endthebibliography{\endlist}
接下来,将从文档类中获取的以下代码(略作修改)复制到类文件article
中doublecol-new
:
\renewenvironment{thebibliography}[1]
{\section*{References and Notes\HD{0}{0}}%
%%\@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}%
\list{\@biblabel{\@arabic\c@enumiv}}%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
%%\@openbib@code
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
\sloppy
\clubpenalty4000
\@clubpenalty \clubpenalty
\widowpenalty4000%
\sfcode`\.\@m}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
我所说的“稍微修改”是指 (a)\refname
已更改为References and Notes\HD{0}{0}
并且 (b) 两个指令已被注释掉;请参阅以 开头的行%%
。
正如@Werner已经指出的那样,doublecol-new
文档类文件看起来需要很多认真工作。如果遇到其他问题,请不要感到惊讶!(例如,环境abstract
似乎不像人们习惯的那样工作,例如课堂article
……)
将修改后的文档类保存为,例如doublecol-mod.cls
。然后,您的 MWE 的以下版本应该提供数字引用调出。
\documentclass{doublecol-mod} % note the modified name
\begin{document}
%%\setcounter{page}{1} % not needed, is it?
\title{IJKL}
\maketitle
\begin{abstract} % does it even work?
\end{abstract}
\section{Introduction}
A citation: \cite{jojo}
\begin{thebibliography}{9}
\bibitem{jojo} ABCD
\end{thebibliography}
\end{document}