← All templates

The Journal of Philosophy (jphilart)

The Journal of Philosophy's jphilart class (v1.4.2) and jphil BibTeX style for references in notes; the sample explains the front matter, sections, footnotes, graphics and bibliography in the journal's style, with a blank template beside it.

Create an account to use this
Category
Journal
Document class
jphilart (jphilart.cls) — ships with TeX Live
Workflow
Journal manuscript — submissions and revision rounds
Author
The Journal of Philosophy, Inc. (class by VTeX)
Source
The Journal of Philosophy, Inc. (class by VTeX)
Licence
jphilart.cls: LaTeX Project Public License. The sample text is The Journal of Philosophy, Inc. (class by VTeX)'s, provided for authors preparing a submission.

These are the publisher’s own files. This project starts from The Journal of Philosophy, Inc. (class by VTeX)’s package for this publication — their manuscript, their jphilart.cls, their bibliography style — so what compiles here is what they would have given you.

The Journal of Philosophy, Inc. (class by VTeX) serves this exact file to The Journal of Philosophy. Check The Journal of Philosophy, Inc. (class by VTeX)’s author pages for the current instructions.

Where this differs from the publisher’s download.

  • Note: Start a new article from template.tex. References are typeset as notes with the jphil BibTeX style.

What you get

  • LICENSE · 19 KB
  • jphil.bst · 24 KB
  • jphilart.cls · 48 KB
  • sample.tex — the file that is compiled · 12 KB
  • template.tex · 4 KB

These become your files. Editing them afterwards changes your project and nothing else — a project owns its files from the moment it is made.

Journals using this template

Source

LICENSE — binary, 19 KB

