引用 bibitem 留下一个问号

引用 bibitem 留下一个问号
\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的默认定义\bibitemlatex.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

如果你真的想(或必须\citedoublecol-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}

接下来,将从文档类中获取的以下代码(略作修改)复制到类文件articledoublecol-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} 

相关内容