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.
- 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 KBbibtemplate.bib· 1 KBjgg.bst· 28 KBjgg.cls· 7 KBjggtemplate.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 ↗