jphil.bst · 24 KB
%% This is file `jphil.bst'
%%
%% Please submit bugs or your comments to [email protected]
%% Start subject with a "[JPHIL] bibtex: " + subject
%%

ENTRY
  { address
    author
    booktitle
    chapter
    edition
    editor
    howpublished
    institution
    journal
    key
    month
    note
    number
    organization
    pages
    publisher
    school
    series
    title
    type
    volume
    year
    doi
    url
  }
  {}
  { label.year extra.label sort.year sort.label }


INTEGERS { output.state before.all mid.sentence after.sentence
           after.block after.authors between.elements int return done str.length}

FUNCTION {init.state.consts}
{ #0 'before.all :=
  #1 'mid.sentence :=
  #2 'after.sentence :=
  #3 'after.block :=
  #4 'after.authors :=
  #5 'between.elements :=
}


STRINGS { s t u tmp1}

FUNCTION {output.nonnull}
{ 's :=
  output.state mid.sentence =
    { " " * write$ }
    { output.state after.block =
        { add.period$ write$
          newline$
        }
        {
          output.state after.authors =
          { ": " * write$}
          { output.state between.elements =
              { ", " * write$ }
              { output.state before.all =
                   'write$
                  { add.period$ " " * write$ newline$}
                  if$
              }
              if$
          }
          if$
        }
      if$
      mid.sentence 'output.state :=
    }
  if$
  s
}

FUNCTION {output}
{ duplicate$ empty$
    'pop$
    'output.nonnull
  if$
}

FUNCTION {output2}
{
  duplicate$ empty$
    'pop$
    {
    write$
    }
  if$
}

FUNCTION {output.check}
{ 't :=
  duplicate$ empty$
    { pop$ "empty " t * " in " * cite$ * warning$ }
    'output.nonnull
  if$
}

FUNCTION {output.colon}
{ after.authors 'output.state := }


FUNCTION {insert.comma}
{ output.state before.all =
    'skip$
    { between.elements 'output.state := }
  if$
}

FUNCTION {output.comma}
{ output.state before.all =
    'skip$
    { between.elements 'output.state := }
  if$
  output
}

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 {output.year.check}
{ year empty$
     { "empty year in " cite$ * warning$ }
     { write$
        " (" 
        month empty$
          'skip$
          { month * " " * }
        if$
        year * extra.label *
        ")" *
       mid.sentence 'output.state :=
     }
  if$
}


FUNCTION {string.in.url}{
      'tmp1 :=
      url 't :=
      #0 'return :=
      #0 'done :=
      tmp1 text.length$ 'str.length :=
        { done not
          t empty$ not
          and
        }
        { t #1 str.length substring$ tmp1 =
            { #1 'return := 
              #1 'done := 
            }
            { t text.length$ str.length = 
                {#1 'done := }
                {t #2 global.max$ substring$ 't := }
              if$
            }
          if$
        }
      while$
      return 

}


FUNCTION {doi.in.url}{
  doi empty$
    {#0}
    {doi string.in.url}
  if$
}

FUNCTION {format.url}
{ url empty$
    'skip$
    {doi.in.url #1 =
       'skip$
       {"\url{" url * "}" * output.comma }
     if$   
    } 
  if$
}

FUNCTION {fix.doi.doimain}{
 't := % content
  t text.length$ #10 >
    {
      t #1 #10 substring$ "http://dx." = 
        {
          "https://" t #11 global.max$ substring$ * 't :=
        }
        {
          t #1 #4 substring$ "http" = 
            'skip$
            { "https://doi.org/" t * 't := }
          if$
        }
      if$ 
    }
    'skip$
  if$ 
  t 
}

FUNCTION {format.doi}
{ "\href{" doi fix.doi.doimain * "}{" * doi * "}" * 
}

FUNCTION {fin.entry}
{ 
  note empty$
    'skip$
    {note output.comma}
  if$  
  
  doi empty$
    'skip$
    {format.doi output.comma}
  if$  
  
  format.url 
  
  write$
  newline$
}

FUNCTION {new.line}
{ 
  "" output newline$
}
FUNCTION {new.block}
{ output.state before.all =
    'skip$
    { after.block 'output.state := }
  if$
}

FUNCTION {field.or.null}
{ duplicate$ empty$
    { pop$ "" }
    'skip$
  if$
}


FUNCTION {textit}
{ duplicate$ empty$
    { pop$ "" }
    { "\textit{" swap$ * "}" * }
  if$
}


INTEGERS { nameptr namesleft numnames }

FUNCTION {format.names}
{ 's :=
  #1 'nameptr :=              
  s num.names$ 'numnames :=   
  numnames 'namesleft :=
    { namesleft #0 > }

    { 
      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 {my.full.label}
{ '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 {format.key}
{ empty$
    { key field.or.null }
    { "" }
  if$
}

FUNCTION {format.editors}
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
        { ", eds." * }
        { ", ed." * }
      if$
    }
  if$
  output insert.comma
}

FUNCTION {format.authors}
{ author empty$
    { editor empty$
        {   
          organization empty$
            {
              institution empty$
                {
                  howpublished empty$
                     'skip$
                     { howpublished output insert.comma}
                  if$
                }
                { institution output insert.comma}
              if$
            }
            { organization output insert.comma}
          if$
        }
        'format.editors 
      if$
    }
    { author format.names output insert.comma }
  if$
}

FUNCTION {format.main.title}
{ title empty$
    'skip$
    { "``" title * ",''" * output }
  if$
}


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.btitle}
{ title empty$
    'skip$
    { title textit output new.line}
  if$
  edition empty$
    'skip$
    { edition " ed." * insert.comma output }
  if$
}

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$
    'skip$
    { "Volume" volume tie.or.space.connect 
      series empty$
        'skip$
        { " of " * series textit * }
      if$
      "volume and number" number either.or.check
      output.comma
    }
  if$
}

FUNCTION {format.address.publisher.year}
{
  "("
      address empty$
        'skip$
        { address  *
          publisher empty$
            'skip$
            {": " *}
          if$
        }
      if$
      publisher empty$
        'skip$
        {publisher *}
      if$
      
      year empty$
        {""}
        { publisher empty$ address empty$ and
            'skip$
            {", " *}
          if$
        year
        }
      if$
  ")" * *
  output newline$
}

FUNCTION {format.number.series}
{ volume empty$
    { number empty$
        { 
          series empty$
            'skip$
            { series output.comma}
          if$
        
        }
        {
          "Number" 
          number tie.or.space.connect
          series empty$
            { "there's a number but no series in " cite$ * warning$ }
            { " in " * series * }
          if$
          output.comma
        }
      if$
      
    }
    'skip$
  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
}

STRINGS { a b p f l range first last i j v }

FUNCTION {is.num}
{ chr.to.int$
  duplicate$ "0" chr.to.int$ < not
  swap$ "9" chr.to.int$ > not and
}

FUNCTION {find.integer}
{ 't :=
  #0 'int :=
    { int not
      t empty$ not
      and
    }
    { t #1 #1 substring$ 's :=
      s is.num 
        {#1 'int :=}
        { t #2 global.max$ substring$ 't := }
      if$
    }
  while$
  int 
}

FUNCTION {shorten.last.page}
{
  j 'a :=          % copy first page
  v 'b :=          % copy last page

  { a empty$ not
    b empty$ not
    and
    a #1 #1 substring$
    b #1 #1 substring$
    =
    and
  }
  { a #2 global.max$ substring$ 'a :=
    b #2 global.max$ substring$ 'b :=
  }
  while$

  b
}

FUNCTION {do.pages}
{'t :=
  "" 'j :=
  "" 'v :=
    {t empty$ not}
    { t #1 #1 substring$  's :=
      s is.num not
      s "," = not
      and
        { "" j = 
            {
              t #2 global.max$ substring$ 't :=
            }
            {t find.integer 
                { t  'v := }
                'skip$
              if$
              "" 't := 
            }
          if$ 
        }
        { j  s * 'j :=
            t #2 global.max$ substring$ 't := 
        }
      if$
    }
  while$
  j  
  v "" =
    'skip$
    {"--"  * shorten.last.page * }
  if$
}


FUNCTION {format.pages}
{ pages empty$
  { "" }
  {
    "pp. " pages n.dashify do.pages *
  }
  if$
}

FUNCTION {format.jour.vol}
{ journal empty$
    'skip$
    { journal textit output
      %output insert.comma  
      newline$  
    }
  if$
  
  volume empty$
     'skip$
     { insert.comma "\textsc{\romannumeral " volume * "}" *  output  newline$ }
  if$
   
  
  number empty$  
    'skip$
    { insert.comma number output }
  if$
  
  output.year.check 
  
  pages empty$
    'skip$ 
    {output.colon pages n.dashify do.pages output.nonnull }
  if$
}

FUNCTION {format.chapter.pages}
{ chapter empty$
    'format.pages
    { type empty$
        { "Chapter" } 
        { type "t" change.case$ }
      if$
      chapter tie.or.space.connect
      pages empty$
        {"page numbers missing in " cite$ * warning$} 
        { ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.in.ed.booktitle}
{ editor empty$ author empty$ or booktitle empty$ and
    'skip$
    {"in" output newline$}
  if$
  
  editor empty$ author empty$ or  
    'skip$
    {format.editors }
  if$
  
  booktitle empty$
    'skip$
    {
      "\textit{" booktitle *
        volume empty$
          'skip$
          {", Volume~"  * volume *}
        if$
         "}" * 
      output 
      editor empty$
        'skip$
        'newline$ 
      if$
    }
  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}
{ "See"
  "\citeN{" * crossref * "}" *
}

FUNCTION {format.crossref.editor}
{ editor #1 "{vv~}{ll}" format.name$
  editor num.names$ duplicate$
  #2 >
    { pop$ " et~al." * }
    { #2 <
    'skip$
    { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
        { " et~al." * }
        { " and " * editor #2 "{vv~}{ll}" format.name$ * }
      if$
    }
      if$
    }
  if$
}

FUNCTION {format.book.crossref}
{ volume empty$
    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
      "In "
    }
    { "Volume" volume tie.or.space.connect % gnp - changed to mixed case
      " 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$
          "" *
        }
        { "{\em " * series * "\/}" * }
      if$
    }
    { key * }
      if$
    }
    { format.crossref.editor * }
  if$
  " \citeN{" * crossref * "}" *
}

FUNCTION {format.incoll.inproc.crossref}
{ "See"
  " \citeN{" * crossref * "}" *
}

% format.lab.names:
%
% determines "short" names for the abbreviated author information.
% "Long" labels are created in calc.label, using the routine my.full.label
% to format author and editor fields.
%
% There are 4 cases for labels.   (n=3 in the example)
% a) one author             Foo
% b) one to n               Foo, Bar and Baz
% c) use of "and others"    Foo, Bar et al.
% d) more than n            Foo et al.
%
FUNCTION {format.lab.names}
{ 's :=
  s num.names$ 'numnames :=
  numnames #2 >    % change number to number of others allowed before
       % forcing "et al".
    { s #1 "{vv~}{ll}" format.name$ " et~al." * }
    {
      numnames #1 - 'namesleft :=
      #2 'nameptr :=
      s #1 "{vv~}{ll}" format.name$
  { namesleft #0 > }
  { nameptr numnames =
      { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
    { " et~al." * }
    { " and " * s nameptr "{vv~}{ll}" format.name$ * }
        if$
      }
      { ", " * s nameptr "{vv~}{ll}" format.name$ * }
    if$
    nameptr #1 + 'nameptr :=
    namesleft #1 - 'namesleft :=
  }
      while$
    }
  if$
}

FUNCTION {author.key.label}
{ author empty$
    { key empty$
          { "no key, author in " cite$ * warning$
            cite$ #1 #3 substring$ }
         'key
      if$
    }
    { author format.lab.names }
  if$
}

FUNCTION {editor.key.label}
{ editor empty$
    { key empty$
          { "no key, editor in " cite$ * warning$
            cite$ #1 #3 substring$ }
          'key
        if$
     }
     { editor format.lab.names }
  if$
}

FUNCTION {author.key.organization.label}
{ author empty$
    { organization empty$
  { key empty$
      { "no key, author or organization in " cite$ * warning$
              cite$ #1 #3 substring$ }
      'key
    if$
  }
        { organization }
      if$
    }
    { author format.lab.names }
  if$
}

FUNCTION {editor.key.organization.label}
{ editor empty$
    { organization empty$
  { key empty$
      { "no key, editor or organization in " cite$ * warning$
              cite$ #1 #3 substring$ }
      'key
    if$
  }
        { organization }
      if$
    }
    { editor format.lab.names }
  if$
}

FUNCTION {author.editor.key.label}
{ author empty$
    { editor empty$
          { key empty$
               { "no key, author, or editor in " cite$ * warning$
                 cite$ #1 #3 substring$ }
             'key
           if$
         }
          { editor format.lab.names }
      if$
    }
    { author format.lab.names }
  if$
}

FUNCTION {calc.label}
{ 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$

  author empty$  
    { editor empty$
        { organization empty$
           { "no author, editor, or organization in " cite$ * warning$
             "??" }
           { organization }
           if$
        }
        { editor my.full.label }
        if$
    }
    { author my.full.label }
  if$
  

  "}{" * swap$ * "}{" *

  % save the year for sort processing afterwards (adding a, b, c, etc.)
  %
  year field.or.null purify$ #-1 #4 substring$
  'label.year :=
}

FUNCTION {make.bibitem.label}
{ 

  author empty$  
    { editor empty$
        { organization empty$
           { "no author, editor, or organization in " cite$ * warning$
             "??" }
           { organization }
           if$
        }
        { editor my.full.label }
        if$
    }
    { author my.full.label }
  if$
  
  't :=
  
   t "(" * sort.year * ")" * t *
    booktitle empty$ journal empty$ and 
      {
        title empty$
          'skip$
          { ", \textit{" * title * "}, \textit{op. cit.}" * } 
        if$
      }  
      { ", ``" * title * ",'' \textit{op. cit.}" * }
    if$

    write$ 
 
%% format citing label as 
%%  \bibitem[Cantini(1989)Cantini, ``Notes on Formal Theories of Truth,'' \textit{op. cit.}]}{...} 

% save the year for sort processing afterwards (adding a, b, c, etc.)
%
  year field.or.null purify$ #-1 #4 substring$ 'label.year :=
}


FUNCTION {output.bibitem}
{ newline$

  "\bibitem[" write$
  make.bibitem.label
  "]{" write$
       cite$ write$
  "}" write$
  newline$
  ""
  before.all 'output.state :=
}

FUNCTION {article}
{ output.bibitem
  format.authors
  author format.key output      
  format.main.title
  
  title empty$ 
    'skip$
    'new.line
  if$
  
  format.jour.vol 
  fin.entry
}

FUNCTION {book}
{ output.bibitem
  format.authors
  format.btitle
  
  format.bvolume 
  format.number.series 
  format.address.publisher.year 
      
  fin.entry
}

FUNCTION {booklet} { book }
FUNCTION {manual} { book }
FUNCTION {proceedings} { book }


FUNCTION {incollection}
{ output.bibitem
  format.authors
  author format.key output       % added

  format.main.title  
  
  title empty$ 
    'skip$
    'new.line
  if$
  
  format.in.ed.booktitle 
  format.number.series 

  format.address.publisher.year
  insert.comma
  format.chapter.pages output

  fin.entry
}

FUNCTION {inproceedings} { incollection }
FUNCTION {conference} { incollection }
FUNCTION {inbook} { incollection }
FUNCTION {misc} { incollection }


FUNCTION {phdthesis}
{ output.bibitem
  format.authors
  author format.key output      
  format.main.title 

  title empty$ 
    'skip$
    'new.line
  if$
  
  type$ "mastersthesis"  =
    {"Master's thesis"}
    {"Ph.\ D. thesis"}
  if$   
  format.thesis.type output new.line
   
  school output.comma
  address output.comma
  output.year.check 
  fin.entry
}
FUNCTION {mastersthesis}{phdthesis}


FUNCTION {techreport}
{ output.bibitem
  format.authors
  author format.key output      
  format.main.title  
  title empty$ 
    'skip$
    'new.line
  if$
  
  format.tr.number output  new.line
  
  institution output.comma
  address output.comma
  output.year.check 
  fin.entry
}

FUNCTION {default.type} { book }

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 {ai} {"Artificial Intelligence"}

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"}

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 {sort.format.names}
{ 's :=
  #1 'nameptr :=
  ""
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { nameptr #1 >
          { "   " * }
         'skip$
      if$
      s nameptr "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}" format.name$ 't :=
      nameptr numnames = t "others" = and
          { " et~al" * }
          { 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 {editor.sort}
{ editor empty$
    { key empty$
         { "to sort, need editor or key in " cite$ * warning$
           ""
         }
         { key sortify }
      if$
    }
    { editor sort.format.names }
  if$
}

FUNCTION {author.editor.sort}
{ author empty$
    { "missing author in " cite$ * warning$
      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$
  }
  { organization 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$
  }
  { organization sortify }
      if$
    }
    { editor sort.format.names }
  if$
}

FUNCTION {presort}
{ calc.label sortify 
  year field.or.null purify$ #-1 #4 substring$ * 
  "    "
  *
  type$ "book" =
  type$ "inbook" =
  or
    'author.editor.sort
    { type$ "proceedings" =
  'editor.organization.sort
  { type$ "manual" =
      'author.organization.sort
      'author.sort
    if$
  }
      if$
    }
  if$
  #1 entry.max$ substring$        
  'sort.label :=                  
  sort.label                      
  *
  "    "
  *
  title field.or.null
  sort.format.title
  *
  #1 entry.max$ substring$
  'sort.key$ :=
}

ITERATE {presort}

SORT             % by label, year, author/editor, title

STRINGS { last.label next.extra }

INTEGERS { last.extra.num }

FUNCTION {initialize.extra.label.stuff}
{ #0 int.to.chr$ 'last.label :=
  "" 'next.extra :=
  #0 'last.extra.num :=
}

FUNCTION {forward.pass}
{ last.label
  calc.label year field.or.null purify$ #-1 #4 substring$ * 
  #1 entry.max$ substring$ =     
     { last.extra.num #1 + 'last.extra.num :=
       last.extra.num int.to.chr$ 'extra.label :=
     }
     { "a" chr.to.int$ 'last.extra.num :=
       "" 'extra.label :=
       calc.label year field.or.null purify$ #-1 #4 substring$ *
       #1 entry.max$ substring$ 'last.label := 
     }
  if$
}

FUNCTION {reverse.pass}
{ next.extra "b" =
    { "a" 'extra.label := }
     'skip$
  if$
  label.year extra.label * 'sort.year :=
  extra.label 'next.extra :=
}

EXECUTE {initialize.extra.label.stuff}

ITERATE {forward.pass}

REVERSE {reverse.pass}

FUNCTION {bib.sort.order}
{ sort.label
  "    "
  *
  year field.or.null sortify
  *
  "    "
  *
  title field.or.null
  sort.format.title
  *
  #1 entry.max$ substring$
  'sort.key$ :=
}

ITERATE {bib.sort.order}

SORT             

FUNCTION {begin.bib}

{ preamble$ empty$
    'skip$
    { preamble$ write$ newline$ }
  if$
  "\begin{thebibliography}{}" write$ newline$
  "% BibTex style file: jphil.bst, 2026-04-09" write$ newline$
}


EXECUTE {begin.bib}

EXECUTE {init.state.consts}

ITERATE {call.type$}

FUNCTION {end.bib}
{ newline$
  "\end{thebibliography}" write$ newline$
}

EXECUTE {end.bib}

jphilart.cls · 48 KB

48 KB — too long to show here. It arrives with the project.

sample.tex — the file that is compiled · 12 KB
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                                                               %%
%% This is the sample.tex file for the jphilart document class.  %%
%%                                                               %%
%% You need the jphilart.cls in your current directory or in any %%
%% directory scanned for cls files by your latex engine.         %%
%%                                                               %%
%% Manual inclusion of page layout commands is useless.          %%
%%                                                               %%
%% Note that any complex file will produce delayed publication!  %%
%%                                                               %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% for lead article use class option: leadarticle
\documentclass{jphilart}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% The following items will be set by the Managing Editor.       %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\pubyear{2024}
\pubmonth{0}
\volume{0}
\issue{0}
\firstpage{1}
\lastpage{1}
% \copyrightholder{}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Please add here your own packages (be minimalistic please!):  %%
%% Please avoid using exotic packages and keep things simple.    %%
%% It is not necessary to include ams* and graphicx packages     %%
%% since they are automatically included by the jphilart class.  %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{verbatim}
%\usepackage{cleveref}  % uncomment to use this package

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Please add your own macros and environments below             %%
%% If possible, avoid using \def and use instead \newcommand     %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\startlocaldefs
\newcommand{\ABS}[1]{\left(#1\right)} % example of author macro
\newcommand{\jphilart}{\emph{jphilart}\ } % another example of author macro
\newtheorem{theorem}{Theorem} % example of author environment
\newtheorem*{fact*}{Fact} % another example of author environment
\newtheorem{proposition}[theorem]{Proposition} % another example of author environment
\endlocaldefs
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% No macro definitions below this line please!                  %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}
\begin{frontmatter}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Title (please edit and customize):                            %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\runtitle{Introduction to the \jphilart Class}
\title{Your paper} % \thanks is optional
% \subtitle{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Authors (please edit and customize):                          %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{aug}
\author{First-Name Surname}
\address{Address of the Author}
\end{aug}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Review essays and book reviews (please edit and customize):
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \begin{review}
% \title{Book title} \author{Book author}.
% Publisher, year. Pages. Price.
% \end{review}
\end{frontmatter}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Please replace what follows by the body of your article       %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\lettrine{T}he $\LaTeXe$ class \jphilart is designed for typesetting of articles
for the \textit{Journal of Philosophy}. The \jphilart class comes with
a commented sample file called \texttt{sample.tex}. You are probably
reading the PDF version of this sample file, compiled with a pdflatex
engine.

{Papers using the \LaTeX\ class \jphilart are published faster}.
The \textit{Journal of Philosophy} needs a standardized layout for all
papers. For that reason, you are strongly encouraged to use the \LaTeX\
class \jphilart for your papers.

{An easy way to prepare an article for publication in the
    \textit{Journal of Philosophy} is to edit the source file
    \texttt{sample.tex} for this document. Replace the main
    body of the file with the main body of your article. Supply
    all metadata (title, authors, affiliations) that are requested
    in the latex file.}

You need a copy of the \texttt{jphilart.cls} file in your directory%
\footnote{Or stored in any location that is scanned for \texttt{cls} files by your
\LaTeX\ engine.} in order to compile documents based on the \jphilart
class, such as \texttt{sample.tex}.

The \jphilart document class loads automatically the following packages:
\begin{center}
  \ttfamily
  amsmath, amsthm, amsfonts, amssymb, graphicx, enumitem, fontenc,
  baskervald, lettrine, textcase
\end{center}
It is thus not necessary to add \verb+\usepackage+ load commands for
these packages to your latex file. However, you may want to load
additional packages, such as the \emph{cleveref} package by using a
\verb+\usepackage+ command. The precise location of these extra load
commands is clearly mentioned in the \texttt{sample.tex} file. The
\jphilart class provides various environments, and also important commands
such as \verb+\title+, \verb+\author+, etc.

\section{Fonts}

The default font used by the \jphilart class is \emph{NewBaskerville},
i.e. it is checked if \texttt{t1pnb.fd} file exists in the \LaTeX\ system.
If it does not, then the \emph{Baskervaldx} package is used as alternative.

\emph{Latin Modern Sans} and \emph{Latin Modern Mono} are used for
\textsf{sans serif} and \texttt{typewriter} fonts.\vfill\eject

New font shape macro \verb+\textscit+ is introduced for \emph{italic}+\textsc{small caps} shape.

The first letter of the article is typeset larger than the rest of the text.
The \jphilart class loads the \texttt{lettrine} package for this purpose.

\section{Section headings}

In the \jphilart class, section titles starting with \verb+\subsection+ are formatted as a
run-in title, like the standard \verb+\paragraph+. Also at the end of these
titles punctuation will be automatically inserted if missing.

\subsection{A sub-section without punctuation} Some text

\subsubsection{Another sub-sub-section with punctuation.} Some text

\paragraph{A paragraph with exclamation mark!} Some text

\subparagraph{A sub-paragraph with question mark?} Some text

\section{Equations}\label{se:mysection}

\jphilart class loads an \texttt{amsmath} package for mathematical typesseting.
Display equations and their numbers are placed on the left-hand side.

The following numbered displayed equation is the first in section \ref{se:mysection}:%
\begin{equation}\label{eq:myequation}
d(\alpha) \in \mathcal{D};
\end{equation}
It is produced with the following source code:
\begin{verbatim}
\begin{equation}\label{eq:myequation}
d(\alpha) \in \mathcal{D};
\end{equation}\end{verbatim}
You may refer to it by using \verb+\eqref{eq:myequation}+ which
produces~\eqref{eq:myequation}.

Here is another numbered displayed equation
\begin{equation}
\begin{split}
&d(\neg\phi) = d(\phi);\\
&d(\phi\wedge\psi) = d(\phi)\odot d(\psi);\\
&d(\phi\vee\psi) = d(\phi)\oplus d(\psi);
\end{split}
\end{equation}

\section{Quotations}

You may add a quotation by using the \texttt{quote} environment.
\begin{quote}
   This is the body of the quotation.
   It is inserted with the following environment
   \begin{verbatim}
       \begin{quote}
           This is the body of ...
       \end{quote}\end{verbatim}
\end{quote}

\section{Enunciations}

\jphilart class loads \texttt{asmthm} package for typesetting enunciation
environments. Author may use \verb+\newtheorem+ command in order to define
environment for further use. The precise location of these extra load
commands is clearly mentioned in the \texttt{sample.tex} file.

\begin{theorem}[My theorem]\label{th:1}
    This is the body of the theorem. This theorem has a name between
    parentheses, and this is implemented by adding an optional parameter
    between square brackets to the theorem environment, namely
   \begin{verbatim}
       \begin{theorem}[My theorem] \label{th:1}
           This is the body of ...
       \end{theorem}\end{verbatim}
\end{theorem}

\begin{proof}[Proof of Theorem \ref{th:1}]
    This is the body of the proof of the theorem above. This proof has a name,
    and this is implemented by adding an optional parameter between square
    brackets to the proof environment, namely
    \begin{verbatim}
        \begin{proof}[Proof of Theorem \ref{th:1}]
            This is the body of the proof of ...
        \end{proof}\end{verbatim}
    The proof ends at the square box.
\end{proof}

Note that a square box $\square$ is automatically added at the end of the
proof by the environment ``proof''.

Let us give some more examples of environments in action.

\begin{fact*}[My fact]
    Body of the Fact without a counter.
    It is achieved by using asterisks in the definition, namely
    \begin{verbatim}
        \newtheorem*{fact*}{Fact}\end{verbatim}
\end{fact*}

\begin{proof}
    This is the body of a proof environment without name, obtained using
\end{proof}

\begin{proposition}
    Body of the proposition. This proposition does not have a name.
    Its counter is related to theorem environment counter by the definition
    \begin{verbatim}
        \newtheorem{proposition}[theorem]{Proposition}\end{verbatim}
\end{proposition}

\section{How to include graphics}

You may include graphics as follows
\begin{small}
\begin{verbatim}
\begin{figure}[htbp]
  \centering % gives better spacing than \begin{center}...\end{center}
  \includegraphics[scale=1.0]{filename}
  \caption{This is my figure.}
  \label{fi:myfigure}
\end{figure}\end{verbatim}
\end{small}

Note that in a figure environment, the \verb+\label+ should always appear
after a \verb+\caption+ in order to produce a valid reference to the figure.
You may play with the options \verb+[htbp]+ (see the \LaTeXe\ documentation
for their meaning) and with the options of the \verb+\includegraphics+ command
(see the documentation of the \texttt{graphicx} package).

\section{How to include bibliography}



No bibliographies will be published; bibliographical
material should be put into notes\footnote{Journal citations should include:
the first and last name of author(s), name of journal in full, volume number,
issue number, month or season, year, the article's full range of pages, and,
if applicable, the specified page or pages.

Book references should include: the first and last name of author,
publisher, U.S. city of publication, and date.}.
To present bibliography from BIB files as notes you may follow
these steps:
\begin{enumerate}
  \item Add \verb+\bibliographystyle+ to TEX file, e.g.:\\
    \verb+\bibliographystyle{jphil}+\\
    \verb+\bibliography{refs}+

  \item Compile file: \texttt{pdflatex foo.tex}

  \item Generate BBL: \texttt{bibtex foo}

  \item Add \verb+\nobibliography*+:\\
    \verb+\usepackage{natbib}+\\
    \verb+\usepackage{bibentry}+\\
    \verb+\nobibliography*+

  \item Edit paper using \verb+\bibentry+/\verb+\citeauthor*+ commands: use \verb+\bibentry+ for the first citation (outputs the full entry) and \verb+\citeauthor*+ for subsequent ones (outputs the shortened form).

  \item Compile file two times:\\
    \texttt{pdflatex foo.tex}\\
    \texttt{pdflatex foo.tex}

  \item Please note:
  \begin{itemize}
    \item[--] BBL file must be saved in the same folder as TEX file
    \item[--] To hide the complete list of bibliography at the end of the paper change:\\
      \verb+\bibliography{refs}+\\
    to\\
      \verb+\nobibliography{refs}+
  \end{itemize}
\end{enumerate}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% You have reached the end of your document.                    %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{document}

%% EOF
template.tex · 4 KB
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                                                               %%
%% This is the template.tex file for the jphilart document class.%%
%%                                                               %%
%% You need the jphilart.cls in your current directory or in any %%
%% directory scanned for cls files by your latex engine.         %%
%%                                                               %%
%% Manual inclusion of page layout commands is useless.          %%
%%                                                               %%
%% Note that any complex file will produce delayed publication!  %%
%%                                                               %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% for lead article use class option: leadarticle
\documentclass{jphilart}

%% for the bibliographical material as notes uncomment these three lines
%\usepackage{natbib}
%\usepackage{bibentry}
%\nobibliography*

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% The following items will be set by the Managing Editor.       %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\pubyear{2018}
\pubmonth{0}
\volume{0}
\issue{0}
\firstpage{1}
\lastpage{1}
%\copyrightholder{}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Please add here your own packages (be minimalistic please!):  %%
%% Please avoid using exotic packages and keep things simple.    %%
%% It is not necessary to include ams* and graphicx packages     %%
%% since they are automatically included by the jphilart class.  %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Please add your own macros and environments below             %%
%% If possible, avoid using \def and use instead \newcommand     %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\startlocaldefs
\endlocaldefs
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% No macro definitions below this line please!                  %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\begin{frontmatter}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Title                                                         %%
%% Acknowledgements: \title{ \thanks{I would like to thank...}}  %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\runtitle{}
\title{} 
% \title{ \thanks{}}
% \subtitle{}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Authors                                                       %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{aug}
\author{}
\address{}
\end{aug}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Review essays and book reviews                                %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \begin{review}
% \title{} \author{}.
% \end{review}
\end{frontmatter}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Article body                                                  %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Bibliography                                                  %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Uncomment the two lines below; compile file with pdflatex;    %%
%% to get the BBL file compile this file with bibtex; in the     %%
%% text use \bibentry or \citeauthor* macros. Read sample.pdf    %%
%% for more information about the bibliography.                  %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\bibliographystyle{jphil}
%\bibliography{refs}

\end{document}

%% EOF

The first page, as this template compiles today. Click it to enlarge, and again to shrink. Open the file ↗