← All templates

Journal for Geometry and Graphics (jgg)

Class of the Journal for Geometry and Graphics of the International Society for Geometry and Graphics (geometry for architecture, design and engineering graphics), with the journal's template article and BibTeX style.

Create an account to use this
Category
Journal
Document class
jgg (jgg.cls) — ships with TeX Live
Workflow
Journal manuscript — submissions and revision rounds
Author
International Society for Geometry and Graphics (ISGG)
Source
International Society for Geometry and Graphics (ISGG)
Licence
jgg.cls: GNU General Public License. The sample text is International Society for Geometry and Graphics (ISGG)'s, provided for authors preparing a submission.

These are the publisher’s own files. This project starts from International Society for Geometry and Graphics (ISGG)’s package for this publication — their manuscript, their jgg.cls, their bibliography style — so what compiles here is what they would have given you.

International Society for Geometry and Graphics (ISGG) serves this exact file to Journal for Geometry and Graphics. Check International Society for Geometry and Graphics (ISGG)’s author pages for the current instructions.

What you get

  • COPYING · 34 KB
  • bibtemplate.bib · 1 KB
  • jgg.bst · 28 KB
  • jgg.cls · 7 KB
  • jggtemplate.tex — the file that is compiled · 7 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

COPYING — binary, 34 KB

