Skip to main content
All modules

TemplateConferences

ACL 2026

ACL 2026 paper on the ACL Rolling Review style in review mode, with the final switch for camera-ready; preprints may stay non-anonymous.

2026 · deadline ARR rolling (every 2 months) · 8 pages (long) / 4 pages (short) + unlimited references

Loading PDF preview…

What’s inside

  • Starter files
  • main.tex623 B
    \documentclass[11pt]{article}
    
    % Remove [review] for camera-ready.
    \usepackage[review]{acl}
    
    \usepackage{times}
    \usepackage{latexsym}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage{microtype}
    \usepackage{inconsolata}
    \usepackage{graphicx}
    \usepackage{booktabs}
    
    \title{Your Paper Title Here}
    
    \author{Anonymous ACL submission}
    
    \begin{document}
    \maketitle
    
    \begin{abstract}
    Your abstract here.
    \end{abstract}
    
    \section{Introduction}
    
    \section{Related Work}
    
    \section{Method}
    
    \section{Experiments}
    
    \section{Conclusion}
    
    \nocite{*}
    \bibliography{references}
    \bibliographystyle{acl_natbib}
    
    \end{document}
    
  • Libraries and docs
  • acl_natbib.bst44 KBVendored from github.com on 2026-05-26.
    %%% Modification of BibTeX style file acl_natbib_nourl.bst
    %%% ... by urlbst, version 0.9.1 (marked with "% urlbst")
    %%% See <https://purl.org/nxg/dist/urlbst> and repository <https://heptapod.host/nxg/urlbst>
    %%% Modifications Copyright 2002–23, Norman Gray,
    %%% and distributed under the terms of the LPPL; see README for discussion.
    %%%
    %%% Added webpage entry type, and url and lastchecked fields.
    %%% Added eprint support.
    %%% Added DOI support.
    %%% Added PUBMED support.
    %%% Added hyperref support.
    %%% Original headers follow...
    
    %%
    %% This is file `acl_natbib_basic.bst',
    %% generated with the docstrip utility.
    %%
    %% The original source files were:
    %%
    %% merlin.mbs  (with options: `ay,nat,pres,ed-au,keyxyr,blkyear,dt-beg,yr-per,note-yr,num-xser,pre-edn,xedn,nfss')
    %% ----------------------------------------
    %% *** Intended for ACL conferences ***
    %% 
    %% Copyright 1994-2011 Patrick W Daly
     % ===============================================================
     % IMPORTANT NOTICE:
     % This bibliographic style (bst) file has been generated from one or
     % more master bibliographic style (mbs) files, listed above.
     %
     % This generated file 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.
     % ===============================================================
     % Name and version information of the main mbs file:
     % \ProvidesFile{merlin.mbs}[2011/11/18 4.33 (PWD, AO, DPC)]
     %   For use with BibTeX version 0.99a or later
     %-------------------------------------------------------------------
     % This bibliography style file is intended for texts in ENGLISH
     % This is an author-year citation style bibliography. As such, it is
     % non-standard LaTeX, and requires a special package file to function properly.
     % Such a package is    natbib.sty   by Patrick W. Daly
     % The form of the \bibitem entries is
     %   \bibitem[Jones et al.(1990)]{key}...
     %   \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
     % The essential feature is that the label (the part in brackets) consists
     % of the author names, as they should appear in the citation, with the year
     % in parentheses following. There must be no space before the opening
     % parenthesis!
     % With natbib v5.3, a full list of authors may also follow the year.
     % In natbib.sty, it is possible to define the type of enclosures that is
     % really wanted (brackets or parentheses), but in either case, there must
     % be parentheses in the label.
     % The \cite command functions as follows:
     %   \citet{key} ==>>                Jones et al. (1990)
     %   \citet*{key} ==>>               Jones, Baker, and Smith (1990)
     %   \citep{key} ==>>                (Jones et al., 1990)
     %   \citep*{key} ==>>               (Jones, Baker, and Smith, 1990)
     %   \citep[chap. 2]{key} ==>>       (Jones et al., 1990, chap. 2)
     %   \citep[e.g.][]{key} ==>>        (e.g. Jones et al., 1990)
     %   \citep[e.g.][p. 32]{key} ==>>   (e.g. Jones et al., 1990, p. 32)
     %   \citeauthor{key} ==>>           Jones et al.
     %   \citeauthor*{key} ==>>          Jones, Baker, and Smith
     %   \citeyear{key} ==>>             1990
     %---------------------------------------------------------------------
    
    %% 2025 modified to truncate author lists of more than 20 authors
    
    ENTRY
      { address
        archivePrefix
        author
        booktitle
        chapter
        edition
        editor
        eid
        eprint
        eprinttype % = archivePrefix
        howpublished
        institution
        journal
        key
        month
        note
        number
        organization
        pages
        publisher
        school
        series
        title
        type
        volume
        year
        doi % urlbst
        pubmed % urlbst
        url % urlbst
        lastchecked % urlbst
      }
      {}
      { label extra.label sort.label short.list }
    INTEGERS { output.state before.all mid.sentence after.sentence after.block }
    % urlbst...
    % urlbst constants and state variables
    STRINGS { urlintro
      eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl
      citedstring onlinestring linktextstring
      openinlinelink closeinlinelink }
    INTEGERS { hrefform doiform inlinelinks makeinlinelink
      addeprints adddoi addpubmed }
    FUNCTION {init.urlbst.variables}
    {
      % The following constants may be adjusted by hand, if desired
    
      % The first set allow you to enable or disable certain functionality.
      #1 'addeprints :=	% 0=no eprints; 1=include eprints
      #2 'hrefform :=	% 0=no crossrefs; 1=hypertex hrefs; 2=hyperref hrefs
      #1 'inlinelinks :=	% 0=URLs explicit; 1=URLs attached to titles
      #1 'adddoi :=	% 0=no DOI resolver; 1=include it
      #1 'addpubmed :=	% 0=no PUBMED resolver; 1=include it
      #0 'doiform :=	% 0=with href; 1=with \doi{}
    
      % String constants, which you _might_ want to tweak.
      "online" 'onlinestring :=	% label that a resource is online
      "[link]" 'linktextstring :=	% anonymous link text
      "http://www.ncbi.nlm.nih.gov/pubmed/" 'pubmedurl :=	% prefix to make URL from PUBMED
      "https://doi.org/" 'doiurl :=	% prefix to make URL from DOI
      "doi:" 'doiprefix :=	% printed text to introduce DOI
      "https://arxiv.org/abs/" 'eprinturl :=	% prefix to make URL from eprint ref
      "cited " 'citedstring :=	% label in "lastchecked" remark
      "arXiv:" 'eprintprefix :=	% text prefix printed before eprint ref
      "PMID:" 'pubmedprefix :=	% text prefix printed before PUBMED ref
      "URL: " 'urlintro :=	% text prefix before URL
    
      % The following are internal state variables, not configuration constants,
      % so they shouldn't be fiddled with.
      #0 'makeinlinelink :=     % state variable managed by possibly.setup.inlinelink
      "" 'openinlinelink :=     % ditto
      "" 'closeinlinelink :=    % ditto
    }
    INTEGERS {
      bracket.state
      outside.brackets
      open.brackets
      within.brackets
      close.brackets
    }
    % ...urlbst to here
    FUNCTION {init.state.consts}
    { #0 'outside.brackets := % urlbst...
      #1 'open.brackets :=
      #2 'within.brackets :=
      #3 'close.brackets := % ...urlbst to here
    
      #0 'before.all :=
      #1 'mid.sentence :=
      #2 'after.sentence :=
      #3 'after.block :=
    }
    STRINGS { s t}
    % urlbst
    FUNCTION {output.nonnull.original}
    { '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
    }
    
    % urlbst...
    % Minimal DOI parsing.
    % Given a DOI on the stack, check whether it starts with 'doiurl' or not.
    % In either case, leave on the stack first a DOI with, and then a DOI without, the URL prefix.
    FUNCTION {parse.doi}
    {
      #1 doiurl text.length$ substring$
      doiurl =
        { doi
          doi doiurl text.length$ #1 + #999 substring$ }
        { doiurl doi *
          doi }
      if$
    }
    % The following three functions are for handling inlinelink.  They wrap
    % a block of text which is potentially output with write$ by multiple
    % other functions, so we don't know the content a priori.
    % They communicate between each other using the variables makeinlinelink
    % (which is true if a link should be made), and closeinlinelink (which holds
    % the string which should close any current link.  They can be called
    % at any time, but start.inlinelink will be a no-op unless something has
    % previously set makeinlinelink true, and the two ...end.inlinelink functions
    % will only do their stuff if start.inlinelink has previously set
    % closeinlinelink to be non-empty.
    % (thanks to 'ijvm' for suggested code here)
    FUNCTION {uand}
    { 'skip$ { pop$ #0 } if$ } % 'and' (which isn't defined at this point in the file)
    FUNCTION {possibly.setup.inlinelink}
    { makeinlinelink hrefform #0 > uand
        { doi empty$ adddoi uand
            { pubmed empty$ addpubmed uand
                { eprint empty$ addeprints uand
                    { url empty$
                        { "" }
                        { url }
                      if$ }
                    { eprinturl eprint * }
                  if$ }
                { pubmedurl pubmed * }
              if$ }
    %        { doiurl doi * }
            { doi empty$
                { "XXX" }
                { doi parse.doi pop$ }
              if$
            }
          if$
          % an appropriately-formatted URL is now on the stack
          hrefform #1 = % hypertex
            { "\special {html:<a href=" quote$ * swap$ * quote$ * "> }{" * 'openinlinelink :=
              "\special {html:</a>}" 'closeinlinelink := }
            { "\href {" swap$ * "} {" * 'openinlinelink := % hrefform=#2 -- hyperref
              % the space between "} {" matters: a URL of just the right length can cause "\% newline em"
              "}" 'closeinlinelink := }
          if$
          #0 'makeinlinelink :=
          }
        'skip$
      if$ % makeinlinelink
    }
    FUNCTION {add.inlinelink}
    { openinlinelink empty$
        'skip$
        { openinlinelink swap$ * closeinlinelink *
          "" 'openinlinelink :=
          }
      if$
    }
    FUNCTION {output.nonnull}
    { % Save the thing we've been asked to output
      's :=
      % If the bracket-state is close.brackets, then add a close-bracket to
      % what is currently at the top of the stack, and set bracket.state
      % to outside.brackets
      bracket.state close.brackets =
        { "]" *
          outside.brackets 'bracket.state :=
        }
        'skip$
      if$
      bracket.state outside.brackets =
        { % We're outside all brackets -- this is the normal situation.
          % Write out what's currently at the top of the stack, using the
          % original output.nonnull function.
          s
          add.inlinelink
          output.nonnull.original % invoke the original output.nonnull
        }
        { % Still in brackets.  Add open-bracket or (continuation) comma, add the
          % new text (in s) to the top of the stack, and move to the close-brackets
          % state, ready for next time (unless inbrackets resets it).  If we come
          % into this branch, then output.state is carefully undisturbed.
          bracket.state open.brackets =
            { " [" * }
            { ", " * } % bracket.state will be within.brackets
          if$
          s *
          close.brackets 'bracket.state :=
        }
      if$
    }
    
    % Call this function just before adding something which should be presented in
    % brackets.  bracket.state is handled specially within output.nonnull.
    FUNCTION {inbrackets}
    { bracket.state close.brackets =
        { within.brackets 'bracket.state := } % reset the state: not open nor closed
        { open.brackets 'bracket.state := }
      if$
    }
    
    FUNCTION {format.lastchecked}
    { lastchecked empty$
        { "" }
        { inbrackets citedstring lastchecked * }
      if$
    }
    % ...urlbst to here
    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.original} % urlbst (renamed from fin.entry, so it can be wrapped below)
    { 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 {add.blank}
    {  " " * before.all 'output.state :=
    }
    
    FUNCTION {date.block}
    {
      new.block
    }
    
    FUNCTION {not}
    {   { #0 }
        { #1 }
      if$
    }
    FUNCTION {and}
    {   'skip$
        { pop$ #0 }
      if$
    }
    FUNCTION {or}
    {   { pop$ #1 }
        'skip$
      if$
    }
    FUNCTION {new.block.checkb}
    { empty$
      swap$ empty$
      and
        'skip$
        'new.block
      if$
    }
    FUNCTION {field.or.null}
    { duplicate$ empty$
        { pop$ "" }
        'skip$
      if$
    }
    FUNCTION {emphasize}
    { duplicate$ empty$
        { pop$ "" }
        { "\emph{" swap$ * "}" * }
      if$
    }
    FUNCTION {tie.or.space.prefix} % puts ~ before the preceding part if it is of length <3
    { duplicate$ text.length$ #3 <
        { "~" }
        { " " }
      if$
      swap$
    }
    
    FUNCTION {capitalize}
    { "u" change.case$ "t" change.case$ }
    
    FUNCTION {space.word}
    { " " swap$ * " " * }
     % Here are the language-specific definitions for explicit words.
     % Each function has a name bbl.xxx where xxx is the English word.
     % The language selected here is ENGLISH
    FUNCTION {bbl.and}
    { "and"}
    
    FUNCTION {bbl.etal}
    { "et~al." }
    
    FUNCTION {bbl.editors}
    { "editors" }
    
    FUNCTION {bbl.editor}
    { "editor" }
    
    FUNCTION {bbl.edby}
    { "edited by" }
    
    FUNCTION {bbl.edition}
    { "edition" }
    
    FUNCTION {bbl.volume}
    { "volume" }
    
    FUNCTION {bbl.of}
    { "of" }
    
    FUNCTION {bbl.number}
    { "number" }
    
    FUNCTION {bbl.nr}
    { "no." }
    
    FUNCTION {bbl.in}
    { "in" }
    
    FUNCTION {bbl.pages}
    { "pages" }
    
    FUNCTION {bbl.page}
    { "page" }
    
    FUNCTION {bbl.chapter}
    { "chapter" }
    
    FUNCTION {bbl.techrep}
    { "Technical Report" }
    
    FUNCTION {bbl.mthesis}
    { "Master's thesis" }
    
    FUNCTION {bbl.phdthesis}
    { "Ph.D. thesis" }
    
    MACRO {jan} {"January"}
    
    MACRO {feb} {"February"}
    
    MACRO {mar} {"March"}
    
    MACRO {apr} {"April"}
    
    MACRO {may} {"May"}
    
    MACRO {jun} {"June"}
    
    MACRO {jul} {"July"}
    
    MACRO {aug} {"August"}
    
    MACRO {sep} {"September"}
    
    MACRO {oct} {"October"}
    
    MACRO {nov} {"November"}
    
    MACRO {dec} {"December"}
    
    MACRO {acmcs} {"ACM Computing Surveys"}
    
    MACRO {acta} {"Acta Informatica"}
    
    MACRO {cacm} {"Communications of the ACM"}
    
    MACRO {ibmjrd} {"IBM Journal of Research and Development"}
    
    MACRO {ibmsj} {"IBM Systems Journal"}
    
    MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
    
    MACRO {ieeetc} {"IEEE Transactions on Computers"}
    
    MACRO {ieeetcad}
     {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
    
    MACRO {ipl} {"Information Processing Letters"}
    
    MACRO {jacm} {"Journal of the ACM"}
    
    MACRO {jcss} {"Journal of Computer and System Sciences"}
    
    MACRO {scp} {"Science of Computer Programming"}
    
    MACRO {sicomp} {"SIAM Journal on Computing"}
    
    MACRO {tocs} {"ACM Transactions on Computer Systems"}
    
    MACRO {tods} {"ACM Transactions on Database Systems"}
    
    MACRO {tog} {"ACM Transactions on Graphics"}
    
    MACRO {toms} {"ACM Transactions on Mathematical Software"}
    
    MACRO {toois} {"ACM Transactions on Office Information Systems"}
    
    MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
    
    MACRO {tcs} {"Theoretical Computer Science"}
    
    % bibinfo.check avoids acting on missing fields while bibinfo.warn will
    % issue a warning message if a missing field is detected. Prior to calling
    % the bibinfo functions, the user should push the field value and then its
    % name string, in that order.
    FUNCTION {bibinfo.check}
    { swap$
      duplicate$ missing$
        {
          pop$ pop$
          ""
        }
        { duplicate$ empty$
            {
              swap$ pop$
            }
            { swap$
              pop$
            }
          if$
        }
      if$
    }
    FUNCTION {bibinfo.warn}
    { swap$
      duplicate$ missing$
        {
          swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
          ""
        }
        { duplicate$ empty$
            {
              swap$ "empty " swap$ * " in " * cite$ * warning$
            }
            { swap$
              pop$
            }
          if$
        }
      if$
    }
    INTEGERS { nameptr namesleft numnames }
    
    
    STRINGS  { bibinfo}
    
    FUNCTION {format.names}
    { 'bibinfo :=
      duplicate$ empty$ 'skip$ {
      's :=
      "" 't :=
      #1 'nameptr :=
      s num.names$ 'numnames :=
      numnames 'namesleft :=
        { namesleft #0 > }
        { s nameptr
          "{ff~}{vv~}{ll}{, jj}" % first name first for all authors
          format.name$
          bibinfo bibinfo.check
          't :=
          nameptr #1 >
            {
              nameptr #19	% truncate after 19 names
              #1 + =
              numnames #20	% if there are more than 20 names
              > and
                { "others" 't :=
                  #1 'namesleft := }
                'skip$
              if$		% end truncation of long list of names
              namesleft #1 >
                { ", " * t * }
                {
                  s nameptr "{ll}" format.name$ duplicate$ "others" =
                    { 't := }
                    { pop$ }
                  if$
                  numnames #2 >
                    { "," * }
                    'skip$
                  if$
                  t "others" =
                    {
    		  %%                 " " * bbl.etal *
    		  % compute the number of remaining authors
    		  " and " * numnames nameptr - #1 + int.to.str$ * " others" *
                    }
                    {
                      bbl.and
                      space.word * t *
                    }
                  if$
                }
              if$
            }
            't
          if$
          nameptr #1 + 'nameptr :=
          namesleft #1 - 'namesleft :=
        }
      while$
      } if$
    }
    FUNCTION {format.names.ed}
    {
      format.names
    }
    FUNCTION {format.key}
    { empty$
        { key field.or.null }
        { "" }
      if$
    }
    
    FUNCTION {format.authors}
    { author "author" format.names
    }
    FUNCTION {get.bbl.editor}
    { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
    
    FUNCTION {format.editors}
    { editor "editor" format.names duplicate$ empty$ 'skip$
        {
          "," *
          " " *
          get.bbl.editor
          *
        }
      if$
    }
    FUNCTION {format.note}
    {
     note empty$
        { "" }
        { note #1 #1 substring$
          duplicate$ "{" =
            'skip$
            { output.state mid.sentence =
              { "l" }
              { "u" }
            if$
            change.case$
            }
          if$
          note #2 global.max$ substring$ * "note" bibinfo.check
        }
      if$
    }
    
    FUNCTION {format.title}
    { title
      duplicate$ empty$ 'skip$
        { "t" change.case$ }
      if$
      "title" bibinfo.check
    }
    FUNCTION {format.full.names}
    {'s :=
     "" 't :=
      #1 'nameptr :=
      s num.names$ 'numnames :=
      numnames 'namesleft :=
        { namesleft #0 > }
        { s nameptr
          "{vv~}{ll}" format.name$
          't :=
          nameptr #1 >
            {
              namesleft #1 >
                { ", " * t * }
                {
                  s nameptr "{ll}" format.name$ duplicate$ "others" =
                    { 't := }
                    { pop$ }
                  if$
                  t "others" =
                    {
                      " " * bbl.etal *
                    }
                    {
                      numnames #2 >
                        { "," * }
                        'skip$
                      if$
                      bbl.and
                      space.word * t *
                    }
                  if$
                }
              if$
            }
            't
          if$
          nameptr #1 + 'nameptr :=
          namesleft #1 - 'namesleft :=
        }
      while$
    }
    
    FUNCTION {author.editor.key.full}
    { author empty$
        { editor empty$
            { key empty$
                { cite$ #1 #3 substring$ }
                'key
              if$
            }
            { editor format.full.names }
          if$
        }
        { author format.full.names }
      if$
    }
    
    FUNCTION {author.key.full}
    { author empty$
        { key empty$
             { cite$ #1 #3 substring$ }
              'key
          if$
        }
        { author format.full.names }
      if$
    }
    
    FUNCTION {editor.key.full}
    { editor empty$
        { key empty$
             { cite$ #1 #3 substring$ }
              'key
          if$
        }
        { editor format.full.names }
      if$
    }
    
    FUNCTION {make.full.names}
    { type$ "book" =
      type$ "inbook" =
      or
        'author.editor.key.full
        { type$ "proceedings" =
            'editor.key.full
            'author.key.full
          if$
        }
      if$
    }
    
    FUNCTION {output.bibitem.original} % urlbst (renamed from output.bibitem, so it can be wrapped below)
    { 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 {word.in}
    { bbl.in capitalize
      " " * }
    
    FUNCTION {format.date}
    { year "year" bibinfo.check duplicate$ empty$
        {
        }
        'skip$
      if$
      extra.label *
      before.all 'output.state :=
      after.sentence 'output.state :=
    }
    FUNCTION {format.btitle}
    { title "title" bibinfo.check
      duplicate$ empty$ 'skip$
        {
          emphasize
        }
      if$
    }
    FUNCTION {either.or.check}
    { empty$
        'pop$
        { "can't use both " swap$ * " fields in " * cite$ * warning$ }
      if$
    }
    FUNCTION {format.bvolume}
    { volume empty$
        { "" }
        { bbl.volume volume tie.or.space.prefix
          "volume" bibinfo.check * *
          series "series" bibinfo.check
          duplicate$ empty$ 'pop$
            { swap$ bbl.of space.word * swap$
              emphasize * }
          if$
          "volume and number" number either.or.check
        }
      if$
    }
    FUNCTION {format.number.series}
    { volume empty$
        { number empty$
            { series field.or.null }
            { series empty$
                { number "number" bibinfo.check }
                { output.state mid.sentence =
                    { bbl.number }
                    { bbl.number capitalize }
                  if$
                  number tie.or.space.prefix "number" bibinfo.check * *
                  bbl.in space.word *
                  series "series" bibinfo.check *
                }
              if$
            }
          if$
        }
        { "" }
      if$
    }
    
    FUNCTION {format.edition}
    { edition duplicate$ empty$ 'skip$
        {
          output.state mid.sentence =
            { "l" }
            { "t" }
          if$ change.case$
          "edition" bibinfo.check
          " " * bbl.edition *
        }
      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 duplicate$ empty$ 'skip$
        { duplicate$ multi.page.check
            {
              bbl.pages swap$
              n.dashify
            }
            {
              bbl.page swap$
            }
          if$
          tie.or.space.prefix
          "pages" bibinfo.check
          * *
        }
      if$
    }
    FUNCTION {format.journal.pages}
    { pages duplicate$ empty$ 'pop$
        { swap$ duplicate$ empty$
            { pop$ pop$ format.pages }
            {
              ":" *
              swap$
              n.dashify
              "pages" bibinfo.check
              *
            }
          if$
        }
      if$
    }
    FUNCTION {format.journal.eid}
    { eid "eid" bibinfo.check
      duplicate$ empty$ 'pop$
        { swap$ duplicate$ empty$ 'skip$
          {
              ":" *
          }
          if$
          swap$ *
        }
      if$
    }
    FUNCTION {format.vol.num.pages}
    { volume field.or.null
      duplicate$ empty$ 'skip$
        {
          "volume" bibinfo.check
        }
      if$
      number "number" bibinfo.check duplicate$ empty$ 'skip$
        {
          swap$ duplicate$ empty$
            { "there's a number but no volume in " cite$ * warning$ }
            'skip$
          if$
          swap$
          "(" swap$ * ")" *
        }
      if$ *
      eid empty$
        { format.journal.pages }
        { format.journal.eid }
      if$
    }
    
    FUNCTION {format.chapter}
    { chapter empty$
        'format.pages
        { type empty$
            { bbl.chapter }
            { type "l" change.case$
              "type" bibinfo.check
            }
          if$
          chapter tie.or.space.prefix
          "chapter" bibinfo.check
          * *
        }
      if$
    }
    
    FUNCTION {format.chapter.pages}
    { chapter empty$
        'format.pages
        { type empty$
            { bbl.chapter }
            { type "l" change.case$
              "type" bibinfo.check
            }
          if$
          chapter tie.or.space.prefix
          "chapter" bibinfo.check
          * *
          pages empty$
            'skip$
            { ", " * format.pages * }
          if$
        }
      if$
    }
    
    FUNCTION {format.booktitle}
    {
      booktitle "booktitle" bibinfo.check
      emphasize
    }
    FUNCTION {format.in.booktitle}
    { format.booktitle duplicate$ empty$ 'skip$
        {
          word.in swap$ *
        }
      if$
    }
    FUNCTION {format.in.ed.booktitle}
    { format.booktitle duplicate$ empty$ 'skip$
        {
          editor "editor" format.names.ed duplicate$ empty$ 'pop$
            {
              "," *
              " " *
              get.bbl.editor
              ", " *
              * swap$
              * }
          if$
          word.in swap$ *
        }
      if$
    }
    FUNCTION {format.thesis.type}
    { type duplicate$ empty$
        'pop$
        { swap$ pop$
          "t" change.case$ "type" bibinfo.check
        }
      if$
    }
    FUNCTION {format.tr.number}
    { number "number" bibinfo.check
      type duplicate$ empty$
        { pop$ bbl.techrep }
        'skip$
      if$
      "type" bibinfo.check
      swap$ duplicate$ empty$
        { pop$ "t" change.case$ }
        { tie.or.space.prefix * * }
      if$
    }
    FUNCTION {format.article.crossref}
    {
      word.in
      " \cite{" * crossref * "}" *
    }
    FUNCTION {format.book.crossref}
    { volume duplicate$ empty$
        { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
          pop$ word.in
        }
        { bbl.volume
          capitalize
          swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
        }
      if$
      " \cite{" * crossref * "}" *
    }
    FUNCTION {format.incoll.inproc.crossref}
    {
      word.in
      " \cite{" * crossref * "}" *
    }
    FUNCTION {format.org.or.pub}
    { 't :=
      ""
      address empty$ t empty$ and
        'skip$
        {
          t empty$
            { address "address" bibinfo.check *
            }
            { t *
              address empty$
                'skip$
                { ", " * address "address" bibinfo.check * }
              if$
            }
          if$
        }
      if$
    }
    FUNCTION {format.publisher.address}
    { publisher "publisher" bibinfo.warn format.org.or.pub
    }
    
    FUNCTION {format.organization.address}
    { organization "organization" bibinfo.check format.org.or.pub
    }
    
    FUNCTION {archiveprefix.or.eprinttype} % holder for eprinttype with archiveprefix precedence
    {
      archiveprefix empty$
      {
        eprinttype empty$
          { "" } % not using 'skip$ to reduce errors like "nothing to pop from stack"
          { eprinttype }
        if$
      }
      { archiveprefix }
      if$
    }
    
    FUNCTION {output.eprint} % this is only used with the @misc record type (common for arXiv and other preprint server bibtex records)
    {
      eprint empty$
        {% if eprint field is empty
          publisher field.or.null "arXiv" = % field.or.null here helps when no publisher field in the record
            { publisher " preprint" * } % add " preprint" to publisher with the idea that publisher is the name of the preprint server
            { "" } % if publisher != "arXiv" then empty output
          if$
          emphasize % no output function after emphasize because nothing goes after this
        }
        {% if eprint field is not empty
          archiveprefix.or.eprinttype empty$
            { "" } % not using 'skip$ to reduce errors like "nothing to pop from stack"
            {% if archiveprefix or eprinttype fields are not empty
              journal empty$
                { "Preprint" } % if journal field is empty: output just "Preprint" emphasized like a journal name
                { journal } % if journal field is not empty, output it (takes precedence)
              if$
              emphasize output % emphasize what we formed before, setting output as a border to the subblock that follows with the comma delimiter
              archiveprefix.or.eprinttype ":" * eprint * % subblock with eprinttype and eprint number
            }
          if$
        }
      if$
    }
    
    % urlbst...
    % Functions for making hypertext links.
    % In all cases, the stack has (link-text href-url)
    %
    % make 'null' specials
    FUNCTION {make.href.null}
    {
      pop$
    }
    % make hypertex specials
    FUNCTION {make.href.hypertex}
    {
      "\special {html:<a href=" quote$ *
      swap$ * quote$ * "> }" * swap$ *
      "\special {html:</a>}" *
    }
    % make hyperref specials
    FUNCTION {make.href.hyperref}
    {
      "\href {" swap$ * "} {\path{" * swap$ * "}}" *
    }
    FUNCTION {make.href}
    { hrefform #2 =
        'make.href.hyperref      % hrefform = 2
        { hrefform #1 =
            'make.href.hypertex  % hrefform = 1
            'make.href.null      % hrefform = 0 (or anything else)
          if$
        }
      if$
    }
    
    % If inlinelinks is true, then format.url should be a no-op, since it's
    % (a) redundant, and (b) could end up as a link-within-a-link.
    FUNCTION {format.url}
    { inlinelinks #1 = url empty$ or
       { "" }
       { hrefform #1 =
           { % special case -- add HyperTeX specials
             urlintro "\url{" url * "}" * url make.href.hypertex * }
           { urlintro "\url{" * url * "}" * }
         if$
       }
      if$
    }
    FUNCTION {format.eprint}
    { eprint empty$
        { "" }
        { eprintprefix eprint * eprinturl eprint * make.href }
      if$
    }
    
    FUNCTION {format.doi}
    { doi empty$
        { "" }
        { doi parse.doi % leaves "https://doi.org/DOI" DOI on the stack
          's := 't :=
          doiform #1 =
            { "\doi{" s * "}" * }
            { doiprefix s * t make.href }
          if$
        }
      if$
    }
    
    FUNCTION {format.pubmed}
    { pubmed empty$
        { "" }
        { pubmedprefix pubmed * pubmedurl pubmed * make.href }
      if$
    }
    
    % Output a URL.  We can't use the more normal idiom (something like
    % `format.url output'), because the `inbrackets' within
    % format.lastchecked applies to everything between calls to `output',
    % so that `format.url format.lastchecked * output' ends up with both
    % the URL and the lastchecked in brackets.
    FUNCTION {output.url}
    { url empty$
        'skip$
        { new.block
          format.url output
          format.lastchecked output
        }
      if$
    }
    
    FUNCTION {output.web.refs}
    {
      new.block
      inlinelinks
        'skip$ % links were inline -- don't repeat them
        { % If the generated DOI will be the same as the URL,
          % then don't print the URL (thanks to Joseph Wright
          % for (the original version of) this code,
          % at http://tex.stackexchange.com/questions/5660)
          adddoi
              doi empty$ { "X" } { doi parse.doi pop$ } if$ % DOI URL to be generated
              url empty$ { "Y" } { url } if$          % the URL, or "Y" if empty
              =                                       % are the strings equal?
              and
            'skip$
            { output.url }
          if$
          addeprints eprint empty$ not and
            { format.eprint output.nonnull }
            'skip$
          if$
          adddoi doi empty$ not and
            { format.doi output.nonnull }
            'skip$
          if$
          addpubmed pubmed empty$ not and
            { format.pubmed output.nonnull }
            'skip$
          if$
        }
      if$
    }
    
    % Wrapper for output.bibitem.original.
    % If the URL field is not empty, set makeinlinelink to be true,
    % so that an inline link will be started at the next opportunity
    FUNCTION {output.bibitem}
    { outside.brackets 'bracket.state :=
      output.bibitem.original
      inlinelinks url empty$ not doi empty$ not or pubmed empty$ not or eprint empty$ not or and
        { #1 'makeinlinelink := }
        { #0 'makeinlinelink := }
      if$
    }
    
    % Wrapper for fin.entry.original
    FUNCTION {fin.entry}
    { output.web.refs  % urlbst
      makeinlinelink       % ooops, it appears we didn't have a title for inlinelink
        { possibly.setup.inlinelink % add some artificial link text here, as a fallback
          linktextstring output.nonnull }
        'skip$
      if$
      bracket.state close.brackets = % urlbst
        { "]" * }
        'skip$
      if$
      fin.entry.original
    }
    
    % Webpage entry type.
    % Title and url fields required;
    % author, note, year, month, and lastchecked fields optional
    % See references
    %   ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm
    %   http://www.classroom.net/classroom/CitingNetResources.html
    %   http://neal.ctstateu.edu/history/cite.html
    %   http://www.cas.usf.edu/english/walker/mla.html
    % for citation formats for web pages.
    FUNCTION {webpage}
    { output.bibitem
      author empty$
        { editor empty$
            'skip$  % author and editor both optional
            { format.editors output.nonnull }
          if$
        }
        { editor empty$
            { format.authors output.nonnull }
            { "can't use both author and editor fields in " cite$ * warning$ }
          if$
        }
      if$
      new.block
      title empty$ 'skip$ 'possibly.setup.inlinelink if$
      format.title "title" output.check
      inbrackets onlinestring output
      new.block
      year empty$
        'skip$
        { format.date "year" output.check }
      if$
      % We don't need to output the URL details ('lastchecked' and 'url'),
      % because fin.entry does that for us, using output.web.refs.  The only
      % reason we would want to put them here is if we were to decide that
      % they should go in front of the rather miscellaneous information in 'note'.
      new.block
      note output
      fin.entry
    }
    % ...urlbst to here
    
    
    FUNCTION {article}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      format.date "year" output.check
      date.block
      title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
      format.title "title" output.check
      new.block
      crossref missing$
        {
          journal
          "journal" bibinfo.check
          emphasize
          "journal" output.check
          possibly.setup.inlinelink format.vol.num.pages output% urlbst
        }
        { format.article.crossref output.nonnull
          format.pages output
        }
      if$
      new.block
      format.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$
      format.date "year" output.check
      date.block
      title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
      format.btitle "title" output.check
      format.edition output
      crossref missing$
        { format.bvolume output
          new.block
          format.number.series output
          new.sentence
          format.publisher.address output
        }
        {
          new.block
          format.book.crossref output.nonnull
        }
      if$
      new.block
      format.note output
      fin.entry
    }
    FUNCTION {booklet}
    { output.bibitem
      format.authors output
      author format.key output
      format.date "year" output.check
      date.block
      title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
      format.title "title" output.check
      new.block
      howpublished "howpublished" bibinfo.check output
      address "address" bibinfo.check output
      new.block
      format.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$
      format.date "year" output.check
      date.block
      title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
      format.btitle "title" output.check
      crossref missing$
        {
          format.edition output
          format.bvolume output
          format.chapter "chapter" output.check
          new.block
          format.number.series output
          new.sentence
          format.publisher.address output
        }
        {
          format.chapter "chapter" output.check
          new.block
          format.book.crossref output.nonnull
        }
      if$
      new.block
      format.note output
      fin.entry
    }
    
    FUNCTION {incollection}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      format.date "year" output.check
      date.block
      title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
      format.title "title" output.check
      new.block
      crossref missing$
        { format.in.ed.booktitle "booktitle" output.check
          format.edition output
          format.bvolume output
          format.number.series output
          format.chapter.pages output
          new.sentence
          format.publisher.address output
        }
        { format.incoll.inproc.crossref output.nonnull
          format.chapter.pages output
        }
      if$
      new.block
      format.note output
      fin.entry
    }
    FUNCTION {inproceedings}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      format.date "year" output.check
      date.block
      title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
      format.title "title" output.check
      new.block
      crossref missing$
        { format.in.booktitle "booktitle" output.check
          format.bvolume output
          format.number.series output
          format.pages output
          address "address" bibinfo.check output
          new.sentence
          organization "organization" bibinfo.check output
          publisher "publisher" bibinfo.check output
        }
        { format.incoll.inproc.crossref output.nonnull
          format.pages output
        }
      if$
      new.block
      format.note output
      fin.entry
    }
    FUNCTION {conference} { inproceedings }
    FUNCTION {manual}
    { output.bibitem
      format.authors output
      author format.key output
      format.date "year" output.check
      date.block
      title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
      format.btitle "title" output.check
      format.edition output
      organization address new.block.checkb
      organization "organization" bibinfo.check output
      address "address" bibinfo.check output
      new.block
      format.note output
      fin.entry
    }
    
    FUNCTION {mastersthesis}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      format.date "year" output.check
      date.block
      title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
      format.title
      "title" output.check
      new.block
      bbl.mthesis format.thesis.type output.nonnull
      school "school" bibinfo.warn output
      address "address" bibinfo.check output
      month "month" bibinfo.check output
      new.block
      format.note output
      fin.entry
    }
    
    FUNCTION {misc}
    { output.bibitem
      format.authors output
      author format.key output
      format.date "year" output.check
      date.block
      title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
      format.title output
      new.block
      howpublished "howpublished" bibinfo.check output
      new.block
      output.eprint output
      new.block
      format.note output
      fin.entry
    }
    FUNCTION {phdthesis}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      format.date "year" output.check
      date.block
      title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
      format.btitle
      "title" output.check
      new.block
      bbl.phdthesis format.thesis.type output.nonnull
      school "school" bibinfo.warn output
      address "address" bibinfo.check output
      new.block
      format.note output
      fin.entry
    }
    
    FUNCTION {presentation}
    { output.bibitem
      format.authors output
      author format.key output
      new.block
      title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
      format.title output
      new.block
      format.organization.address "organization and address" output.check
      month "month" output.check
      year "year" output.check
      new.block
      format.note output
      new.sentence
      type missing$ 'skip$
      {"(" type capitalize * ")" * output}
        if$
      fin.entry
    }
    
    FUNCTION {proceedings}
    { output.bibitem
      format.editors output
      editor format.key output
      format.date "year" output.check
      date.block
      title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
      format.btitle "title" output.check
      format.bvolume output
      format.number.series output
      new.sentence
      publisher empty$
        { format.organization.address output }
        { organization "organization" bibinfo.check output
          new.sentence
          format.publisher.address output
        }
      if$
      new.block
      format.note output
      fin.entry
    }
    
    FUNCTION {techreport}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      format.date "year" output.check
      date.block
      title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
      format.title
      "title" output.check
      new.block
      format.tr.number output.nonnull
      institution "institution" bibinfo.warn output
      address "address" bibinfo.check output
      new.block
      format.note output
      fin.entry
    }
    
    FUNCTION {unpublished}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      format.date "year" output.check
      date.block
      title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
      format.title "title" output.check
      new.block
      format.note "note" output.check
      fin.entry
    }
    
    FUNCTION {default.type} { misc }
    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 :=
      "" 't :=
      s #1 "{vv~}{ll}" format.name$
      s num.names$ duplicate$
      #2 >
        { pop$
          " " * bbl.etal *
        }
        { #2 <
            'skip$
            { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
                {
                  " " * bbl.etal *
                }
     
  • acl.sty11 KBVendored from github.com on 2026-05-26.
    % This is the LaTex style file for *ACL.
    % The official sources can be found at
    %
    %     https://github.com/acl-org/acl-style-files/
    %
    % This package is activated by adding
    %
    %    \usepackage{acl}
    %
    % to your LaTeX file. When submitting your paper for review, add the "review" option:
    %
    %    \usepackage[review]{acl}
    
    \newif\ifacl@finalcopy
    \newif\ifacl@anonymize
    \newif\ifacl@linenumbers
    \newif\ifacl@pagenumbers
    \DeclareOption{final}{\acl@finalcopytrue\acl@anonymizefalse\acl@linenumbersfalse\acl@pagenumbersfalse}
    \DeclareOption{review}{\acl@finalcopyfalse\acl@anonymizetrue\acl@linenumberstrue\acl@pagenumberstrue}
    \DeclareOption{preprint}{\acl@finalcopytrue\acl@anonymizefalse\acl@linenumbersfalse\acl@pagenumberstrue}
    \ExecuteOptions{final} % final copy is the default
    
    % include hyperref, unless user specifies nohyperref option like this:
    % \usepackage[nohyperref]{acl}
    \newif\ifacl@hyperref
    \DeclareOption{hyperref}{\acl@hyperreftrue}
    \DeclareOption{nohyperref}{\acl@hyperreffalse}
    \ExecuteOptions{hyperref} % default is to use hyperref
    \ProcessOptions\relax
    
    \typeout{Conference Style for ACL}
    
    \usepackage{xcolor}
    
    \ifacl@linenumbers
      % Add draft line numbering via the lineno package
      % https://texblog.org/2012/02/08/adding-line-numbers-to-documents/
      \usepackage[switch,mathlines]{lineno}
    
      % Line numbers in gray Helvetica 8pt
      \font\aclhv = phvb at 8pt
      \renewcommand\linenumberfont{\aclhv\color{lightgray}}
    
      % Zero-fill line numbers
      % 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@}%
      \renewcommand\thelinenumber{\fillzeros[3]{\arabic{linenumber}}}
      \AtBeginDocument{\linenumbers}
    
      \setlength{\linenumbersep}{1.6cm}
    
      % 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: multline has an extra line number.
      % https://tex.stackexchange.com/questions/461186/how-to-use-lineno-with-amsmath-align
      \usepackage{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
    
      \AtBeginDocument{%
        \linenomathpatch{equation}%
        \linenomathpatchAMS{gather}%
        \linenomathpatchAMS{multline}%
        \linenomathpatchAMS{align}%
        \linenomathpatchAMS{alignat}%
        \linenomathpatchAMS{flalign}%
      }
    \else
      % Hack to ignore these commands, which review mode puts into the .aux file.
      \newcommand{\@LN@col}[1]{}
      \newcommand{\@LN}[2]{}
      \newcommand{\nolinenumbers}{}
    \fi
    
    \PassOptionsToPackage{a4paper,margin=2.5cm,heightrounded=true}{geometry}
    \RequirePackage{geometry}
    
    \setlength\columnsep{0.6cm}
    \newlength\titlebox
    \setlength\titlebox{11\baselineskip}
    % \titlebox should be a multiple of \baselineskip so that
    % column height remaining fits an exact number of lines of text
    
    \flushbottom \twocolumn \sloppy
    
    % We're never going to need a table of contents, so just flush it to
    % save space --- suggested by drstrip@sandia-2
    \def\addcontentsline#1#2#3{}
    
    \ifacl@pagenumbers
        \pagenumbering{arabic}
    \else
        \thispagestyle{empty}
        \pagestyle{empty}
    \fi
    
    %% Title and Authors %%
    
    \let\Thanks\thanks % \Thanks and \thanks used to be different, but keep this for backwards compatibility.
    
    \newcommand\outauthor{%
        \begin{tabular}[t]{c}
        \ifacl@anonymize
            \bfseries Anonymous ACL submission
        \else
            \bfseries\@author
        \fi
        \end{tabular}}
    
    % Mostly taken from deproc.
    \AtBeginDocument{
    \def\maketitle{\par
     \begingroup
       \def\thefootnote{\fnsymbol{footnote}}
       \twocolumn[\@maketitle]
       \@thanks
     \endgroup
     \setcounter{footnote}{0}
     \let\maketitle\relax
     \let\@maketitle\relax
     \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
    \def\@maketitle{\vbox to \titlebox{\hsize\textwidth
     \linewidth\hsize \vskip 0.125in minus 0.125in \centering
     {\Large\bfseries \@title \par} \vskip 0.2in plus 1fil minus 0.1in
     {\def\and{\unskip\enspace{\rmfamily and}\enspace}%
      \def\And{\end{tabular}\hss \egroup \hskip 1in plus 2fil
               \hbox to 0pt\bgroup\hss \begin{tabular}[t]{c}\bfseries}%
      \def\AND{\end{tabular}\hss\egroup \hfil\hfil\egroup
              \vskip 0.25in plus 1fil minus 0.125in
               \hbox to \linewidth\bgroup\large \hfil\hfil
                 \hbox to 0pt\bgroup\hss \begin{tabular}[t]{c}\bfseries}
      \hbox to \linewidth\bgroup\large \hfil\hfil
        \hbox to 0pt\bgroup\hss
      \outauthor
       \hss\egroup
        \hfil\hfil\egroup}
      \vskip 0.3in plus 2fil minus 0.1in
    }}
    }
    
    % margins and font size for abstract
    \renewenvironment{abstract}%
      {\begin{center}\large\textbf{\abstractname}\end{center}%
        \begin{list}{}%
          {\setlength{\rightmargin}{0.6cm}%
            \setlength{\leftmargin}{0.6cm}}%
          \item[]\ignorespaces%
          \@setsize\normalsize{12pt}\xpt\@xpt
      }%
      {\unskip\end{list}}
    
    % Resizing figure and table captions - SL
    % Support for interacting with the caption, subfigure, and subcaption packages - SL
    \RequirePackage{caption}
    \DeclareCaptionFont{10pt}{\fontsize{10pt}{12pt}\selectfont}
    \captionsetup{font=10pt}
    
    \RequirePackage{natbib}
    % for citation commands in the .tex, authors can use:
    % \citep, \citet, and \citeyearpar for compatibility with natbib, or
    % \cite, \newcite, and \shortcite for compatibility with older ACL .sty files
    \renewcommand\cite{\citep}  % to get "(Author Year)" with natbib
    \newcommand\shortcite{\citeyearpar}% to get "(Year)" with natbib
    \newcommand\newcite{\citet} % to get "Author (Year)" with natbib
    \newcommand{\citeposs}[1]{\citeauthor{#1}'s (\citeyear{#1})} % to get "Author's (Year)"
    
    \bibliographystyle{acl_natbib}
    
    % Bibliography
    
    % Don't put a label in the bibliography at all.  Just use the unlabeled format
    % instead.
    \def\thebibliography#1{\vskip\parskip%
    \vskip\baselineskip%
    \def\baselinestretch{1}%
    \ifx\@currsize\normalsize\@normalsize\else\@currsize\fi%
    \vskip-\parskip%
    \vskip-\baselineskip%
    \section*{References\@mkboth
     {References}{References}}\list
     {}{\setlength{\labelwidth}{0pt}\setlength{\leftmargin}{\parindent}
     \setlength{\itemindent}{-\parindent}}
     \def\newblock{\hskip .11em plus .33em minus -.07em}
     \sloppy\clubpenalty4000\widowpenalty4000
     \sfcode`\.=1000\relax}
    \let\endthebibliography=\endlist
    
    
    % Allow for a bibliography of sources of attested examples
    \def\thesourcebibliography#1{\vskip\parskip%
    \vskip\baselineskip%
    \def\baselinestretch{1}%
    \ifx\@currsize\normalsize\@normalsize\else\@currsize\fi%
    \vskip-\parskip%
    \vskip-\baselineskip%
    \section*{Sources of Attested Examples\@mkboth
     {Sources of Attested Examples}{Sources of Attested Examples}}\list
     {}{\setlength{\labelwidth}{0pt}\setlength{\leftmargin}{\parindent}
     \setlength{\itemindent}{-\parindent}}
     \def\newblock{\hskip .11em plus .33em minus -.07em}
     \sloppy\clubpenalty4000\widowpenalty4000
     \sfcode`\.=1000\relax}
    \let\endthesourcebibliography=\endlist
    
    % sections with less space
    \def\section{\@startsection {section}{1}{\z@}{-2.0ex plus
        -0.5ex minus -.2ex}{1.5ex plus 0.3ex minus .2ex}{\large\bfseries\raggedright}}
    \def\subsection{\@startsection{subsection}{2}{\z@}{-1.8ex plus
        -0.5ex minus -.2ex}{0.8ex plus .2ex}{\normalsize\bfseries\raggedright}}
    %% changed by KO to - values to get the initial parindent right
    \def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-1.5ex plus
       -0.5ex minus -.2ex}{0.5ex plus .2ex}{\normalsize\bfseries\raggedright}}
    \def\paragraph{\@startsection{paragraph}{4}{\z@}{1.5ex plus
       0.5ex minus .2ex}{-1em}{\normalsize\bfseries}}
    \def\subparagraph{\@startsection{subparagraph}{5}{\parindent}{1.5ex plus
       0.5ex minus .2ex}{-1em}{\normalsize\bfseries}}
    
    % Footnotes
    \footnotesep 6.65pt %
    \skip\footins 9pt plus 4pt minus 2pt
    \def\footnoterule{\kern-3pt \hrule width 5pc \kern 2.6pt }
    \setcounter{footnote}{0}
    
    % Lists and paragraphs
    \parindent 1em
    \topsep 4pt plus 1pt minus 2pt
    \partopsep 1pt plus 0.5pt minus 0.5pt
    \itemsep 2pt plus 1pt minus 0.5pt
    \parsep 2pt plus 1pt minus 0.5pt
    
    \leftmargin 2em \leftmargini\leftmargin \leftmarginii 2em
    \leftmarginiii 1.5em \leftmarginiv 1.0em \leftmarginv .5em \leftmarginvi .5em
    \labelwidth\leftmargini\advance\labelwidth-\labelsep \labelsep 5pt
    
    \def\@listi{\leftmargin\leftmargini}
    \def\@listii{\leftmargin\leftmarginii
       \labelwidth\leftmarginii\advance\labelwidth-\labelsep
       \topsep 2pt plus 1pt minus 0.5pt
       \parsep 1pt plus 0.5pt minus 0.5pt
       \itemsep \parsep}
    \def\@listiii{\leftmargin\leftmarginiii
        \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
        \topsep 1pt plus 0.5pt minus 0.5pt
        \parsep \z@ \partopsep 0.5pt plus 0pt minus 0.5pt
        \itemsep \topsep}
    \def\@listiv{\leftmargin\leftmarginiv
         \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
    \def\@listv{\leftmargin\leftmarginv
         \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
    \def\@listvi{\leftmargin\leftmarginvi
         \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
    
    \abovedisplayskip 7pt plus2pt minus5pt%
    \belowdisplayskip \abovedisplayskip
    \abovedisplayshortskip  0pt plus3pt%
    \belowdisplayshortskip  4pt plus3pt minus3pt%
    
    % Less leading in most fonts (due to the narrow columns)
    % The choices were between 1-pt and 1.5-pt leading
    \def\@normalsize{\@setsize\normalsize{11pt}\xpt\@xpt}
    \def\small{\@setsize\small{10pt}\ixpt\@ixpt}
    \def\footnotesize{\@setsize\footnotesize{10pt}\ixpt\@ixpt}
    \def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
    \def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
    \def\large{\@setsize\large{14pt}\xiipt\@xiipt}
    \def\Large{\@setsize\Large{16pt}\xivpt\@xivpt}
    \def\LARGE{\@setsize\LARGE{20pt}\xviipt\@xviipt}
    \def\huge{\@setsize\huge{23pt}\xxpt\@xxpt}
    \def\Huge{\@setsize\Huge{28pt}\xxvpt\@xxvpt}
    
    % The hyperref manual (section 9) says hyperref should be loaded after natbib
    \ifacl@hyperref
      \PassOptionsToPackage{breaklinks}{hyperref}
      \RequirePackage{hyperref}
      % make links dark blue
      \definecolor{darkblue}{rgb}{0, 0, 0.5}
      \hypersetup{colorlinks=true, citecolor=darkblue, linkcolor=darkblue, urlcolor=darkblue}
    \else
      % This definition is used if the hyperref package is not loaded.
      % It provides a backup, no-op definiton of \href.
      % This is necessary because \href command is used in the acl_natbib.bst file.
      \def\href#1#2{{#2}}
      \usepackage{url}
    \fi
    
  • references.bib237 B
    @inproceedings{example2024,
      title     = {An example reference},
      author    = {Doe, Jane and Smith, John},
      booktitle = {Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics},
      year      = {2024}
    }
    
  • main.pdfprebuilt · 45 KBReplaced by the first recompile.

    Binary file, seeded as-is.

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

    Binary file, seeded as-is.