Skip to main content
All modules

TemplateConferences

CVPR 2026

CVPR 2026 paper on the official cvpr style in review mode, two-column, with the final option for camera-ready.

2026 · deadline 2025-11-13 · 8 pages + references

Loading PDF preview…

What’s inside

  • Starter files
  • main.tex711 B
    \documentclass[10pt,twocolumn,letterpaper]{article}
    
    % Use [review] for submission (line numbers); [pagenumbers] only for camera-ready proceedings.
    \usepackage[review]{cvpr}
    
    \usepackage{graphicx}
    \usepackage{amsmath,amssymb}
    \usepackage{booktabs}
    \usepackage{hyperref}
    
    \def\paperID{*****}
    \def\confName{CVPR}
    \def\confYear{2026}
    
    \begin{document}
    
    \title{Your Paper Title Here}
    
    \author{Anonymous CVPR submission\\
    \textbf{Paper ID \paperID}}
    
    \maketitle
    
    \begin{abstract}
    Your abstract here.
    \end{abstract}
    
    \section{Introduction}
    
    \section{Related Work}
    
    \section{Method}
    
    \section{Experiments}
    
    \section{Conclusion}
    
    {\small
    \bibliographystyle{ieeenat_fullname}
    \bibliography{references}
    }
    
    \end{document}
    
  • Libraries and docs
  • cvpr.sty18 KBVendored from github.com on 2026-05-26.
    % ---------------------------------------------------------------
    %
    % No guarantee is given that the format corresponds perfectly to
    % IEEE 8.5" x 11" Proceedings, but most features should be ok.
    %
    % ---------------------------------------------------------------
    % with LaTeX2e:
    % =============
    %
    % use as
    %   \documentclass[times,10pt,twocolumn]{article}
    %   \usepackage[options]{cvpr}
    %   \usepackage{times}
    %
    % "options" should be replaced by
    %  * "review" for submitting a paper for review,
    %  * "final" for the camera ready, and
    %  * "rebuttal" for the author rebuttal.
    %
    % specify references as
    %   {\small
    %   \bibliographystyle{ieee}
    %   \bibliography{...your files...}
    %   }
    % ---------------------------------------------------------------
    
    \NeedsTeXFormat{LaTeX2e}[1999/12/01]
    \ProvidesPackage{cvpr}[2026 LaTeX class for IEEE CVPR]
    
    \RequirePackage{times}    % Integrate Times for here
    \RequirePackage{xspace}
    \RequirePackage[dvipsnames]{xcolor}
    \RequirePackage{graphicx}
    \RequirePackage{amsmath}
    \RequirePackage{amssymb}
    \RequirePackage{booktabs}
    \RequirePackage[numbers,sort&compress]{natbib}
    \setlength{\bibsep}{1pt plus 1pt minus 1pt}
    
    \RequirePackage{silence}  % Suppress unwanted warnings
    \hbadness=10000 \vbadness=10000 \vfuzz=30pt \hfuzz=30pt
    \WarningFilter{latexfont}{Font shape declaration}
    \WarningFilter{latex}{Font shape}
    \WarningFilter[rebuttal]{latex}{No \author given}
    \RequirePackage{etoolbox}
    
    % Use modern caption package to allow for sub-figures etc.
    % Reproduces the original CVPR/ICCV style as closely as possible.
    \RequirePackage[format=plain,labelformat=simple,labelsep=period,font=small,compatibility=false]{caption}
    \RequirePackage[font=footnotesize,skip=3pt,subrefformat=parens]{subcaption}
    
    
    \newtoggle{cvprfinal}        % Camera-ready version
    \newtoggle{cvprrebuttal}     % Rebuttal
    \newtoggle{cvprpagenumbers}  % Force page numbers (in camera ready)
    \toggletrue{cvprfinal}
    \togglefalse{cvprrebuttal}
    \togglefalse{cvprpagenumbers}
    \DeclareOption{review}{\togglefalse{cvprfinal}\toggletrue{cvprpagenumbers}}
    \DeclareOption{rebuttal}{\togglefalse{cvprfinal}\toggletrue{cvprrebuttal}}
    \DeclareOption{pagenumbers}{\toggletrue{cvprpagenumbers}}
    \DeclareOption*{\PackageWarning{cvpr}{Unkown option `\CurrentOption'}}
    \ProcessOptions\relax
    
    % Don't warn about missing author for rebuttal
    \iftoggle{cvprrebuttal}{%
      \ActivateWarningFilters[rebuttal]
    }{}
    
    % Breaking lines for URLs in the bib
    \RequirePackage[hyphens]{url}
    \Urlmuskip=0mu plus 1mu\relax
    
    
    % ---------------------------------------------------------------
    % Inlined version of the obsolete "everyshi-2001-05-15" package.
    \newcommand{\@EveryShipout@Hook}{}
    \newcommand{\@EveryShipout@AtNextHook}{}
    \newcommand*{\EveryShipout}[1]
       {\g@addto@macro\@EveryShipout@Hook{#1}}
    \newcommand*{\AtNextShipout}[1]
       {\g@addto@macro\@EveryShipout@AtNextHook{#1}}
    \newcommand{\@EveryShipout@Shipout}{%
       \afterassignment\@EveryShipout@Test
       \global\setbox\@cclv= %
       }
    \newcommand{\@EveryShipout@Test}{%
       \ifvoid\@cclv\relax
          \aftergroup\@EveryShipout@Output
       \else
          \@EveryShipout@Output
       \fi%
       }
    \newcommand{\@EveryShipout@Output}{%
       \@EveryShipout@Hook%
       \@EveryShipout@AtNextHook%
          \gdef\@EveryShipout@AtNextHook{}%
       \@EveryShipout@Org@Shipout\box\@cclv%
       }
    \newcommand{\@EveryShipout@Org@Shipout}{}
    \newcommand*{\@EveryShipout@Init}{%
       \message{ABD: EveryShipout initializing macros}%
       \let\@EveryShipout@Org@Shipout\shipout
       \let\shipout\@EveryShipout@Shipout
       }
    \AtBeginDocument{\@EveryShipout@Init}
    % ---------------------------------------------------------------
    
    
    % ---------------------------------------------------------------
    % Inlined simplified version of the "eso-pic" package.
    \newcommand\LenToUnit[1]{#1\@gobble}
    \newcommand\AtPageUpperLeft[1]{%
      \begingroup
        \@tempdima=0pt\relax\@tempdimb=\ESO@yoffsetI\relax
        \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimb}){#1}%
      \endgroup
    }
    \newcommand\AtPageLowerLeft[1]{\AtPageUpperLeft{%
      \put(0,\LenToUnit{-\paperheight}){#1}}}
    \newcommand\AtPageCenter[1]{\AtPageUpperLeft{%
      \put(\LenToUnit{.5\paperwidth},\LenToUnit{-.5\paperheight}){#1}}%
    }
    \newcommand\AtTextUpperLeft[1]{%
      \begingroup
        \setlength\@tempdima{1in}%
        \ifodd\c@page%
          \advance\@tempdima\oddsidemargin%
        \else%
          \advance\@tempdima\evensidemargin%
        \fi%
        \@tempdimb=\ESO@yoffsetI\relax\advance\@tempdimb-1in\relax%
        \advance\@tempdimb-\topmargin%
        \advance\@tempdimb-\headheight\advance\@tempdimb-\headsep%
        \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimb}){#1}%
      \endgroup
    }
    \newcommand\AtTextLowerLeft[1]{\AtTextUpperLeft{%
      \put(0,\LenToUnit{-\textheight}){#1}}}
    \newcommand\AtTextCenter[1]{\AtTextUpperLeft{%
      \put(\LenToUnit{.5\textwidth},\LenToUnit{-.5\textheight}){#1}}}
    \newcommand{\ESO@HookI}{} \newcommand{\ESO@HookII}{}
    \newcommand{\ESO@HookIII}{}
    \newcommand{\AddToShipoutPicture}{%
      \@ifstar{\g@addto@macro\ESO@HookII}{\g@addto@macro\ESO@HookI}}
    \newcommand{\ClearShipoutPicture}{\global\let\ESO@HookI\@empty}
    \newcommand\ESO@isMEMOIR[1]{}
    \@ifclassloaded{memoir}{\renewcommand\ESO@isMEMOIR[1]{#1}}{}
    \newcommand{\@ShipoutPicture}{%
      \bgroup
        \@tempswafalse%
        \ifx\ESO@HookI\@empty\else\@tempswatrue\fi%
        \ifx\ESO@HookII\@empty\else\@tempswatrue\fi%
        \ifx\ESO@HookIII\@empty\else\@tempswatrue\fi%
        \if@tempswa%
          \@tempdima=1in\@tempdimb=-\@tempdima%
          \advance\@tempdimb\ESO@yoffsetI%
          \ESO@isMEMOIR{%
            \advance\@tempdima\trimedge%
            \advance\@tempdima\paperwidth%
            \advance\@tempdima-\stockwidth%
            \if@twoside\ifodd\c@page\else%
              \advance\@tempdima-2\trimedge%
              \advance\@tempdima-\paperwidth%
              \advance\@tempdima\stockwidth%
            \fi\fi%
            \advance\@tempdimb\trimtop}%
          \unitlength=1pt%
          \global\setbox\@cclv\vbox{%
            \vbox{\let\protect\relax
              \pictur@(0,0)(\strip@pt\@tempdima,\strip@pt\@tempdimb)%
                \ESO@HookIII\ESO@HookI\ESO@HookII%
                \global\let\ESO@HookII\@empty%
              \endpicture}%
              \nointerlineskip%
            \box\@cclv}%
        \fi
      \egroup
    }
    \EveryShipout{\@ShipoutPicture}
    \RequirePackage{keyval}
    \newif\ifESO@dvips\ESO@dvipsfalse
    \newif\ifESO@texcoord\ESO@texcoordfalse
    
    \AtBeginDocument{%
      \IfFileExists{color.sty}
      {%
        \RequirePackage{color}
        \let\ESO@color=\color\let\ESO@colorbox=\colorbox
        \let\ESO@fcolorbox=\fcolorbox
      }{}
      \@ifundefined{Gin@driver}{}%
      {%
        \ifx\Gin@driver\@empty\else%
          \filename@parse{\Gin@driver}\def\reserved@a{dvips}%
          \ifx\filename@base\reserved@a\ESO@dvipstrue\fi%
        \fi
      }%
      \ifx\pdfoutput\undefined\else
        \ifx\pdfoutput\relax\else
          \ifcase\pdfoutput\else
            \ESO@dvipsfalse%
          \fi
        \fi
      \fi
    }
    \ifESO@texcoord
      \def\ESO@yoffsetI{0pt}\def\ESO@yoffsetII{-\paperheight}
    \else
      \def\ESO@yoffsetI{\paperheight}\def\ESO@yoffsetII{0pt}
    \fi
    % ---------------------------------------------------------------
    
    
    \typeout{CVPR 8.5 x 11-Inch Proceedings Style `cvpr.sty'.}
    
    % ten point helvetica bold required for captions
    % eleven point times bold required for second-order headings
    % in some sites the name of the fonts may differ,
    % change the name here:
    \font\cvprtenhv  = phvb at 8pt % *** IF THIS FAILS, SEE cvpr.sty ***
    \font\elvbf  = ptmb scaled 1100
    \font\tenbf  = ptmb scaled 1000
    
    % If the above lines give an error message, try to comment them and
    % uncomment these:
    %\font\cvprtenhv  = phvb7t at 8pt
    %\font\elvbf  = ptmb7t scaled 1100
    %\font\tenbf  = ptmb7t scaled 1000
    
    % set dimensions of columns, gap between columns, and paragraph indent
    \setlength{\textheight}{8.875in}
    \setlength{\textwidth}{6.875in}
    \setlength{\columnsep}{0.3125in}
    \setlength{\topmargin}{0in}
    \setlength{\headheight}{0in}
    \setlength{\headsep}{0in}
    \setlength{\parindent}{1pc}
    \setlength{\oddsidemargin}{-0.1875in}
    \setlength{\evensidemargin}{-0.1875in}
    
    
    % Suppress page numbers when the appropriate option is given
    \iftoggle{cvprpagenumbers}{}{%
      \pagestyle{empty}
    }
    
    \AtBeginDocument{%
      % Print an error if document class other than article is used
      \@ifclassloaded{article}{}{%
        \PackageError{cvpr}{Package only meant to be used with document class `article'}{Change document class to `article'.}
      }
      % Print a warning if incorrect options for article are specified
      \@ifclasswith{article}{10pt}{}{%
        \PackageWarningNoLine{cvpr}{Incorrect font size specified - CVPR requires 10-point fonts. Please load document class `article' with `10pt' option}
      }
      \@ifclasswith{article}{twocolumn}{}{%
        \PackageWarningNoLine{cvpr}{Single column document - CVPR requires papers to have two-column layout. Please load document class `article' with `twocolumn' option}
      }
      \@ifclasswith{article}{letterpaper}{}{%
        \PackageWarningNoLine{cvpr}{Incorrect paper size - CVPR uses paper size `letter'. Please load document class `article' with `letterpaper' option}
      }
      % Print a warning if hyperref is not loaded and/or if the pagebackref option is missing
      \iftoggle{cvprfinal}{%
        \@ifpackageloaded{hyperref}{}{%
          \PackageWarningNoLine{cvpr}{Package `hyperref' is not loaded, but highly recommended for camera-ready version}
        }
      }{%
        \@ifpackageloaded{hyperref}{
          \@ifpackagewith{hyperref}{pagebackref}{}{
            \PackageWarningNoLine{cvpr}{Package `hyperref' is not loaded with option `pagebackref', which is strongly recommended for review version}
          }
        }{%
          \PackageWarningNoLine{cvpr}{Package `hyperref' is not loaded, but strongly recommended for review version}
        }
      }
    }
    
    \def\@maketitle{
       \newpage
       \null
       \iftoggle{cvprrebuttal}{\vspace*{-.3in}}{\vskip .375in}
       \begin{center}
          % smaller title font only for rebuttal
          \iftoggle{cvprrebuttal}{{\large \bf \@title \par}}{{\Large \bf \@title \par}}
          % additional two empty lines at the end of the title
          \iftoggle{cvprrebuttal}{\vspace*{-22pt}}{\vspace*{24pt}}{
            \large
            \lineskip .5em
            \begin{tabular}[t]{c}
              \iftoggle{cvprfinal}{
                \@author
              }{
                \iftoggle{cvprrebuttal}{}{
                  Anonymous \confName~submission\\
                  \vspace*{1pt}\\
                  Paper ID \paperID
                }
              }
            \end{tabular}
            \par
          }
          % additional small space at the end of the author name
          \vskip .5em
          % additional empty line at the end of the title block
          \vspace*{12pt}
       \end{center}
    }
    
    \def\abstract{%
       % Suppress page numbers when the appropriate option is given
       \iftoggle{cvprpagenumbers}{}{%
         \thispagestyle{empty}
       }
       \centerline{\large\bf Abstract}%
       \vspace*{12pt}\noindent%
       \it\ignorespaces%
    }
    
    \def\endabstract{%
       % additional empty line at the end of the abstract
       \vspace*{12pt}
       }
    
    \def\affiliation#1{\gdef\@affiliation{#1}} \gdef\@affiliation{}
    
    % correct heading spacing and type
    \def\cvprsection{\@startsection {section}{1}{\z@}
       {-10pt plus -2pt minus -2pt}{7pt} {\large\bf}}
    \def\cvprssect#1{\cvprsection*{#1}}
    \def\cvprsect#1{\cvprsection{\texorpdfstring{\hskip -1em.~}{}#1}}
    \def\section{\@ifstar\cvprssect\cvprsect}
    
    \def\cvprsubsection{\@startsection {subsection}{2}{\z@}
       {-8pt plus -2pt minus -2pt}{5pt} {\elvbf}}
    \def\cvprssubsect#1{\cvprsubsection*{#1}}
    \def\cvprsubsect#1{\cvprsubsection{\texorpdfstring{\hskip -1em.~}{}#1}}
    \def\subsection{\@ifstar\cvprssubsect\cvprsubsect}
    
    \def\cvprsubsubsection{\@startsection {subsubsection}{3}{\z@}
       {-6pt plus -2pt minus -2pt}{3pt} {\tenbf}}
    \def\cvprssubsubsect#1{\cvprsubsubsection*{#1}}
    \def\cvprsubsubsect#1{\cvprsubsubsection{\texorpdfstring{\hskip -1em.~}{}#1}}
    \def\subsubsection{\@ifstar\cvprssubsubsect\cvprsubsubsect}
    
    %% --------- Page background marks: Ruler and confidentiality (only for review and rebuttal)
    \iftoggle{cvprfinal}{
      % In review and rebuttal mode, we use the "lineno" package for numbering lines.
      % When switching to a different mode, the "\@LN" macro may remain in cached .aux files,
      % leading to build errors (https://github.com/cvpr-org/author-kit/issues/49).
      % Defining the macro as empty fixes that (https://tex.stackexchange.com/a/125779).
      \makeatletter
      \providecommand{\@LN}[2]{}
      \makeatother
    }{
      % ----- define vruler
      \makeatletter
      \newbox\cvprrulerbox
      \newcount\cvprrulercount
      \newdimen\cvprruleroffset
      \newdimen\cv@lineheight
      \newdimen\cv@boxheight
      \newbox\cv@tmpbox
      \newcount\cv@refno
      \newcount\cv@tot
      % NUMBER with left flushed zeros  \fillzeros[<WIDTH>]<NUMBER>
      \newcount\cv@tmpc@ \newcount\cv@tmpc
      \def\fillzeros[#1]#2{\cv@tmpc@=#2\relax\ifnum\cv@tmpc@<0\cv@tmpc@=-\cv@tmpc@\fi
      \cv@tmpc=1 %
      \loop\ifnum\cv@tmpc@<10 \else \divide\cv@tmpc@ by 10 \advance\cv@tmpc by 1 \fi
        \ifnum\cv@tmpc@=10\relax\cv@tmpc@=11\relax\fi \ifnum\cv@tmpc@>10 \repeat
      \ifnum#2<0\advance\cv@tmpc1\relax-\fi
      \loop\ifnum\cv@tmpc<#1\relax0\advance\cv@tmpc1\relax\fi \ifnum\cv@tmpc<#1 \repeat
      \cv@tmpc@=#2\relax\ifnum\cv@tmpc@<0\cv@tmpc@=-\cv@tmpc@\fi \relax\the\cv@tmpc@}%
      \makeatother
      % ----- end of vruler
    
      %% Define linenumber setup
      \RequirePackage[switch,mathlines]{lineno}
    
      % Line numbers in CVPR blue using font from \cvprtenhv
      \renewcommand\linenumberfont{\cvprtenhv\color[rgb]{.5,.5,1}}
    
      \renewcommand\thelinenumber{\fillzeros[3]{\arabic{linenumber}}}
    
      \setlength{\linenumbersep}{.75cm}
    
      % Bug: An equation with $$ ... $$ isn't numbered, nor is the previous line.
    
      % Patch amsmath commands so that the previous line and the equation itself
      % are numbered. Bug: multiline has an extra line number.
      % https://tex.stackexchange.com/questions/461186/how-to-use-lineno-with-amsmath-align
      \RequirePackage{etoolbox} %% <- for \pretocmd, \apptocmd and \patchcmd
    
      \newcommand*\linenomathpatch[1]{%
        \expandafter\pretocmd\csname #1\endcsname {\linenomath}{}{}%
        \expandafter\pretocmd\csname #1*\endcsname {\linenomath}{}{}%
        \expandafter\apptocmd\csname end#1\endcsname {\endlinenomath}{}{}%
        \expandafter\apptocmd\csname end#1*\endcsname {\endlinenomath}{}{}%
      }
      \newcommand*\linenomathpatchAMS[1]{%
        \expandafter\pretocmd\csname #1\endcsname {\linenomathAMS}{}{}%
        \expandafter\pretocmd\csname #1*\endcsname {\linenomathAMS}{}{}%
        \expandafter\apptocmd\csname end#1\endcsname {\endlinenomath}{}{}%
        \expandafter\apptocmd\csname end#1*\endcsname {\endlinenomath}{}{}%
      }
    
      %% Definition of \linenomathAMS depends on whether the mathlines option is provided
      \expandafter\ifx\linenomath\linenomathWithnumbers
      \let\linenomathAMS\linenomathWithnumbers
      %% The following line gets rid of an extra line numbers at the bottom:
      \patchcmd\linenomathAMS{\advance\postdisplaypenalty\linenopenalty}{}{}{}
      \else
      \let\linenomathAMS\linenomathNonumbers
      \fi
    
      % Add the numbers
      \linenumbers
      \AtBeginDocument{%
        \linenomathpatch{equation}%
        \linenomathpatchAMS{gather}%
        \linenomathpatchAMS{multline}%
        \linenomathpatchAMS{align}%
        \linenomathpatchAMS{alignat}%
        \linenomathpatchAMS{flalign}%
      }
    
      % \makevruler[<SCALE>][<INITIAL_COUNT>][<STEP>][<DIGITS>][<HEIGHT>]
      \def\cvprruler#1{\makevruler[12pt][#1][1][3][0.993\textheight]\usebox{\cvprrulerbox}}
      \AddToShipoutPicture{%
        \color[rgb]{.5,.5,1}
    
        \def\pid{\parbox{1in}{\begin{center}\bf\sf{\small \confName}\\\small \#\paperID\end{center}}}
        \AtTextUpperLeft{%paperID in corners
          \put(\LenToUnit{-65pt},\LenToUnit{45pt}){\pid}
          \put(\LenToUnit{\textwidth-12pt},\LenToUnit{45pt}){\pid}
        }
        \AtTextUpperLeft{%confidential
          \put(0,\LenToUnit{1cm}){\parbox{\textwidth}{\centering\cvprtenhv
          \confName~\confYear~Submission \#\paperID. CONFIDENTIAL REVIEW COPY.  DO NOT DISTRIBUTE.}}
        }
      }
    } % end of not cvprfinal
    
    %%% Make figure placement a little more predictable.
    % We trust the user to move figures if this results
    % in ugliness.
    % Minimize bad page breaks at figures
    \renewcommand{\textfraction}{0.01}
    \renewcommand{\floatpagefraction}{0.99}
    \renewcommand{\topfraction}{0.99}
    \renewcommand{\bottomfraction}{0.99}
    \renewcommand{\dblfloatpagefraction}{0.99}
    \renewcommand{\dbltopfraction}{0.99}
    \setcounter{totalnumber}{99}
    \setcounter{topnumber}{99}
    \setcounter{bottomnumber}{99}
    
    % Add a period to the end of an abbreviation unless there's one
    % already, then \xspace.
    \makeatletter
    \DeclareRobustCommand\onedot{\futurelet\@let@token\@onedot}
    \def\@onedot{\ifx\@let@token.\else.\null\fi\xspace}
    
    \def\eg{\emph{e.g}\onedot} \def\Eg{\emph{E.g}\onedot}
    \def\ie{\emph{i.e}\onedot} \def\Ie{\emph{I.e}\onedot}
    \def\cf{\emph{cf}\onedot} \def\Cf{\emph{Cf}\onedot}
    \def\etc{\emph{etc}\onedot} \def\vs{\emph{vs}\onedot}
    \def\wrt{w.r.t\onedot} \def\dof{d.o.f\onedot}
    \def\iid{i.i.d\onedot} \def\wolog{w.l.o.g\onedot}
    \def\etal{\emph{et al}\onedot}
    \makeatother
    
    % ---------------------------------------------------------------
    
    %% redefine the \title command so that a variable name is saved in \thetitle, and provides the \maketitlesupplementary command
    \let\titleold\title
    \renewcommand{\title}[1]{\titleold{#1}\newcommand{\thetitle}{#1}}
    \def\maketitlesupplementary
       {
       \newpage
           \twocolumn[
            \centering
            \Large
            \textbf{\thetitle}\\
            \vspace{0.5em}Supplementary Material \\
            \vspace{1.0em}
           ] %< twocolumn
       }
    
    % ---------------------------------------------------------------
    
    %% Support for easy cross-referencing (e.g. \cref{sec:intro}
    % configured with \AtEndPreamble as it needs to be called after hyperref
    \AtEndPreamble{
        \usepackage[capitalize]{cleveref}
        \crefname{section}{Sec.}{Secs.}
        \Crefname{section}{Section}{Sections}
        \Crefname{table}{Table}{Tables}
        \crefname{table}{Tab.}{Tabs.}
    }
    
    % ---------------------------------------------------------------
    
    %% More compact compact itemize/enumeration (e.g. list contributions)
    \RequirePackage[shortlabels,inline]{enumitem}
    \setlist[itemize]{noitemsep,leftmargin=*,topsep=0em}
    \setlist[enumerate]{noitemsep,leftmargin=*,topsep=0em}
    
  • ieeenat_fullname.bst26 KBVendored from github.com on 2026-05-26.
    %% File: `abbrvnat.bst'
    %% A modification of `abbrv.bst' for use with natbib package 
    %%
    %% Copyright 1993-2007 Patrick W Daly
    %% Max-Planck-Institut f\"ur Sonnensystemforschung
    %% Max-Planck-Str. 2
    %% D-37191 Katlenburg-Lindau
    %% Germany
    %% E-mail: daly@mps.mpg.de
    %%
    %% This program can be redistributed and/or modified under the terms
    %% of the LaTeX Project Public License Distributed from CTAN
    %% archives in directory macros/latex/base/lppl.txt; either
    %% version 1 of the License, or any later version.
    %%
     % Version and source file information:
     % \ProvidesFile{natbst.mbs}[2007/11/26 1.93 (PWD)]
     %
     % BibTeX `plainnat' family
     %   version 0.99b for BibTeX versions 0.99a or later,
     %   for LaTeX versions 2.09 and 2e.
     %
     % For use with the `natbib.sty' package; emulates the corresponding
     %   member of the `plain' family, but with author-year citations.
     %
     % With version 6.0 of `natbib.sty', it may also be used for numerical
     %   citations, while retaining the commands \citeauthor, \citefullauthor,
     %   and \citeyear to print the corresponding information.
     %
     % For version 7.0 of `natbib.sty', the KEY field replaces missing
     %   authors/editors, and the date is left blank in \bibitem.
     %
     % Includes field EID for the sequence/citation number of electronic journals
     %  which is used instead of page numbers.
     %
     % Includes fields ISBN and ISSN.
     %
     % Includes field URL for Internet addresses.
     %
     % Includes field DOI for Digital Object Idenfifiers.
     %
     % Works best with the url.sty package of Donald Arseneau.
     %
     % Works with identical authors and year are further sorted by
     %   citation key, to preserve any natural sequence.
     %
    ENTRY
      { address
        author
        booktitle
        chapter
        doi
        eid
        edition
        editor
        howpublished
        institution
        isbn
        issn
        journal
        key
        month
        note
        number
        organization
        pages
        publisher
        school
        series
        title
        type
        url
        volume
        year
      }
      {}
      { label extra.label sort.label short.list }
    
    INTEGERS { output.state before.all mid.sentence after.sentence after.block }
    
    FUNCTION {init.state.consts}
    { #0 'before.all :=
      #1 'mid.sentence :=
      #2 'after.sentence :=
      #3 'after.block :=
    }
    
    STRINGS { s t }
    
    FUNCTION {output.nonnull}
    { 's :=
      output.state mid.sentence =
        { ", " * write$ }
        { output.state after.block =
            { add.period$ write$
              newline$
              "\newblock " write$
            }
            { output.state before.all =
                'write$
                { add.period$ " " * write$ }
              if$
            }
          if$
          mid.sentence 'output.state :=
        }
      if$
      s
    }
    
    FUNCTION {output}
    { duplicate$ empty$
        'pop$
        'output.nonnull
      if$
    }
    
    FUNCTION {output.check}
    { 't :=
      duplicate$ empty$
        { pop$ "empty " t * " in " * cite$ * warning$ }
        'output.nonnull
      if$
    }
    
    FUNCTION {fin.entry}
    { add.period$
      write$
      newline$
    }
    
    FUNCTION {new.block}
    { output.state before.all =
        'skip$
        { after.block 'output.state := }
      if$
    }
    
    FUNCTION {new.sentence}
    { output.state after.block =
        'skip$
        { output.state before.all =
            'skip$
            { after.sentence 'output.state := }
          if$
        }
      if$
    }
    
    FUNCTION {not}
    {   { #0 }
        { #1 }
      if$
    }
    
    FUNCTION {and}
    {   'skip$
        { pop$ #0 }
      if$
    }
    
    FUNCTION {or}
    {   { pop$ #1 }
        'skip$
      if$
    }
    
    FUNCTION {new.block.checka}
    { empty$
        'skip$
        'new.block
      if$
    }
    
    FUNCTION {new.block.checkb}
    { empty$
      swap$ empty$
      and
        'skip$
        'new.block
      if$
    }
    
    FUNCTION {new.sentence.checka}
    { empty$
        'skip$
        'new.sentence
      if$
    }
    
    FUNCTION {new.sentence.checkb}
    { empty$
      swap$ empty$
      and
        'skip$
        'new.sentence
      if$
    }
    
    FUNCTION {field.or.null}
    { duplicate$ empty$
        { pop$ "" }
        'skip$
      if$
    }
    
    FUNCTION {emphasize}
    { duplicate$ empty$
        { pop$ "" }
        { "\emph{" swap$ * "}" * }
      if$
    }
    
    INTEGERS { nameptr namesleft numnames }
    
    FUNCTION {format.names}
    { 's :=
      #1 'nameptr :=
      s num.names$ 'numnames :=
      numnames 'namesleft :=
        { namesleft #0 > }
        % Formerly { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
        { s nameptr "{ff }{vv }{ll}{, jj}" format.name$ 't :=
          nameptr #1 >
            { namesleft #1 >
                { ", " * t * }
                { numnames #2 >
                    { "," * }
                    'skip$
                  if$
                  t "others" =
                    { " et~al." * }
                    { " and " * t * }
                  if$
                }
              if$
            }
            't
          if$
          nameptr #1 + 'nameptr :=
          namesleft #1 - 'namesleft :=
        }
      while$
    }
    
    FUNCTION {format.key}
    { empty$
        { key field.or.null }
        { "" }
      if$
    }
    
    FUNCTION {format.authors}
    { author empty$
        { "" }
        { author format.names }
      if$
    }
    
    FUNCTION {format.editors}
    { editor empty$
        { "" }
        { editor format.names
          editor num.names$ #1 >
            { ", editors" * }
            { ", editor" * }
          if$
        }
      if$
    }
    
    FUNCTION {format.isbn}
    { isbn empty$
        { "" }
    %    { new.block "ISBN " isbn * }
        { "" }
      if$
    }
    
    FUNCTION {format.issn}
    { issn empty$
        { "" }
    %    { new.block "ISSN " issn * }
        { "" }
      if$
    }
    
    FUNCTION {format.url}
    { url empty$
        { "" }
    %    { new.block "URL \url{" url * "}" * }
        { "" }
      if$
    }
    
    FUNCTION {format.doi}
    { doi empty$
        { "" }
    %    { new.block "\doi{" doi * "}" * }
        { "" }
      if$
    }
    
    FUNCTION {format.title}
    { title empty$
        { "" }
        { title "t" change.case$ }
      if$
    }
    
    FUNCTION {format.full.names}
    {'s :=
      #1 'nameptr :=
      s num.names$ 'numnames :=
      numnames 'namesleft :=
        { namesleft #0 > }
        { s nameptr
          "{vv~}{ll}" format.name$ 't :=
          nameptr #1 >
            {
              namesleft #1 >
                { ", " * t * }
                {
                  numnames #2 >
                    { "," * }
                    'skip$
                  if$
                  t "others" =
                    { " et~al." * }
                    { " and " * t * }
                  if$
                }
              if$
            }
            't
          if$
          nameptr #1 + 'nameptr :=
          namesleft #1 - 'namesleft :=
        }
      while$
    }
    
    FUNCTION {author.editor.full}
    { author empty$
        { editor empty$
            { "" }
            { editor format.full.names }
          if$
        }
        { author format.full.names }
      if$
    }
    
    FUNCTION {author.full}
    { author empty$
        { "" }
        { author format.full.names }
      if$
    }
    
    FUNCTION {editor.full}
    { editor empty$
        { "" }
        { editor format.full.names }
      if$
    }
    
    FUNCTION {make.full.names}
    { type$ "book" =
      type$ "inbook" =
      or
        'author.editor.full
        { type$ "proceedings" =
            'editor.full
            'author.full
          if$
        }
      if$
    }
    
    FUNCTION {output.bibitem}
    { newline$
      "\bibitem[" write$
      label write$
      ")" make.full.names duplicate$ short.list =
         { pop$ }
         { * }
       if$
      "]{" * write$
      cite$ write$
      "}" write$
      newline$
      ""
      before.all 'output.state :=
    }
    
    FUNCTION {n.dashify}
    { 't :=
      ""
        { t empty$ not }
        { t #1 #1 substring$ "-" =
            { t #1 #2 substring$ "--" = not
                { "--" *
                  t #2 global.max$ substring$ 't :=
                }
                {   { t #1 #1 substring$ "-" = }
                    { "-" *
                      t #2 global.max$ substring$ 't :=
                    }
                  while$
                }
              if$
            }
            { t #1 #1 substring$ *
              t #2 global.max$ substring$ 't :=
            }
          if$
        }
      while$
    }
    
    FUNCTION {format.date}
    { year duplicate$ empty$
        { "empty year in " cite$ * warning$
           pop$ "" }
        'skip$
      if$
    %% CR: Leave out months.
    %  month empty$
    %    'skip$
    %    { month
    %      " " * swap$ *
    %    }
    %  if$
      extra.label *
    }
    
    FUNCTION {format.btitle}
    { title emphasize
    }
    
    FUNCTION {tie.or.space.connect}
    { duplicate$ text.length$ #3 <
        { "~" }
        { " " }
      if$
      swap$ * *
    }
    
    FUNCTION {either.or.check}
    { empty$
        'pop$
        { "can't use both " swap$ * " fields in " * cite$ * warning$ }
      if$
    }
    
    FUNCTION {format.bvolume}
    { volume empty$
        { "" }
    %% CR: Don't show "volume 1234 of LNCS" etc.
    %    { "volume" volume tie.or.space.connect
    %      series empty$
    %        'skip$
    %        { " of " * series emphasize * }
    %      if$
    %      "volume and number" number either.or.check
    %    }
        { "" }
      if$
    }
    
    FUNCTION {format.number.series}
    { volume empty$
        { number empty$
    %% CR: Leave out series information.
    %        { series field.or.null }
            { "" }
            { output.state mid.sentence =
                { "number" }
                { "Number" }
              if$
              number tie.or.space.connect
              series empty$
                { "there's a number but no series in " cite$ * warning$ }
                { " in " * series * }
              if$
            }
          if$
        }
        { "" }
      if$
    }
    
    FUNCTION {format.edition}
    { edition empty$
        { "" }
        { output.state mid.sentence =
            { edition "l" change.case$ " edition" * }
            { edition "t" change.case$ " edition" * }
          if$
        }
      if$
    }
    
    INTEGERS { multiresult }
    
    FUNCTION {multi.page.check}
    { 't :=
      #0 'multiresult :=
        { multiresult not
          t empty$ not
          and
        }
        { t #1 #1 substring$
          duplicate$ "-" =
          swap$ duplicate$ "," =
          swap$ "+" =
          or or
            { #1 'multiresult := }
            { t #2 global.max$ substring$ 't := }
          if$
        }
      while$
      multiresult
    }
    
    FUNCTION {format.pages}
    { pages empty$
        { "" }
        { pages multi.page.check
            { "pages" pages n.dashify tie.or.space.connect }
            { "page" pages tie.or.space.connect }
          if$
        }
      if$
    }
    
    FUNCTION {format.eid}
    { eid empty$
        { "" }
        { "art." eid tie.or.space.connect }
      if$
    }
    
    FUNCTION {format.vol.num.pages}
    { volume field.or.null
      number empty$
        'skip$
        { "\penalty0 (" number * ")" * *
          volume empty$
            { "there's a number but no volume in " cite$ * warning$ }
            'skip$
          if$
        }
      if$
      pages empty$
        'skip$
        { duplicate$ empty$
            { pop$ format.pages }
            { ":\penalty0 " * pages n.dashify * }
          if$
        }
      if$
    }
    
    FUNCTION {format.vol.num.eid}
    { volume field.or.null
      number empty$
        'skip$
        { "\penalty0 (" number * ")" * *
          volume empty$
            { "there's a number but no volume in " cite$ * warning$ }
            'skip$
          if$
        }
      if$
      eid empty$
        'skip$
        { duplicate$ empty$
            { pop$ format.eid }
            { ":\penalty0 " * eid * }
          if$
        }
      if$
    }
    
    FUNCTION {format.chapter.pages}
    { chapter empty$
        'format.pages
        { type empty$
            { "chapter" }
            { type "l" change.case$ }
          if$
          chapter tie.or.space.connect
          pages empty$
            'skip$
            { ", " * format.pages * }
          if$
        }
      if$
    }
    
    FUNCTION {format.in.ed.booktitle}
    { booktitle empty$
        { "" }
    %% CR: Leave out editors even if the information is available.
    %    { editor empty$
    %        { "In " booktitle emphasize * }
    %        { "In " format.editors * ", " * booktitle emphasize * }
    %      if$
    %    }
        { "In " booktitle emphasize * }
      if$
    }
    
    FUNCTION {empty.misc.check}
    { author empty$ title empty$ howpublished empty$
      month empty$ year empty$ note empty$
      and and and and and
      key empty$ not and
        { "all relevant fields are empty in " cite$ * warning$ }
        'skip$
      if$
    }
    
    FUNCTION {format.thesis.type}
    { type empty$
        'skip$
        { pop$
          type "t" change.case$
        }
      if$
    }
    
    FUNCTION {format.tr.number}
    { type empty$
        { "Technical Report" }
        'type
      if$
      number empty$
        { "t" change.case$ }
        { number tie.or.space.connect }
      if$
    }
    
    FUNCTION {format.article.crossref}
    { key empty$
        { journal empty$
            { "need key or journal for " cite$ * " to crossref " * crossref *
              warning$
              ""
            }
            { "In \emph{" journal * "}" * }
          if$
        }
        { "In " }
      if$
      " \citet{" * crossref * "}" *
    }
    
    FUNCTION {format.book.crossref}
    { volume empty$
        { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
          "In "
        }
        { "Volume" volume tie.or.space.connect
          " of " *
        }
      if$
      editor empty$
      editor field.or.null author field.or.null =
      or
        { key empty$
            { series empty$
                { "need editor, key, or series for " cite$ * " to crossref " *
                  crossref * warning$
                  "" *
                }
                { "\emph{" * series * "}" * }
              if$
            }
            'skip$
          if$
        }
        'skip$
      if$
      " \citet{" * crossref * "}" *
    }
    
    FUNCTION {format.incoll.inproc.crossref}
    { editor empty$
      editor field.or.null author field.or.null =
      or
        { key empty$
            { booktitle empty$
                { "need editor, key, or booktitle for " cite$ * " to crossref " *
                  crossref * warning$
                  ""
                }
                { "In \emph{" booktitle * "}" * }
              if$
            }
            { "In " }
          if$
        }
        { "In " }
      if$
      " \citet{" * crossref * "}" *
    }
    
    FUNCTION {article}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      new.block
      format.title "title" output.check
      new.block
      crossref missing$
        { journal emphasize "journal" output.check
          eid empty$
            { format.vol.num.pages output }
            { format.vol.num.eid output }
          if$
          format.date "year" output.check
        }
        { format.article.crossref output.nonnull
          eid empty$
            { format.pages output }
            { format.eid output }
          if$
        }
      if$
      format.issn output
      format.doi output
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {book}
    { output.bibitem
      author empty$
        { format.editors "author and editor" output.check
          editor format.key output
        }
        { format.authors output.nonnull
          crossref missing$
            { "author and editor" editor either.or.check }
            'skip$
          if$
        }
      if$
      new.block
      format.btitle "title" output.check
      crossref missing$
        { format.bvolume output
          new.block
          format.number.series output
          new.sentence
          publisher "publisher" output.check
          address output
        }
        { new.block
          format.book.crossref output.nonnull
        }
      if$
      format.edition output
      format.date "year" output.check
      format.isbn output
      format.doi output
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {booklet}
    { output.bibitem
      format.authors output
      author format.key output
      new.block
      format.title "title" output.check
      howpublished address new.block.checkb
      howpublished output
      address output
      format.date output
      format.isbn output
      format.doi output
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {inbook}
    { output.bibitem
      author empty$
        { format.editors "author and editor" output.check
          editor format.key output
        }
        { format.authors output.nonnull
          crossref missing$
            { "author and editor" editor either.or.check }
            'skip$
          if$
        }
      if$
      new.block
      format.btitle "title" output.check
      crossref missing$
        { format.bvolume output
          format.chapter.pages "chapter and pages" output.check
          new.block
          format.number.series output
          new.sentence
          publisher "publisher" output.check
          address output
        }
        { format.chapter.pages "chapter and pages" output.check
          new.block
          format.book.crossref output.nonnull
        }
      if$
      format.edition output
      format.date "year" output.check
      format.isbn output
      format.doi output
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {incollection}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      new.block
      format.title "title" output.check
      new.block
      crossref missing$
        { format.in.ed.booktitle "booktitle" output.check
          format.bvolume output
          format.number.series output
          format.chapter.pages output
          new.sentence
          publisher "publisher" output.check
          address output
          format.edition output
          format.date "year" output.check
        }
        { format.incoll.inproc.crossref output.nonnull
          format.chapter.pages output
        }
      if$
      format.isbn output
      format.doi output
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {inproceedings}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      new.block
      format.title "title" output.check
      new.block
      crossref missing$
        { format.in.ed.booktitle "booktitle" output.check
          format.bvolume output
          format.number.series output
          format.pages output
          address empty$
            { organization publisher new.sentence.checkb
              organization output
              publisher output
              format.date "year" output.check
            }
            { address output.nonnull
              format.date "year" output.check
              new.sentence
              organization output
              publisher output
            }
          if$
        }
        { format.incoll.inproc.crossref output.nonnull
          format.pages output
        }
      if$
      format.isbn output
      format.doi output
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {conference} { inproceedings }
    
    FUNCTION {manual}
    { output.bibitem
      format.authors output
      author format.key output
      new.block
      format.btitle "title" output.check
      organization address new.block.checkb
      organization output
      address output
      format.edition output
      format.date output
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {mastersthesis}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      new.block
      format.title "title" output.check
      new.block
      "Master's thesis" format.thesis.type output.nonnull
      school "school" output.check
      address output
      format.date "year" output.check
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {misc}
    { output.bibitem
      format.authors output
      author format.key output
      title howpublished new.block.checkb
      format.title output
      howpublished new.block.checka
      howpublished output
      format.date output
      format.issn output
      format.url output
      new.block
      note output
      fin.entry
      empty.misc.check
    }
    
    FUNCTION {phdthesis}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      new.block
      format.btitle "title" output.check
      new.block
      "PhD thesis" format.thesis.type output.nonnull
      school "school" output.check
      address output
      format.date "year" output.check
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {proceedings}
    { output.bibitem
      format.editors output
      editor format.key output
      new.block
      format.btitle "title" output.check
      format.bvolume output
      format.number.series output
      address output
      format.date "year" output.check
      new.sentence
      organization output
      publisher output
      format.isbn output
      format.doi output
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {techreport}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      new.block
      format.title "title" output.check
      new.block
      format.tr.number output.nonnull
      institution "institution" output.check
      address output
      format.date "year" output.check
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {unpublished}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      new.block
      format.title "title" output.check
      new.block
      note "note" output.check
      format.date output
      format.url output
      fin.entry
    }
    
    FUNCTION {default.type} { misc }
    
    
    MACRO {jan} {"Jan."}
    
    MACRO {feb} {"Feb."}
    
    MACRO {mar} {"Mar."}
    
    MACRO {apr} {"Apr."}
    
    MACRO {may} {"May"}
    
    MACRO {jun} {"June"}
    
    MACRO {jul} {"July"}
    
    MACRO {aug} {"Aug."}
    
    MACRO {sep} {"Sept."}
    
    MACRO {oct} {"Oct."}
    
    MACRO {nov} {"Nov."}
    
    MACRO {dec} {"Dec."}
    
    
    
    MACRO {acmcs} {"ACM Comput. Surv."}
    
    MACRO {acta} {"Acta Inf."}
    
    MACRO {cacm} {"Commun. ACM"}
    
    MACRO {ibmjrd} {"IBM J. Res. Dev."}
    
    MACRO {ibmsj} {"IBM Syst.~J."}
    
    MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
    
    MACRO {ieeetc} {"IEEE Trans. Comput."}
    
    MACRO {ieeetcad}
     {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
    
    MACRO {ipl} {"Inf. Process. Lett."}
    
    MACRO {jacm} {"J.~ACM"}
    
    MACRO {jcss} {"J.~Comput. Syst. Sci."}
    
    MACRO {scp} {"Sci. Comput. Programming"}
    
    MACRO {sicomp} {"SIAM J. Comput."}
    
    MACRO {tocs} {"ACM Trans. Comput. Syst."}
    
    MACRO {tods} {"ACM Trans. Database Syst."}
    
    MACRO {tog} {"ACM Trans. Gr."}
    
    MACRO {toms} {"ACM Trans. Math. Softw."}
    
    MACRO {toois} {"ACM Trans. Office Inf. Syst."}
    
    MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
    
    MACRO {tcs} {"Theoretical Comput. Sci."}
    
    
    READ
    
    FUNCTION {sortify}
    { purify$
      "l" change.case$
    }
    
    INTEGERS { len }
    
    FUNCTION {chop.word}
    { 's :=
      'len :=
      s #1 len substring$ =
        { s len #1 + global.max$ substring$ }
        's
      if$
    }
    
    FUNCTION {format.lab.names}
    { 's :=
      s #1 "{vv~}{ll}" format.name$
      s num.names$ duplicate$
      #2 >
        { pop$ " et~al." * }
        { #2 <
            'skip$
            { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
                { " et~al." * }
                { " and " * s #2 "{vv~}{ll}" format.name$ * }
              if$
            }
          if$
        }
      if$
    }
    
    FUNCTION {author.key.label}
    { author empty$
        { key empty$
            { cite$ #1 #3 substring$ }
            'key
          if$
        }
        { author format.lab.names }
      if$
    }
    
    FUNCTION {author.editor.key.label}
    { author empty$
        { editor empty$
            { key empty$
                { cite$ #1 #3 substring$ }
                'key
              if$
            }
            { editor format.lab.names }
          if$
        }
        { author format.lab.names }
      if$
    }
    
    FUNCTION {author.key.organization.label}
    { author empty$
        { key empty$
            { organization empty$
                { cite$ #1 #3 substring$ }
                { "The " #4 organization chop.word #3 text.prefix$ }
              if$
            }
            'key
          if$
        }
        { author format.lab.names }
      if$
    }
    
    FUNCTION {editor.key.organization.label}
    { editor empty$
        { key empty$
            { organization empty$
                { cite$ #1 #3 substring$ }
                { "The " #4 organization chop.word #3 text.prefix$ }
              if$
            }
            'key
          if$
        }
        { editor format.lab.names }
      if$
    }
    
    FUNCTION {calc.short.authors}
    { type$ "book" =
      type$ "inbook" =
      or
        'author.editor.key.label
        { type$ "proceedings" =
            'editor.key.organization.label
            { type$ "manual" =
                'author.key.organization.label
                'author.key.label
              if$
            }
          if$
        }
      if$
      'short.list :=
    }
    
    FUNCTION {calc.label}
    { calc.short.authors
      short.list
      "("
      *
      year duplicate$ empty$
      short.list key field.or.null = or
         { pop$ "" }
         'skip$
      if$
      *
      'label :=
    }
    
    FUNCTION {sort.format.names}
    { 's :=
      #1 'nameptr :=
      ""
      s num.names$ 'numnames :=
      numnames 'namesleft :=
        { namesleft #0 > }
        {
          s nameptr "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}" format.name$ 't :=
          nameptr #1 >
            {
              "   "  *
              namesleft #1 = t "others" = and
                { "zzzzz" * }
                { numnames #2 > nameptr #2 = and
                    { "zz" * year field.or.null * "   " * }
                    'skip$
                  if$
                  t sortify *
                }
              if$
            }
            { t sortify * }
          if$
          nameptr #1 + 'nameptr :=
          namesleft #1 - 'namesleft :=
        }
      while$
    }
    
    FUNCTION {sort.format.title}
    { 't :=
      "A " #2
        "An " #3
          "The " #4 t chop.word
        chop.word
      chop.word
      sortify
      #1 global.max$ substring$
    }
    
    FUNCTION {author.sort}
    { author empty$
        { key empty$
            { "to sort, need author or key in " cite$ * warning$
              ""
            }
            { key sortify }
          if$
        }
        { author sort.format.names }
      if$
    }
    
    FUNCTION {author.editor.sort}
    { author empty$
        { editor empty$
            { key empty$
                { "to sort, need author, editor, or key in " cite$ * warning$
                  ""
                }
                { key sortify }
              if$
            }
            { editor sort.format.names }
          if$
        }
        { author sort.format.names }
      if$
    }
    
    FUNCTION {author.organization.sort}
    { author empty$
        { organization empty$
            { key empty$
                { "to sort, need author, organization, or key in " cite$ * warning$
                  ""
                }
                { key sortify }
              if$
            }
            { "The " #4 organization chop.word sortify }
          if$
        }
        { author sort.format.names }
      if$
    }
    
    FUNCTION {editor.organization.sort}
    { editor empty$
        { organization empty$
            { key empty$
                { "to sort, need editor, organization, or key in " cite$ * warning$
                  ""
                }
                { key sortify }
              if$
            }
            { "The " #4 organization chop.word sortify }
          if$
        }
        { editor sort.format.names }
      if$
    }
    
    
    FUNCTION {presort}
    { calc.label
      label sortify
      "    "
      *
      type$ "book" =
      type$ "inbook" =
      or
        'author.editor.sort
        { type$ "proceedings" =
            'editor.organization.sort
            { type$ "manual" =
                'author.organization.sort
                'author.sort
              if$
            }
          if$
        }
      if$
      "    "
      *
      year field.or.null sortify
      *
      "    "
      *
      cite$
      *
      #1 entry.max$ substring$
      'sort.label :=
      sort.label *
      #1 entry.max$ substring$
      'sort.key$ :=
    }
    
    ITERATE {presort}
    
    SORT
    
    STRINGS { longest.label last.label next.extra }
    
    INTEGERS { longest.label.width last.extra.num number.label }
    
    FUNCTION {initialize.longest.label}
    { "" 'longest.label :=
      #0 int.to.chr$ 'last.label :=
      "" 'next.extra :=
      #0 'longest.label.width :=
      #0 'last.extra.num :=
      #0 'number.label :=
    }
    
    FUNCTION {forward.pass}
    { last.label label =
        { last.extra.num #1 + 'last.extra.num :=
          last.extra.num int.to.chr$ 'extra.label :=
        }
        { "a" chr.to.int$ 'last.extra.num :=
          "" 'extra.label :=
          label 'last.label :=
        }
      if$
      number.label #1 + 'number.label :=
    }
    
    FUNCTION {reverse.pass}
    { next.extra "b" =
        { "a" 'extra.label := }
        'skip$
      if$
      extra.label 'next.extra :=
      extra.label
      duplicate$ empty$
        'skip$
        { "{\natexlab{" swap$ * "}}" * }
      if$
      'extra.label :=
      label extra.label * 'label :=
    }
    
    EXECUTE {initialize.longest.label}
    
    ITERATE {forward.pass}
    
    REVERSE {reverse.pass}
    
    FUNCTION {bib.sort.order}
    { sort.label  'sort.key$ :=
    }
    
    ITERATE {bib.sort.order}
    
    SORT
    
    FUNCTION {begin.bib}
    {   preamble$ empty$
        'skip$
        { preamble$ write$ newline$ }
      if$
      "\begin{thebibliography}{" number.label int.to.str$ * "}" *
      write$ newline$
      "\providecommand{\natexlab}[1]{#1}"
      write$ newline$
      "\providecommand{\url}[1]{\texttt{#1}}"
      write$ newline$
      "\expandafter\ifx\csname urlstyle\endcsname\relax"
      write$ newline$
      "  \providecommand{\doi}[1]{doi: #1}\else"
      write$ newline$
      "  \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
      write$ newline$
    }
    
    EXECUTE {begin.bib}
    
    EXECUTE {init.state.consts}
    
    ITERATE {call.type$}
    
    FUNCTION {end.bib}
    { newline$
      "\end{thebibliography}" write$ newline$
    }
    
    EXECUTE {end.bib}
    
  • references.bib231 B
    @inproceedings{example2024,
      title     = {An example reference},
      author    = {Doe, Jane and Smith, John},
      booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
      year      = {2024}
    }
    
  • main.pdfprebuilt · 46 KBReplaced by the first recompile.

    Binary file, seeded as-is.

  • main.synctex.gzprebuilt · 3.1 KBReplaced by the first recompile.

    Binary file, seeded as-is.