bibtemplate.bib · 1 KB
@String{JGG = {J. Geom. Graphics}}
@Article{palej97,
  author =       {Palej, M.},
  title =        {A Simple Proof for the Theorems of {Pascal} and {Pappus}},
  journal =      JGG,
  year =         1997,
  volume =       1,
  number =       1,
  pages =        {1--4}
}
@Book{icgg20,
  editor =       {Cheng, Liang-Yee},
  title =        {ICGG 2020 -- Proceedings of the 19th International Conference
                  on Geometry and Graphics},
  publisher =    {Springer},
  year =         2021,
  series =       {Advances in Intelligent Systems and Computing},
  doi =          {10.1007/978-3-030-63403-2},
}
@Proceedings{icgg12,
  title =        {Proceedings of the 15th International Conference on Geometry
                  and Graphics ICGG},
  year =         2012,
  editor =       {Zsombor-Murray, Paul and Sprecher, Aaron and Angeles, Bruno},
  isbn =         {978-0-7717-0717-9},
}
@Proceedings{icgg16,
  title =        {Proceedings of the 17th International Conference on Geometry
                  and Graphics ICGG},
  year =         2016,
  editor =       {Han, Baoling},
}
jgg.bst · 28 KB
%%
%% This is file `jgg.bst',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% merlin.mbs  (with options: `nm-init,ed-au,nmft,nmft-sc,nmand-rm,xmth,tit-it,atit-u,jttl-rm,vol-bf,volp-com,num-xser,jnm-x,isbn,issn,doi,au-col,ppx,ed,abr,ednx,xedn,jabr,url,url-blk,nfss,')
%% ----------------------------------------
%% *** BibTeX Style for the Journal of Geometry and Graphics ***
%% 
%% Copyright 1994-2007 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}[2007/04/24 4.20 (PWD, AO, DPC)]
 %   For use with BibTeX version 0.99a or later
 %-------------------------------------------------------------------
 % This bibliography style file is intended for texts in ENGLISH
 % This is a numerical citation style, and as such is standard LaTeX.
 % It requires no extra package to interface to the main text.
 % The form of the \bibitem entries is
 %   \bibitem{key}...
 % Usage of \cite is as follows:
 %   \cite{key} ==>>          [#]
 %   \cite[chap. 2]{key} ==>> [#, chap. 2]
 % where # is a number determined by the ordering in the reference list.
 % The order in the reference list is alphabetical by authors.
 %---------------------------------------------------------------------

ENTRY
  { address
    author
    booktitle
    chapter
    doi
    arxiv
    edition
    editor
    eid
    howpublished
    institution
    isbn
    issn
    journal
    key
    month
    note
    number
    organization
    pages
    publisher
    school
    series
    title
    type
    url
    volume
    year
  }
  {}
  { label }
INTEGERS { output.state before.all mid.sentence after.sentence after.block }
FUNCTION {init.state.consts}
{ #0 'before.all :=
  #1 'mid.sentence :=
  #2 'after.sentence :=
  #3 'after.block :=
}
STRINGS { s t}
FUNCTION {output.nonnull}
{ 's :=
  output.state mid.sentence =
    { ", " * write$ }
    { output.state after.block =
        { add.period$ write$
          newline$
          "\newblock " write$
        }
        { output.state before.all =
            'write$
            { add.period$ " " * write$ }
          if$
        }
      if$
      mid.sentence 'output.state :=
    }
  if$
  s
}
FUNCTION {output}
{ duplicate$ empty$
    'pop$
    'output.nonnull
  if$
}
FUNCTION {output.check}
{ 't :=
  duplicate$ empty$
    { pop$ "empty " t * " in " * cite$ * warning$ }
    'output.nonnull
  if$
}
FUNCTION {fin.entry}
{ add.period$
  write$
  newline$
}

FUNCTION {new.block}
{ output.state before.all =
    'skip$
    { after.block 'output.state := }
  if$
}
FUNCTION {new.sentence}
{ output.state after.block =
    'skip$
    { output.state before.all =
        'skip$
        { after.sentence 'output.state := }
      if$
    }
  if$
}
FUNCTION {add.blank}
{  " " * before.all 'output.state :=
}

FUNCTION {add.colon}
{ duplicate$ empty$
    'skip$
    { ":" * add.blank }
  if$
}

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.checka}
{ empty$
    'skip$
    'new.block
  if$
}
FUNCTION {new.block.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.block
  if$
}
FUNCTION {new.sentence.checka}
{ empty$
    'skip$
    'new.sentence
  if$
}
FUNCTION {new.sentence.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.sentence
  if$
}
FUNCTION {field.or.null}
{ duplicate$ empty$
    { pop$ "" }
    'skip$
  if$
}
FUNCTION {emphasize}
{ duplicate$ empty$
    { pop$ "" }
    { "\emph{" swap$ * "}" * }
  if$
}
FUNCTION {bolden}
{ duplicate$ empty$
    { pop$ "" }
    { "\textbf{" swap$ * "}" * }
  if$
}
FUNCTION {scaps}
{ duplicate$ empty$
    { pop$ "" }
    { "\textsc{" swap$ * "}" * }
  if$
}
FUNCTION {bib.name.font}
{ scaps }
FUNCTION {bib.fname.font}
{ bib.name.font }
FUNCTION {tie.or.space.prefix}
{ 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}
{ "eds." }

FUNCTION {bbl.editor}
{ "ed." }

FUNCTION {bbl.edby}
{ "edited by" }

FUNCTION {bbl.edition}
{ "ed." }

FUNCTION {bbl.volume}
{ "vol." }

FUNCTION {bbl.of}
{ "of" }

FUNCTION {bbl.number}
{ "no." }

FUNCTION {bbl.nr}
{ "no." }

FUNCTION {bbl.in}
{ "in" }

FUNCTION {bbl.pages}
{ "" }

FUNCTION {bbl.page}
{ "" }

FUNCTION {bbl.chapter}
{ "chap." }

FUNCTION {bbl.techrep}
{ "Tech. Rep." }

FUNCTION {bbl.mthesis}
{ "Master's thesis" }

FUNCTION {bbl.phdthesis}
{ "Ph.D. thesis" }

MACRO {jan} {"Jan."}

MACRO {feb} {"Feb."}

MACRO {mar} {"Mar."}

MACRO {apr} {"Apr."}

MACRO {may} {"May"}

MACRO {jun} {"Jun."}

MACRO {jul} {"Jul."}

MACRO {aug} {"Aug."}

MACRO {sep} {"Sep."}

MACRO {oct} {"Oct."}

MACRO {nov} {"Nov."}

MACRO {dec} {"Dec."}

MACRO {acmcs} {"ACM Comput. Surv."}

MACRO {acta} {"Acta Inf."}

MACRO {cacm} {"Commun. ACM"}

MACRO {ibmjrd} {"IBM J. Res. Dev."}

MACRO {ibmsj} {"IBM Syst.~J."}

MACRO {ieeese} {"IEEE Trans. Software Eng."}

MACRO {ieeetc} {"IEEE Trans. Comput."}

MACRO {ieeetcad}
 {"IEEE Trans. Comput. Aid. Des."}

MACRO {ipl} {"Inf. Process. Lett."}

MACRO {jacm} {"J.~ACM"}

MACRO {jcss} {"J.~Comput. Syst. Sci."}

MACRO {scp} {"Sci. Comput. Program."}

MACRO {sicomp} {"SIAM J. Comput."}

MACRO {tocs} {"ACM Trans. Comput. Syst."}

MACRO {tods} {"ACM Trans. Database Syst."}

MACRO {tog} {"ACM Trans. Graphic."}

MACRO {toms} {"ACM Trans. Math. Software"}

MACRO {toois} {"ACM Trans. Office Inf. Syst."}

MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}

MACRO {tcs} {"Theor. Comput. Sci."}

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$
}
FUNCTION {format.url}
{ url empty$
    { "" }
    { "\urlprefix\url{" url * "}" * }
  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
      "{f.~}{vv~}{ll}{, jj}"
      format.name$
      bib.name.font
      bibinfo bibinfo.check
      't :=
      nameptr #1 >
        {
          namesleft #1 >
            { ", " * t * }
            {
              s nameptr "{ll}" format.name$ duplicate$ "others" =
                { 't := }
                { pop$ }
              if$
              numnames #2 >
                { "," * }
                'skip$
              if$
              t "others" =
                {
                  " " * bbl.etal bib.name.font *
                }
                {
                  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.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.isbn}
{ isbn "isbn" bibinfo.check
  duplicate$ empty$ 'skip$
    {
      new.block
      "ISBN " swap$ *
    }
  if$
}

FUNCTION {format.issn}
{ issn "issn" bibinfo.check
  duplicate$ empty$ 'skip$
    {
      new.block
      "ISSN " swap$ *
    }
  if$
}

FUNCTION {format.doi}
{ doi "doi" bibinfo.check
  duplicate$ empty$ 'skip$
    {
      new.block
      "\doi{" swap$ * "}" *
    }
  if$
}
FUNCTION {format.arxiv}
{ arxiv "arxiv" bibinfo.check
  duplicate$ empty$ 'skip$
    {
      new.block
      "\arxiv{" swap$ * "}" *
    }
  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
  "title" bibinfo.check
  duplicate$ empty$ 'skip$
    {
      emphasize
    }
  if$
}
FUNCTION {output.bibitem}
{ newline$
  "\bibitem{" 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}
{
  ""
  duplicate$ empty$
  year  "year"  bibinfo.check duplicate$ empty$
    { swap$ 'skip$
        { "there's a month but no year in " cite$ * warning$ }
      if$
      *
    }
    { swap$ 'skip$
        {
          swap$
          " " * swap$
        }
      if$
      *
    }
  if$
}
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
        {
          n.dashify
        }
        {
        }
      if$
      "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$
  bolden
  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.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.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 {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
  month empty$ year empty$ note empty$
  and and and and and
  key empty$ not and
    { "all relevant fields are empty in " cite$ * warning$ }
    'skip$
  if$
}
FUNCTION {format.thesis.type}
{ type 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}
{
  key duplicate$ empty$
    { pop$
      journal duplicate$ empty$
        { "need key or journal for " cite$ * " to crossref " * crossref * warning$ }
        { "journal" bibinfo.check emphasize word.in swap$ * }
      if$
    }
    { word.in swap$ * " " *}
  if$
  " \cite{" * crossref * "}" *
}
FUNCTION {format.crossref.editor}
{ editor #1 "{vv~}{ll}" format.name$
  "editor" bibinfo.check
  editor num.names$ duplicate$
  #2 >
    { pop$
      "editor" bibinfo.check
      " " * bbl.etal
      *
    }
    { #2 <
        'skip$
        { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
            {
              "editor" bibinfo.check
              " " * bbl.etal
              *
            }
            {
             bbl.and space.word
              * editor #2 "{vv~}{ll}" format.name$
              "editor" bibinfo.check
              *
            }
          if$
        }
      if$
    }
  if$
}
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$
  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$
              "" *
            }
            { series emphasize * }
          if$
        }
        { key * }
      if$
    }
    { format.crossref.editor * }
  if$
  " \cite{" * crossref * "}" *
}
FUNCTION {format.incoll.inproc.crossref}
{
  editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
        { format.booktitle duplicate$ empty$
            { "need editor, key, or booktitle for " cite$ * " to crossref " *
              crossref * warning$
            }
            { word.in swap$ * }
          if$
        }
        { word.in key * " " *}
      if$
    }
    { word.in format.crossref.editor * " " *}
  if$
  " \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 {article}
{ output.bibitem
  format.authors "author" output.check
  add.colon
  new.block
  format.title "title" output.check
  new.block
  crossref missing$
    {
      journal
      "journal" bibinfo.check
      "journal" output.check
      add.blank
      format.vol.num.pages output
      format.date "year" output.check
    }
    { format.article.crossref output.nonnull
      format.pages output
    }
  if$
  format.issn output
  format.doi output
  format.arxiv output
  new.block
  format.url output
  new.block
  format.note output
  fin.entry
}
FUNCTION {book}
{ output.bibitem
  author empty$
    { format.editors "author and editor" output.check
      add.colon
    }
    { format.authors output.nonnull
      add.colon
      crossref missing$
        { "author and editor" editor either.or.check }
        'skip$
      if$
    }
  if$
  new.block
  format.btitle "title" output.check
  crossref missing$
    { format.bvolume output
      new.block
      format.number.series output
      new.sentence
      format.publisher.address output
    }
    {
      new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date "year" output.check
  format.isbn output
  format.doi output
  format.arxiv output
  new.block
  format.url output
  new.block
  format.note output
  fin.entry
}
FUNCTION {booklet}
{ output.bibitem
  format.authors output
  add.colon
  new.block
  format.title "title" output.check
  new.block
  howpublished "howpublished" bibinfo.check output
  address "address" bibinfo.check output
  format.date output
  format.isbn output
  format.doi output
  format.arxiv output
  new.block
  format.url output
  new.block
  format.note output
  fin.entry
}

FUNCTION {inbook}
{ output.bibitem
  author empty$
    { format.editors "author and editor" output.check
      add.colon
    }
    { format.authors output.nonnull
      add.colon
      crossref missing$
        { "author and editor" editor either.or.check }
        'skip$
      if$
    }
  if$
  new.block
  format.btitle "title" output.check
  crossref missing$
    {
      format.bvolume output
      format.chapter.pages "chapter and pages" output.check
      new.block
      format.number.series output
      new.sentence
      format.publisher.address output
    }
    {
      format.chapter.pages "chapter and pages" output.check
      new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date "year" output.check
  crossref missing$
    { format.isbn output }
    'skip$
  if$
  format.doi output
  format.arxiv output
  new.block
  format.url output
  new.block
  format.note output
  fin.entry
}

FUNCTION {incollection}
{ output.bibitem
  format.authors "author" output.check
  add.colon
  new.block
  format.title "title" output.check
  new.block
  crossref missing$
    { format.in.ed.booktitle "booktitle" output.check
      format.bvolume output
      format.number.series output
      format.chapter.pages output
      new.sentence
      format.publisher.address output
      format.edition output
      format.date "year" output.check
      format.isbn output
    }
    { format.incoll.inproc.crossref output.nonnull
      format.chapter.pages output
    }
  if$
  format.doi output
  format.arxiv output
  new.block
  format.url output
  new.block
  format.note output
  fin.entry
}
FUNCTION {inproceedings}
{ output.bibitem
  format.authors "author" output.check
  add.colon
  new.block
  format.title "title" output.check
  new.block
  crossref missing$
    { format.in.ed.booktitle "booktitle" output.check
      format.bvolume output
      format.number.series output
      format.pages output
      new.sentence
      publisher empty$
        { format.organization.address output }
        { organization "organization" bibinfo.check output
          format.publisher.address output
        }
      if$
      format.date "year" output.check
      format.isbn output
      format.issn output
    }
    { format.incoll.inproc.crossref output.nonnull
      format.pages output
    }
  if$
  format.doi output
  format.arxiv output
  new.block
  format.url output
  new.block
  format.note output
  fin.entry
}
FUNCTION {conference} { inproceedings }
FUNCTION {manual}
{ output.bibitem
  author empty$
    { organization "organization" bibinfo.check
      duplicate$ empty$ 'pop$
        { output
          address "address" bibinfo.check output
        }
      if$
    }
    { format.authors output.nonnull }
  if$
  add.colon
  new.block
  format.btitle "title" output.check
  author empty$
    { organization empty$
        {
          address new.block.checka
          address "address" bibinfo.check output
        }
        'skip$
      if$
    }
    {
      organization address new.block.checkb
      organization "organization" bibinfo.check output
      address "address" bibinfo.check output
    }
  if$
  format.edition output
  format.date output
  format.doi output
  format.arxiv output
  new.block
  format.url output
  new.block
  format.note output
  fin.entry
}

FUNCTION {mastersthesis}
{ output.bibitem
  format.authors "author" output.check
  add.colon
  new.block
  format.btitle
  "title" output.check
  new.block
  bbl.mthesis format.thesis.type output.nonnull
  school "school" bibinfo.warn output
  address "address" bibinfo.check output
  format.date "year" output.check
  format.doi output
  format.arxiv output
  new.block
  format.url output
  new.block
  format.note output
  fin.entry
}

FUNCTION {misc}
{ output.bibitem
  format.authors output
  add.colon
  title howpublished new.block.checkb
  format.title output
  howpublished new.block.checka
  howpublished "howpublished" bibinfo.check output
  format.date output
  format.doi output
  format.arxiv output
  new.block
  format.url output
  new.block
  format.note output
  fin.entry
  empty.misc.check
}
FUNCTION {phdthesis}
{ output.bibitem
  format.authors "author" output.check
  add.colon
  new.block
  format.btitle
  "title" output.check
  new.block
  bbl.phdthesis format.thesis.type output.nonnull
  school "school" bibinfo.warn output
  address "address" bibinfo.check output
  format.date "year" output.check
  format.doi output
  format.arxiv output
  new.block
  format.url output
  new.block
  format.note output
  fin.entry
}

FUNCTION {proceedings}
{ output.bibitem
  editor empty$
    { organization "organization" bibinfo.check output
    }
    { format.editors output.nonnull }
  if$
  add.colon
  new.block
  format.btitle "title" output.check
  format.bvolume output
  format.number.series output
  editor empty$
    { publisher empty$
        {
          new.sentence
          format.publisher.address output
        }
      if$
    }
    { publisher empty$
        {
          new.sentence
          format.organization.address output }
        {
          new.sentence
          organization "organization" bibinfo.check output
          format.publisher.address output
        }
      if$
     }
  if$
      format.date "year" output.check
  format.isbn output
  format.issn output
  format.doi output
  format.arxiv output
  new.block
  format.url output
  new.block
  format.note output
  fin.entry
}

FUNCTION {techreport}
{ output.bibitem
  format.authors "author" output.check
  add.colon
  new.block
  format.title
  "title" output.check
  new.block
  format.tr.number output.nonnull
  institution "institution" bibinfo.warn output
  address "address" bibinfo.check output
  format.date "year" output.check
  format.doi output
  format.arxiv output
  new.block
  format.url output
  new.block
  format.note output
  fin.entry
}

FUNCTION {unpublished}
{ output.bibitem
  format.authors "author" output.check
  add.colon
  new.block
  format.title "title" output.check
  format.date output
  format.doi output
  format.arxiv output
  new.block
  format.url output
  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 {sort.format.names}
{ 's :=
  #1 'nameptr :=
  ""
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr
      "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}"
      format.name$ 't :=
      nameptr #1 >
        {
          "   "  *
          namesleft #1 = t "others" = and
            { "zzzzz" * }
            { t sortify * }
          if$
        }
        { t sortify * }
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

FUNCTION {sort.format.title}
{ 't :=
  "A " #2
    "An " #3
      "The " #4 t chop.word
    chop.word
  chop.word
  sortify
  #1 global.max$ substring$
}
FUNCTION {author.sort}
{ author empty$
    { key empty$
        { "to sort, need author or key in " cite$ * warning$
          ""
        }
        { key sortify }
      if$
    }
    { author sort.format.names }
  if$
}
FUNCTION {author.editor.sort}
{ author empty$
    { editor empty$
        { key empty$
            { "to sort, need author, editor, or key in " cite$ * warning$
              ""
            }
            { key sortify }
          if$
        }
        { editor sort.format.names }
      if$
    }
    { author sort.format.names }
  if$
}
FUNCTION {author.organization.sort}
{ author empty$
    { organization empty$
        { key empty$
            { "to sort, need author, organization, or key in " cite$ * warning$
              ""
            }
            { key sortify }
          if$
        }
        { "The " #4 organization chop.word sortify }
      if$
    }
    { author sort.format.names }
  if$
}
FUNCTION {editor.organization.sort}
{ editor empty$
    { organization empty$
        { key empty$
            { "to sort, need editor, organization, or key in " cite$ * warning$
              ""
            }
            { key sortify }
          if$
        }
        { "The " #4 organization chop.word sortify }
      if$
    }
    { editor sort.format.names }
  if$
}
FUNCTION {presort}
{ type$ "book" =
  type$ "inbook" =
  or
    'author.editor.sort
    { type$ "proceedings" =
        'editor.organization.sort
        { type$ "manual" =
            'author.organization.sort
            'author.sort
          if$
        }
      if$
    }
  if$
  "    "
  *
  year field.or.null sortify
  *
  "    "
  *
  title field.or.null
  sort.format.title
  *
  #1 entry.max$ substring$
  'sort.key$ :=
}
ITERATE {presort}
SORT
STRINGS { longest.label }
INTEGERS { number.label longest.label.width }
FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
  #1 'number.label :=
  #0 'longest.label.width :=
}
FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
  number.label #1 + 'number.label :=
  label width$ longest.label.width >
    { label 'longest.label :=
      label width$ 'longest.label.width :=
    }
    'skip$
  if$
}
EXECUTE {initialize.longest.label}
ITERATE {longest.label.pass}
FUNCTION {begin.bib}
{ preamble$ empty$
    'skip$
    { preamble$ write$ newline$ }
  if$
  "\begin{thebibliography}{"  longest.label  * "}" *
  write$ newline$
  "\providecommand{\url}[1]{\texttt{#1}}"
  write$ newline$
  "\providecommand{\urlprefix}{URL }"
  write$ newline$
  "\expandafter\ifx\csname urlstyle\endcsname\relax"
  write$ newline$
  "  \providecommand{\doi}[1]{DOI:\discretionary{}{}{}#1}\else"
  write$ newline$
  "  \providecommand{\doi}{DOI:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"
  write$ newline$
  "  \providecommand{\arxiv}[1]{arXiv }"
  write$ newline$
}
EXECUTE {begin.bib}
EXECUTE {init.state.consts}
ITERATE {call.type$}
FUNCTION {end.bib}
{ newline$
  "\end{thebibliography}" write$ newline$
}
EXECUTE {end.bib}
%% End of customized bst file
%%
%% End of file `jgg.bst'.
jgg.cls · 7 KB
% Copyright 2021, Hans-Peter Schröcker, <[email protected]>,
% https://geometrie.uibk.ac.at/schroecker/
%
% This program is free software: you can redistribute it and/or modify it under
% the terms of the GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option) any later
% version.

% This program is distributed in the hope that it will be useful, but WITHOUT ANY
% WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
% PARTICULAR PURPOSE. See the GNU General Public License for more details.

% You should have received a copy of the GNU General Public License along with
% this program. If not, see <http://www.gnu.org/licenses/>.

%% jgg.cls
\NeedsTeXFormat{LaTeX2e}\relax
\ProvidesClass{jgg}%
[2021/01/07, version 0.01; Style to typeset articles for the Journal for
Geometry and Graphics ]

%%% Load base class with appropriate options.
\LoadClass[paper=letter,twoside,12pt,usegeometry=true]{scrartcl}

%% Setup class options.
\RequirePackage{kvoptions}
\SetupKeyvalOptions{family=JGG, prefix=JGG@}

%%% Option `online' should be set to true for typesetting individual articles
%%% for online publication.
\DeclareBoolOption[true]{online}

%%% Option `volume' should be set to true for typesetting complete volumes, as
%%% opposed to individual articles.
\DeclareBoolOption[false]{volume}

%%% Option `showpagenumbers' should be set to true if pagenumbers are to be
%%% displayed.
\DeclareBoolOption[true]{showpagenumbers}

\ProcessKeyvalOptions*

%%% Set boolean values according to class options
\RequirePackage{xifthen}
\newboolean{isOnline}
\ifJGG@online
  \setboolean{isOnline}{true}
\else
  \setboolean{isOnline}{false}
\fi
\newboolean{isVolume}
\ifJGG@volume
  \setboolean{isVolume}{true}
\else
  \setboolean{isVolume}{false}
\fi
\newboolean{showPageNumbers}
\ifJGG@showpagenumbers
  \setboolean{showPageNumbers}{true}
\else
  \setboolean{showPageNumbers}{false}
\fi

%%% Options for typeset article.
\gdef\JGG@Volume{---}
\gdef\JGG@Year{\the\year}
\gdef\JGG@Number{---}
\gdef\JGG@Startpage{1}    % omit pagenumbers if this is -1
\newcommand{\jggvolume}[1]{\gdef\JGG@Volume{#1}}
\newcommand{\jggyear}[1]{\gdef\JGG@Year{#1}}
\newcommand{\jggnumber}[1]{\gdef\JGG@Number{#1}}
\newcommand{\jggstartpage}[1]{\gdef\JGG@Startpage{#1}\setcounter{page}{\JGG@Startpage}}
\AtBeginDocument{\gdef\JGG@Endpage{\ifthenelse{\equal{\JGG@Startpage}{0}}{0}{%
      \@ifundefined{r@JGGReceivedPage}{\pageref{LastPage}}{\pageref{JGGReceivedPage}}}}}

%%% Set headers and footers
\RequirePackage{scrlayer-scrpage}
\newcommand*{\JGG@Shortauthor}{\@author}%
\newcommand*{\JGG@Shorttitle}{\@title}%
\newcommand{\shortauthor}[1]{\gdef\JGG@Shortauthor{#1}%
  \ifthenelse{\boolean{isOnline}}{\hypersetup{pdfauthor={#1}}}{}
}
\newcommand{\shorttitle}[1]{\gdef\JGG@Shorttitle{#1}}
\AtBeginDocument{%
  \ifthenelse{\boolean{isVolume}}{%
    \pagestyle{scrheadings}
    \ohead[\href{https://isgg.net/jgg/}{Journal for Geometry and Graphics}\\Volume \JGG@Volume{} (\JGG@Year), No.~\JGG@Number%
    \ifthenelse{\boolean{showPageNumbers}}{, \JGG@Startpage--\JGG@Endpage}{, \JGG@Startpage--\JGG@Endpage\\(Page numbers are subject to change.)}%
    \vspace*{-27.6mm}]{}
    \chead{\JGG@Shortauthor: \JGG@Shorttitle}
    \ifoot[\vspace*{-38.0mm}\par ISSN 1433-8157/\$ 2.50 \textcopyright{} \JGG@Year{} Heldermann Verlag]{}
    \ofoot[]{}
    \ohead{\normalsize\pagemark}
  }{%
    % ensure proper page numbers
    % set headlines and footlines
    \pagestyle{scrheadings}
    \chead{\JGG@Shortauthor: \JGG@Shorttitle}
    \ohead[\href{https://isgg.net/jgg/}{Journal for Geometry and Graphics}\\Volume \JGG@Volume{} (\JGG@Year), No.~\JGG@Number%
    \ifthenelse{\boolean{showPageNumbers}}{, \JGG@Startpage--\JGG@Endpage}{, \JGG@Startpage--\JGG@Endpage\\(Page numbers are subject to change.)}%
    \vspace*{-27.6mm}]{}
    \ifoot[\vspace*{-38.0mm}\par ISSN 1433-8157/\$ 2.50 \textcopyright{} \JGG@Year{} Heldermann Verlag]{}
    \ofoot[]{}
    \ohead{\normalsize\pagemark}
  }
}

%%% Load some required or useful packages.
\RequirePackage{lmodern}
\RequirePackage{graphicx}
\RequirePackage{lastpage}
\RequirePackage{enumitem}
\setlist{nosep}

%%% Page and paragraph geometry
\RequirePackage[%
  letterpaper,%
  twoside,%
  inner=25.6mm,outer=23.6mm,%
  bottom=19.6mm,top=17.9mm,%
  headsep=2.7mm,%
]{geometry}
\setlength{\parindent}{1.68em}

%%% Set fonts
\setkomafont{title}{\bfseries\upshape}
\setkomafont{sectioning}{\bfseries}
\addtokomafont{section}{\large}
\setkomafont{descriptionlabel}{\bfseries\upshape}
\setkomafont{pageheadfoot}{\normalfont\small}
\setkomafont{caption}{\small}

\RequirePackage{amsmath,amsthm,amsfonts}

%%% Title page
\newcommand*{\JGG@Affiliation}{}%
\newcommand{\affiliation}[1]{\gdef\JGG@Affiliation{#1}}
\renewcommand*{\@maketitle}{%
  \vspace*{16.7mm}
  \begin{center}%
    {\normalfont\bfseries\LARGE
      \@title\par}%
    \vspace*{7.50mm}
    {\begin{tabular}[t]{c}
        % \large
        \bfseries
        \parbox{\linewidth}{\centering\@author}%
      \end{tabular}\par
    }%
    \vspace*{0.0mm}
    {\begin{center}
        % \large
        \JGG@Affiliation
      \end{center}\par
    }%
  \end{center}%
  \enlargethispage{-9mm}% make first page smaller in order to make space for the
                        % Heldermann line.
}%
\gdef\authorseperator{}
\newcommand{\addauthor}[2][]{\ignorespaces\authorseperator#2\textsuperscript{#1}\gdef\authorseperator{, {}}\ignorespaces}
\newcommand{\addaddress}[3][]{{\itshape\textsuperscript{#1}#2}\\\texttt{\small#3}\par\medskip}

%%% Keywords
\newcommand*{\JGG@Keywords}{}%
\newcommand{\keywords}[1]{\gdef\JGG@Keywords{#1}%
  \ifthenelse{\boolean{isOnline}}{\hypersetup{pdfkeywords={#1}}}{}}

%%% MSC
\newcommand*{\JGG@MSC}{}
\newcommand{\MSC}[2][]{%
  \ifthenelse{\isempty{#1}}{\gdef\JGG@MSC{#2}}{\gdef\JGG@MSC{#1 (primary), #2}}
}

%%% Abstract
\renewenvironment{abstract}%
    {\vspace*{2.65mm}\begin{quotation}\noindent\textbf{Abstract.}}%
    {
      \ifthenelse{\equal{\JGG@Keywords}{}}{}{\\[1mm]{\em Key Words:} \JGG@Keywords}
      \ifthenelse{\equal{\JGG@MSC}{}}{}{\\[1mm]{\em MSC 2020:} \JGG@MSC}
    \end{quotation}}

%%% Some useful commands for typesetting the list of references (also when using
%%% bibtex).
\providecommand{\doi}[1]{doi: \texttt{#1}}
\providecommand{\arxiv}[1]{arXiv: \texttt{#1}}
\providecommand{\URL}[1]{\url{#1}}
\renewcommand{\URL}[1]{\url{#1}}
\providecommand{\urlprefix}{URL }
\renewcommand{\urlprefix}{}
\RequirePackage{xurl}

%%% Things to be done differently for online version:
\ifthenelse{\boolean{isOnline}}{%
  \RequirePackage[pdfusetitle]{hyperref}
  \hypersetup{
    pdfsubject={Article published in the Journal for Geometry and Graphics <https://isgg.net/jgg/>},%
    pdfborder={0 0 0},%
    colorlinks=false,%
  }
  \renewcommand{\doi}[1]{\href{https://dx.doi.org/#1}{{\normalfont doi:} \texttt{#1}}}
  \renewcommand{\arxiv}[1]{\href{https://arxiv.org/abs/#1}{\normalfont{arXiv:} \texttt{#1}}}
  %\renewcommand{\URL}[1]{\url{#1}}
}{
  \providecommand{\href}[2]{#2}
  \RequirePackage{url}
}

% A useful package for bibliographic references. It is compatible with jgg.bst.
\RequirePackage[numbers,sort&compress]{natbib}

% Commands for printing date range of reviewing.
\newcommand*{\JGG@Received}{}%
\newcommand{\received}[1]{\gdef\JGG@Received{#1}}
\newcommand*{\JGG@FinalForm}{}%
\newcommand{\finalform}[1]{\gdef\JGG@FinalForm{#1}}
\newcommand{\jggreceived}{\par\bigskip\noindent Received\label{JGGReceivedPage}
  \JGG@Received; final form \JGG@FinalForm.}
jggtemplate.tex — the file that is compiled · 7 KB
% Copyright 2020, 2021, Hans-Peter Schröcker,
% <[email protected]>, https://geometrie.uibk.ac.at/schroecker/
%
% This program is free software: you can redistribute it and/or modify it under
% the terms of the GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option) any later
% version.

% This program is distributed in the hope that it will be useful, but WITHOUT ANY
% WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
% PARTICULAR PURPOSE. See the GNU General Public License for more details.

% You should have received a copy of the GNU General Public License along with
% this program. If not, see <http://www.gnu.org/licenses/>.

\documentclass{jgg}

% This file constitutes a template for preparing articles to be published in the
% Journal for Geometry and Graphics <https://isgg.net/jgg/>. You may sparingly
% use additional packages and macros.

% By default, a couple of useful packages are loaded, among them:
%
% xifthen
% graphicx
% amsmath, amsthm, amsfonts
% xurl
% hyperref
% natbib

% Provide title, author(s) and address(es):
\title{Your paper}
% Authors and affiliations are added via the \addauthor and \addaddress macros
% within the \author and \affiliation commands. Authors and their affiliations
% (potentially more than one) are matched via optional arguments to these
% macros. If you are the only author, just omit the any optional arguments.
\author{
  \addauthor[1]{First Author}
  \addauthor[2]{Second Author}
  \addauthor[1]{Third Author}
}
\affiliation{%
  \addaddress[1]{The full postal address of the first and the third
    author}{[email protected], [email protected]}
  \addaddress[2]{The full postal address of the second Author}{[email protected]}
}

% Also provide short list of authors and (optionally) a short title for running heads:
\shortauthor{F. Author, S. Author, Th. Author}
\shorttitle{The Very Long and Detailed \ldots}

\begin{document}
\maketitle

% Provide a comma-separated list of maybe five keywords:
\keywords{geometry, graphics}

% A comma-separated list of MSC codes
% <https://mathscinet.ams.org/mathscinet/msc/msc2020.html>. Provide at least one
% classification code and use the MSC2020 database. It is recommended to provide
% a primary classification in the optional argument (in square brackets).
\MSC[51N05]{51M04, 51N15}

\begin{abstract}
  The abstract of your manuscript should accurately summarize its contents. It
  should be understandable to a reader without access to the full paper. Avoid
  special symbols or references to equation numbers, bibliography items etc. A
  good length for an abstract is approximately 100 to 200 words.
\end{abstract}

\section{Introduction}

This text explains how to prepare a manuscript for publication in the Journal
for Geometry and Graphics (JGG), c.\,f.
\url{https://www.heldermann.de/JGG/jggcover.htm} and
\url{https://www.heldermann.de/JGG/jggcover.htm}.

You should not only look at this document (\texttt{jggtemplate.pdf}) but also
consult its commented \LaTeX{} source (\texttt{jggtemplate.tex}).

\section{The Text of Your Manuscript}

Manuscripts to be published in the JGG must be typeset in \LaTeX using the
documentclass \texttt{jgg}. It is noteworthy that all articles will be typeset
individually. Thus, you may (sparingly) use your own macros and include
additional packages. Avoid interfering with page breaks, spacing, fonts,
internal counters, etc. unless absolutely necessary.

\subsection{Figures}

You may include figures in the usual way:
\begin{verbatim}
\begin{figure}
  \centering
  \includegraphics{path/to/your/image}
  \caption{Figure caption}
  \label{fig:1}
\end{figure}
\end{verbatim}
Note that figure quality is paramount for the Journal for Geometry and Graphics.
Should your figure not meet the journal's standards you will be asked to improve
them.
\begin{itemize}
\item Use resolution independent vector graphics for line drawings.
\item Pay attention to line width and label size, in particular, when scaling
  pictures.
\item The label font should match the article font. \LaTeX packages
  \texttt{psfrag}, \texttt{pdffrag}, or \texttt{overpic} can help you with that.
\item The \texttt{jpeg}-format should be used exclusively for photographs.
\end{itemize}
  
\subsection{Bibliographic References}

The Journal for Geometry and Graphics uses a numerical citation style. We
recommend that you use Bib\TeX{} and the bibliography style \texttt{jgg.bst} for
generating the bibliography. You may use the special fields
\begin{itemize}
\item \texttt{doi} for entering an article's doi and
\item \texttt{arxiv} for entering an arXiv-identifier.
\end{itemize}
Journal names should be abbreviated according to the conventions of Mathematical
Reviews (MR), c.\,f. \url{https://mathscinet.ams.org/msnhtml/serials.pdf}.

Here are example citations of an article \cite{palej97}, a book \cite{icgg20},
and conference proceedings \cite{icgg12,icgg16}.

\bibliographystyle{jgg}
\bibliography{bibtemplate}

% \begin{thebibliography}{99}                                                                                               %
% \bibitem {Baralic}Barali\'{c} D. \& Spasojevi\'{c} I., \textit{Discrete
% Comput. Geom.} (2015) \textbf{53}: 414. https://doi.org/10.1007/s00454-014-9658-6.

% \bibitem {Conway}Conway J., and Ryba A., Extending the Pascal mysticum.
% \textit{The Mathematical Intelligencer} \textbf{35, }Issue 2, (2013), 44--51.

% \bibitem {Coxeter}Coxeter H. S. M., \textit{The Real Projective Plane},
% McGraw-Hill Book Company, Inc., New York, 1949.

% \bibitem {Glaeser}Glaeser G., Stachel H. and Odehnal B., \textit{The Universe
% of Conics}, Springer-Verlag, 2016.

% \bibitem {Hoffman}Hofmann L., Synthetic Proof of Professor Kasner's Pentagon
% Theorem, \textit{Amer. Math. Monthly} \textbf{35 }No.7, (Aug-Sept 1928), 356--358.

% \bibitem {Kasner}Kasner E., A Projective Theorem on the Plane Pentagon,
% \textit{Amer. Math. Monthly} \textbf{35}, no. 7, (Aug-Sept 1928), 352-356.

% \bibitem {Levi}Levi F., \textit{Geometrisches Konfigurationen}, Verlag S.
% Hirzel, Leipzig, 1929.

% \bibitem {Motzkin}Motzkin T. , The Pentagon in the Projective Plane, with a
% comment on Napier's Rules, \textit{Bull. Amer. Math. Soc.} \textbf{51}, no.
% 12, (1945), 985--989.

% \bibitem {Pamfilos}Pamfilos P., On the Diagonal and Inscribed Pentagons of a
% Pentagon, \textit{Forum Geometricorum} \textbf{16,} (2016), 207-225.

% \bibitem {Schwartz}Schwartz R. E., The Pentagram Map, \textit{Experimental
% Mathematics}, \textbf{1}, No.1, (1992), 71-81.

% \bibitem {SchwartzTabachnikovy}Schwartz R. E. and Tabachnikovy S.,
% Elementary Surprises in Projective Geometry, \textit{The Mathematical
% Intelligencer} \textbf{32,} Issue 3, (Sept. 2010), 31-34.

% \bibitem {Wells}Wells, D., \textit{The Penguin Dictionary of Curious and
% Interesting Geometry}, London: Penguin Books, 1991.
% \end{thebibliography}

\end{document}

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