% ****** Start of file reftest.tex ****** % % This file is part of the APS files in the REVTeX 4.2 distribution. % Version 4.2a of REVTeX, December, 2014. % % Copyright (c) 2014 The American Physical Society. % % See the REVTeX 4.2 README file for restrictions and more information. % \documentclass{revtex4}% \begin{document}% \typeout{Filename: reftest4-2.tex for revtex 4.X 2014/12/31 (AO)} % This document, when typeset, prompts for the name of a LaTeX auxiliary (.aux) file % and then processes that file, paying attention to % keys that have been cited (via \citation) % or defined (via \bibcite). % It then prints out diagnostics indicating % * any keys that were cited but never defined, % * any keys that were defined but never cited, and % * keys that were cited and defined, but not in the same order. % % BibTeX takes care of such things automatically, % so there is little use for such a test when using BibTeX. % % A separate question: will this file run under revtex4.cls? % I can see two lines in my .aux with the potential for problems: % \global \mathchardef \firstnote@num\z@ \relax % \global\NAT@numberstrue \makeatletter \def\g@bbletw@#1#2{}% \def\g@bble@ne#1{}% \let\bibdata\g@bble@ne \let\newlabel\g@bbletw@ \let\@writefile\g@bbletw@ \let\bibstyle\g@bble@ne \@tempcnta\z@ \@tempcntb\z@ \def\bibcite#1#2{% \advance\@tempcnta\@ne \expandafter\bib@one\csname bib#1\expandafter\endcsname\expandafter{\the\@tempcnta}{#1}% } \def\bib@one#1#2#3{% \@ifnotrelax#1{% \typeout{*** Tag "#3" used in more than one \string\bibitem.}% \typeout{\space\space\space\space You must correct this problem before continuing (Bailing out).}% \@@end }{% \def#1{#2}% \expandafter\def\csname bib@num#2\endcsname{#3}% }% }% \def\citation#1{% \@for\@tempa:={#1}\do{% \expandafter\cite@one\csname cite\@tempa\expandafter\endcsname\expandafter{\@tempa}% }% } \def\cite@one#1#2{% \expandafter\@ifx\expandafter{\csname cite*\endcsname#1}{% \@booleantrue\@cite@star@sw }{% \@ifnotrelax#1{% }{% \advance\@tempcntb\@ne \expandafter\cite@one@\expandafter#1\expandafter{\the\@tempcntb}{#2}% }% }% }% \expandafter\def\csname cite*\endcsname{*}% \@booleanfalse\@cite@star@sw \def\cite@one@#1#2#3{% \def#1{#2}% \expandafter\def\csname cite@num#2\endcsname{#3}% }% \def\strut{\vrule height12pt depth4pt width0pt}% \typein[\filename]{Type in file name (no extension)}% \expandafter\input\expandafter{\filename.aux}% \expandafter\def\expandafter\bibtotal\expandafter{\the\@tempcnta}% \expandafter\def\expandafter\citetotal\expandafter{\the\@tempcntb}% \def\app@undefined#1#2#3{% \expandafter\@ifnotrelax\csname#2#1\endcsname{}{% \appdef#3{#1, }% } }% \let\uncitedbibs\@empty \@tempcnta\z@ \@ifnum{\bibtotal>\@tempcnta}{% \loopwhile{% \advance\@tempcnta\@ne \expandafter\app@undefined\csname bib@num\the\@tempcnta\endcsname{cite}\uncitedbibs \@ifnum{\bibtotal>\@tempcnta}% }% }% \let\undefinedcites\@empty \@tempcnta\z@ \@ifnum{\citetotal>\@tempcnta}{% \loopwhile{% \advance\@tempcnta\@ne \expandafter\app@undefined\csname cite@num\the\@tempcnta\endcsname{bib}\undefinedcites \@ifnum{\citetotal>\@tempcnta}% }% }% \def\addit@bad#1#2{% \expandafter\@ifnotrelax\csname bib#1\endcsname{% \@ifx{#1#2}{% \addit{#1}{OK}% }{% \advance\@tempcntb\@ne \addit{#1}{\bf Out of order}% }% }{% \addit{#1}{\bf Undefined}% }% }% \def\ordertable{}% \def\table@line#1#2{% \hbox to\hsize{% \vrule \hbox to.5\hsize{\ #1\hss}% \hss\vrule\hss\strut \hbox to.5\hsize{\ #2\hss}% \vrule }% \hrule \vskip\z@skip }% \def\addit#1#2{% \appdef\ordertable{\table@line{#1}{#2}}% }% \@tempcnta\z@ \@tempcntb\z@ \@ifnum{\citetotal>\@tempcnta}{% \loopwhile{% \advance\@tempcnta\@ne \expandafter\addit@bad\csname cite@num\the\@tempcnta\expandafter\endcsname\csname bib@num\the\@tempcnta\endcsname \@ifnum{\citetotal>\@tempcnta}% }% }{}% \expandafter\def\expandafter\citesdisordered\expandafter{\the\@tempcntb}% Analysis of \filename.aux, according to rules of \emph{Physical Review}: All bibitems must occur in the bibliography in order of their first citation in the file, and all bibitems must be cited in the paper. \def\@tempa{\textbf{Bibitems that were not explicitly cited:} }% \@ifx@empty\uncitedbibs{% \appdef\@tempa{none.}% }{% \appdef\@tempa{\uncitedbibs\ \@cite@star@sw{were implicitly cited.}{please cite or remove bibitem(s).}}% }% \@tempa\expandafter\typeout\expandafter{\@tempa}\par \def\@tempa{\textbf{Citations not defined in bibliography:} }% \@ifx@empty\undefinedcites{% \appdef\@tempa{none.}% }{% \appdef\@tempa{\undefinedcites\space please add bibitem(s) or remove cite(s).}% }% \@tempa\expandafter\typeout\expandafter{\@tempa}\par \@ifnum{\citesdisordered=\z@}{% \def\@tempa{\textbf{The order of the bibitems is OK.}}% \@tempa\expandafter\typeout\expandafter{\@tempa}\par }{% \def\@tempa{% \textbf{There \@ifnum{\citesdisordered<\tw@}{was an error}{were \citesdisordered\ errors} in the order of your bibitems.}% }% \@tempa\expandafter\typeout\expandafter{\@tempa} \@ifx@empty\uncitedbibs{\@ifx@empty\undefinedcites{\true@sw}{\false@sw}}{\false@sw}% {(This is in addition to the problems noted above.) }{}% Please check the following table to see what the problems were. Status in boldface signifies that a correction is needed. \par }% \emph{NOTE: This table is a complete listing of all your citations, in order of their first occurrence: your bibitems should be in the order shown in the first column of this table. }\par \small \smallskip \hrule \table@line{\textbf{Citation key}}{\textbf{Status}}% \smallskip \hrule \ordertable \end{document} % ****** End of file reftest.tex ******