roboneuro 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. checksums.yaml +7 -0
  2. data/.DS_Store +0 -0
  3. data/.env-example +12 -0
  4. data/.env.test +8 -0
  5. data/.github/workflows/docker-image.yml +63 -0
  6. data/.github/workflows/tests.yml +28 -0
  7. data/.gitignore +3 -0
  8. data/Gemfile +3 -0
  9. data/Gemfile.lock +135 -0
  10. data/LICENSE +21 -0
  11. data/README.md +190 -0
  12. data/Rakefile +13 -0
  13. data/bin/whedon +131 -0
  14. data/fixtures/latex_paper/paper.tex +0 -0
  15. data/fixtures/paper/10.21105.jcon.00017.crossref.xml +88 -0
  16. data/fixtures/paper/crossref-metadata.yaml +34 -0
  17. data/fixtures/paper/paper-bib.md +27 -0
  18. data/fixtures/paper/paper-single-author.md +24 -0
  19. data/fixtures/paper/paper-with-harder-names.md +27 -0
  20. data/fixtures/paper/paper-with-missing-affiliations.md +21 -0
  21. data/fixtures/paper/paper.bib +65 -0
  22. data/fixtures/paper/paper.html +14 -0
  23. data/fixtures/paper/paper.md +27 -0
  24. data/fixtures/paper/paper.pdf +0 -0
  25. data/fixtures/paper/paper.xml +28 -0
  26. data/fixtures/paper/paper_with_missing_title.md +26 -0
  27. data/fixtures/review_body.txt +48 -0
  28. data/fixtures/test_paper/nested/paper.bib +0 -0
  29. data/fixtures/test_paper/nested/paper.md +0 -0
  30. data/fixtures/test_paper/paper.bib +0 -0
  31. data/fixtures/test_paper/paper.md +0 -0
  32. data/fixtures/vcr_cassettes/joss-lookup.yml +58 -0
  33. data/fixtures/vcr_cassettes/review.yml +237 -0
  34. data/fixtures/vcr_cassettes/reviews.yml +270 -0
  35. data/lib/whedon/auditor.rb +39 -0
  36. data/lib/whedon/author.rb +81 -0
  37. data/lib/whedon/bibtex_parser.rb +103 -0
  38. data/lib/whedon/compilers.rb +379 -0
  39. data/lib/whedon/github.rb +12 -0
  40. data/lib/whedon/orcid_validator.rb +83 -0
  41. data/lib/whedon/processor.rb +178 -0
  42. data/lib/whedon/review.rb +25 -0
  43. data/lib/whedon/reviews.rb +29 -0
  44. data/lib/whedon/version.rb +3 -0
  45. data/lib/whedon.rb +387 -0
  46. data/paperdraft.Dockerfile +48 -0
  47. data/pkg/roboneuro-0.1.0.gem +0 -0
  48. data/resources/.DS_Store +0 -0
  49. data/resources/NeuroLibre/.DS_Store +0 -0
  50. data/resources/NeuroLibre/aas-logo.png +0 -0
  51. data/resources/NeuroLibre/apa.csl +1919 -0
  52. data/resources/NeuroLibre/defaults.yaml +14 -0
  53. data/resources/NeuroLibre/latex.template +541 -0
  54. data/resources/NeuroLibre/logo.png +0 -0
  55. data/resources/NeuroLibre/logo_link.png +0 -0
  56. data/resources/apa.csl +1919 -0
  57. data/resources/crossref.template +89 -0
  58. data/resources/docker-defaults.yaml +42 -0
  59. data/resources/docker-entrypoint.sh +37 -0
  60. data/resources/jats.csl +204 -0
  61. data/resources/jats.template +105 -0
  62. data/resources/jose/apa.csl +1919 -0
  63. data/resources/jose/defaults.yaml +14 -0
  64. data/resources/jose/latex.template +486 -0
  65. data/resources/jose/logo.png +0 -0
  66. data/resources/joss/aas-logo.png +0 -0
  67. data/resources/joss/apa.csl +1919 -0
  68. data/resources/joss/defaults.yaml +14 -0
  69. data/resources/joss/latex.template +525 -0
  70. data/resources/joss/logo.png +0 -0
  71. data/resources/latex.template +485 -0
  72. data/resources/time.lua +8 -0
  73. data/roboneuro.gemspec +39 -0
  74. data/spec/auditor_spec.rb +22 -0
  75. data/spec/author_spec.rb +17 -0
  76. data/spec/bibtex_spec.rb +31 -0
  77. data/spec/orcid_validator_spec.rb +33 -0
  78. data/spec/processor_spec.rb +66 -0
  79. data/spec/review_spec.rb +12 -0
  80. data/spec/reviews_spec.rb +18 -0
  81. data/spec/spec_helper.rb +22 -0
  82. data/spec/whedon_spec.rb +93 -0
  83. metadata +386 -0
@@ -0,0 +1,14 @@
1
+ template: NeuroLibre/latex.template
2
+ csl: /usr/local/share/openjournals/NeuroLibre/apa.csl
3
+
4
+ variables:
5
+ joss_resource_url: 'N/A'
6
+ journal_abbrev_title: 'NeuroLibre'
7
+ journal_alias: 'NeuroLibre'
8
+ journal_issn: '0000-0000'
9
+ journal_name: 'NeuroLibre Executable Preprint Server'
10
+ journal_url: 'https://neurolibre.org/'
11
+
12
+ metadata:
13
+ aas_logo_path: '/usr/local/share/openjournals/NeuroLibre/aas-logo.png'
14
+ logo_path: '/usr/local/share/openjournals/NeuroLibre/logo.png'
@@ -0,0 +1,541 @@
1
+ \documentclass[10pt,a4paper,onecolumn]{article}
2
+ \usepackage{marginnote}
3
+ \usepackage{graphicx}
4
+ \usepackage{xcolor}
5
+ \usepackage{authblk,etoolbox}
6
+ \usepackage{titlesec}
7
+ \usepackage{calc}
8
+ \usepackage{tikz}
9
+ \usepackage{hyperref}
10
+ \hypersetup{colorlinks,breaklinks=true,
11
+ urlcolor=[rgb]{0.0, 0.5, 1.0},
12
+ linkcolor=[rgb]{0.0, 0.5, 1.0}}
13
+ \usepackage{caption}
14
+ \usepackage{tcolorbox}
15
+ \usepackage{amssymb,amsmath}
16
+ \usepackage{ifxetex,ifluatex}
17
+ \usepackage{seqsplit}
18
+ \usepackage{xstring}
19
+
20
+ \usepackage{float}
21
+ \let\origfigure\figure
22
+ \let\endorigfigure\endfigure
23
+ \renewenvironment{figure}[1][2] {
24
+ \expandafter\origfigure\expandafter[H]
25
+ } {
26
+ \endorigfigure
27
+ }
28
+
29
+ $if(draft)$
30
+ \usepackage{lineno}
31
+ \linenumbers
32
+ \usepackage{draftwatermark}
33
+ $endif$
34
+
35
+ \usepackage{fixltx2e} % provides \textsubscript
36
+ \usepackage[
37
+ backend=biber,
38
+ % style=alphabetic,
39
+ % citestyle=numeric
40
+ ]{biblatex}
41
+ \bibliography{$bibliography$}
42
+
43
+ % --- Splitting \texttt --------------------------------------------------
44
+
45
+ \let\textttOrig=\texttt
46
+ \def\texttt#1{\expandafter\textttOrig{\seqsplit{#1}}}
47
+ \renewcommand{\seqinsert}{\ifmmode
48
+ \allowbreak
49
+ \else\penalty6000\hspace{0pt plus 0.02em}\fi}
50
+
51
+
52
+ % --- Pandoc does not distinguish between links like [foo](bar) and
53
+ % --- [foo](foo) -- a simplistic Markdown model. However, this is
54
+ % --- wrong: in links like [foo](foo) the text is the url, and must
55
+ % --- be split correspondingly.
56
+ % --- Here we detect links \href{foo}{foo}, and also links starting
57
+ % --- with https://doi.org, and use path-like splitting (but not
58
+ % --- escaping!) with these links.
59
+ % --- Another vile thing pandoc does is the different escaping of
60
+ % --- foo and bar. This may confound our detection.
61
+ % --- This problem we do not try to solve at present, with the exception
62
+ % --- of doi-like urls, which we detect correctly.
63
+
64
+
65
+ \makeatletter
66
+ \let\href@Orig=\href
67
+ \def\href@Urllike#1#2{\href@Orig{#1}{\begingroup
68
+ \def\Url@String{#2}\Url@FormatString
69
+ \endgroup}}
70
+ \def\href@Notdoi#1#2{\def\tempa{#1}\def\tempb{#2}%
71
+ \ifx\tempa\tempb\relax\href@Urllike{#1}{#2}\else
72
+ \href@Orig{#1}{#2}\fi}
73
+ \def\href#1#2{%
74
+ \IfBeginWith{#1}{https://doi.org}%
75
+ {\href@Urllike{#1}{#2}}{\href@Notdoi{#1}{#2}}}
76
+ \makeatother
77
+
78
+ $if(csl-refs)$
79
+ \newlength{\cslhangindent}
80
+ \setlength{\cslhangindent}{1.5em}
81
+ \newlength{\csllabelwidth}
82
+ \setlength{\csllabelwidth}{3em}
83
+ \newenvironment{CSLReferences}[3] % #1 hanging-ident, #2 entry spacing
84
+ {% don't indent paragraphs
85
+ \setlength{\parindent}{0pt}
86
+ % turn on hanging indent if param 1 is 1
87
+ \ifodd #1 \everypar{\setlength{\hangindent}{\cslhangindent}}\ignorespaces\fi
88
+ % set entry spacing
89
+ \ifnum #2 > 0
90
+ \setlength{\parskip}{#2\baselineskip}
91
+ \fi
92
+ }%
93
+ {}
94
+ \usepackage{calc} % for \widthof, \maxof
95
+ \newcommand{\CSLBlock}[1]{#1\hfill\break}
96
+ \newcommand{\CSLLeftMargin}[1]{\parbox[t]{\maxof{\widthof{#1}}{\csllabelwidth}}{#1}}
97
+ \newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth}{#1}}
98
+ \newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
99
+ $endif$
100
+
101
+ % --- Page layout -------------------------------------------------------------
102
+ \usepackage[top=3.5cm, bottom=3cm, right=1.5cm, left=1.0cm,
103
+ headheight=2.2cm, reversemp, includemp, marginparwidth=4.5cm]{geometry}
104
+
105
+ % --- Default font ------------------------------------------------------------
106
+ \usepackage[scaled]{helvet}
107
+ \renewcommand\familydefault{\sfdefault}
108
+ \usepackage[T1]{fontenc}
109
+
110
+ % --- Style -------------------------------------------------------------------
111
+ \renewcommand{\bibfont}{\small \sffamily}
112
+ \renewcommand{\captionfont}{\small\sffamily}
113
+ \renewcommand{\captionlabelfont}{\bfseries}
114
+
115
+ % --- Section/SubSection/SubSubSection ----------------------------------------
116
+ \titleformat{\section}
117
+ {\normalfont\sffamily\Large\bfseries}
118
+ {}{0pt}{}
119
+ \titleformat{\subsection}
120
+ {\normalfont\sffamily\large\bfseries}
121
+ {}{0pt}{}
122
+ \titleformat{\subsubsection}
123
+ {\normalfont\sffamily\bfseries}
124
+ {}{0pt}{}
125
+ \titleformat*{\paragraph}
126
+ {\sffamily\normalsize}
127
+
128
+
129
+ % --- Header / Footer ---------------------------------------------------------
130
+ \usepackage{fancyhdr}
131
+ \pagestyle{fancy}
132
+ \fancyhf{}
133
+ %\renewcommand{\headrulewidth}{0.50pt}
134
+ \renewcommand{\headrulewidth}{0pt}
135
+ \fancyhead[L]{\hspace{-0.75cm}\includegraphics[width=5.5cm]{$logo_path$}}
136
+ \fancyhead[C]{}
137
+ \fancyhead[R]{}
138
+ \renewcommand{\footrulewidth}{0.25pt}
139
+
140
+ \fancyfoot[L]{\parbox[t]{0.98\headwidth}{\footnotesize{\sffamily $citation_author$, ($year$). $title$. \textit{$journal_name$}, $volume$($issue$), $page$. \url{https://doi.org/$formatted_doi$}}}}
141
+
142
+
143
+ \fancyfoot[R]{\sffamily \thepage}
144
+ \makeatletter
145
+ \let\ps@plain\ps@fancy
146
+ \fancyheadoffset[L]{4.5cm}
147
+ \fancyfootoffset[L]{4.5cm}
148
+
149
+ % --- Macros ---------
150
+
151
+ \definecolor{linky}{rgb}{0.0, 0.5, 1.0}
152
+
153
+ \newtcolorbox{repobox}
154
+ {colback=red, colframe=red!75!black,
155
+ boxrule=0.5pt, arc=2pt, left=6pt, right=6pt, top=3pt, bottom=3pt}
156
+
157
+ \newcommand{\ExternalLink}{%
158
+ \tikz[x=1.2ex, y=1.2ex, baseline=-0.05ex]{%
159
+ \begin{scope}[x=1ex, y=1ex]
160
+ \clip (-0.1,-0.1)
161
+ --++ (-0, 1.2)
162
+ --++ (0.6, 0)
163
+ --++ (0, -0.6)
164
+ --++ (0.6, 0)
165
+ --++ (0, -1);
166
+ \path[draw,
167
+ line width = 0.5,
168
+ rounded corners=0.5]
169
+ (0,0) rectangle (1,1);
170
+ \end{scope}
171
+ \path[draw, line width = 0.5] (0.5, 0.5)
172
+ -- (1, 1);
173
+ \path[draw, line width = 0.5] (0.6, 1)
174
+ -- (1, 1) -- (1, 0.6);
175
+ }
176
+ }
177
+
178
+ % --- Title / Authors ---------------------------------------------------------
179
+ % patch \maketitle so that it doesn't center
180
+ \patchcmd{\@maketitle}{center}{flushleft}{}{}
181
+ \patchcmd{\@maketitle}{center}{flushleft}{}{}
182
+ % patch \maketitle so that the font size for the title is normal
183
+ \patchcmd{\@maketitle}{\LARGE}{\LARGE\sffamily}{}{}
184
+ % patch the patch by authblk so that the author block is flush left
185
+ \def\maketitle{{%
186
+ \renewenvironment{tabular}[2][]
187
+ {\begin{flushleft}}
188
+ {\end{flushleft}}
189
+ \AB@maketitle}}
190
+ \makeatletter
191
+ \renewcommand\AB@affilsepx{ \protect\Affilfont}
192
+ %\renewcommand\AB@affilnote[1]{{\bfseries #1}\hspace{2pt}}
193
+ \renewcommand\AB@affilnote[1]{{\bfseries #1}\hspace{3pt}}
194
+ \renewcommand{\affil}[2][]%
195
+ {\newaffiltrue\let\AB@blk@and\AB@pand
196
+ \if\relax#1\relax\def\AB@note{\AB@thenote}\else\def\AB@note{#1}%
197
+ \setcounter{Maxaffil}{0}\fi
198
+ \begingroup
199
+ \let\href=\href@Orig
200
+ \let\texttt=\textttOrig
201
+ \let\protect\@unexpandable@protect
202
+ \def\thanks{\protect\thanks}\def\footnote{\protect\footnote}%
203
+ \@temptokena=\expandafter{\AB@authors}%
204
+ {\def\\{\protect\\\protect\Affilfont}\xdef\AB@temp{#2}}%
205
+ \xdef\AB@authors{\the\@temptokena\AB@las\AB@au@str
206
+ \protect\\[\affilsep]\protect\Affilfont\AB@temp}%
207
+ \gdef\AB@las{}\gdef\AB@au@str{}%
208
+ {\def\\{, \ignorespaces}\xdef\AB@temp{#2}}%
209
+ \@temptokena=\expandafter{\AB@affillist}%
210
+ \xdef\AB@affillist{\the\@temptokena \AB@affilsep
211
+ \AB@affilnote{\AB@note}\protect\Affilfont\AB@temp}%
212
+ \endgroup
213
+ \let\AB@affilsep\AB@affilsepx
214
+ }
215
+ \makeatother
216
+ \renewcommand\Authfont{\sffamily\bfseries}
217
+ \renewcommand\Affilfont{\sffamily\small\mdseries}
218
+ \setlength{\affilsep}{1em}
219
+
220
+
221
+ \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
222
+ \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
223
+ \usepackage[utf8]{inputenc}
224
+
225
+ \else % if luatex or xelatex
226
+ \ifxetex
227
+ \usepackage{mathspec}
228
+ \usepackage{fontspec}
229
+
230
+ \else
231
+ \usepackage{fontspec}
232
+ \fi
233
+ \defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
234
+
235
+ \fi
236
+ % use upquote if available, for straight quotes in verbatim environments
237
+ \IfFileExists{upquote.sty}{\usepackage{upquote}}{}
238
+ % use microtype if available
239
+ \IfFileExists{microtype.sty}{%
240
+ \usepackage{microtype}
241
+ \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
242
+ }{}
243
+
244
+ \usepackage{hyperref}
245
+ $if(colorlinks)$
246
+ \PassOptionsToPackage{usenames,dvipsnames}{color} % color is loaded by hyperref
247
+ $endif$
248
+ \hypersetup{unicode=true,
249
+ $if(title-meta)$
250
+ pdftitle={$title-meta$},
251
+ $endif$
252
+ $if(author-meta)$
253
+ pdfauthor={$author-meta$},
254
+ $endif$
255
+ $if(keywords)$
256
+ pdfkeywords={$for(keywords)$$keywords$$sep$; $endfor$},
257
+ $endif$
258
+ $if(colorlinks)$
259
+ colorlinks=true,
260
+ linkcolor=$if(linkcolor)$$linkcolor$$else$Maroon$endif$,
261
+ citecolor=$if(citecolor)$$citecolor$$else$Blue$endif$,
262
+ urlcolor=$if(urlcolor)$$urlcolor$$else$Blue$endif$,
263
+ $else$
264
+ pdfborder={0 0 0},
265
+ $endif$
266
+ breaklinks=true}
267
+ \urlstyle{same} % don't use monospace font for urls
268
+ $if(lang)$
269
+ \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
270
+ \usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel}
271
+ $if(babel-newcommands)$
272
+ $babel-newcommands$
273
+ $endif$
274
+ \else
275
+ \usepackage{polyglossia}
276
+ \setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$}
277
+ $for(polyglossia-otherlangs)$
278
+ \setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$}
279
+ $endfor$
280
+ \fi
281
+ $endif$
282
+ $if(natbib)$
283
+ \usepackage{natbib}
284
+ \bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
285
+ $endif$
286
+ $if(biblatex)$
287
+ \usepackage$if(biblio-style)$[style=$biblio-style$]$endif${biblatex}
288
+ $if(biblatexoptions)$\ExecuteBibliographyOptions{$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$}$endif$
289
+ $for(bibliography)$
290
+ \addbibresource{$bibliography$}
291
+ $endfor$
292
+ $endif$
293
+ $if(listings)$
294
+ \usepackage{listings}
295
+ $endif$
296
+ $if(lhs)$
297
+ \lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
298
+ $endif$
299
+ $if(highlighting-macros)$
300
+ $highlighting-macros$
301
+ $endif$
302
+ $if(verbatim-in-note)$
303
+ \usepackage{fancyvrb}
304
+ \VerbatimFootnotes % allows verbatim text in footnotes
305
+ $endif$
306
+ $if(tables)$
307
+ \usepackage{longtable,booktabs}
308
+ $endif$
309
+
310
+ % --- We redefined \texttt, but in sections and captions we want the
311
+ % --- old definition
312
+ \let\addcontentslineOrig=\addcontentsline
313
+ \def\addcontentsline#1#2#3{\bgroup
314
+ \let\texttt=\textttOrig\addcontentslineOrig{#1}{#2}{#3}\egroup}
315
+ \let\markbothOrig\markboth
316
+ \def\markboth#1#2{\bgroup
317
+ \let\texttt=\textttOrig\markbothOrig{#1}{#2}\egroup}
318
+ \let\markrightOrig\markright
319
+ \def\markright#1{\bgroup
320
+ \let\texttt=\textttOrig\markrightOrig{#1}\egroup}
321
+
322
+
323
+ $if(graphics)$
324
+ \usepackage{graphicx,grffile}
325
+ \makeatletter
326
+ \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
327
+ \def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
328
+ \makeatother
329
+ % Scale images if necessary, so that they will not overflow the page
330
+ % margins by default, and it is still possible to overwrite the defaults
331
+ % using explicit options in \includegraphics[width, height, ...]{}
332
+ \setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
333
+ $endif$
334
+ $if(links-as-notes)$
335
+ % Make links footnotes instead of hotlinks:
336
+ \renewcommand{\href}[2]{#2\footnote{\url{#1}}}
337
+ $endif$
338
+ $if(strikeout)$
339
+ \usepackage[normalem]{ulem}
340
+ % avoid problems with \sout in headers with hyperref:
341
+ \pdfstringdefDisableCommands{\renewcommand{\sout}{}}
342
+ $endif$
343
+ $if(indent)$
344
+ $else$
345
+ \IfFileExists{parskip.sty}{%
346
+ \usepackage{parskip}
347
+ }{% else
348
+ \setlength{\parindent}{0pt}
349
+ \setlength{\parskip}{6pt plus 2pt minus 1pt}
350
+ }
351
+ $endif$
352
+ \setlength{\emergencystretch}{3em} % prevent overfull lines
353
+ \providecommand{\tightlist}{%
354
+ \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
355
+ $if(numbersections)$
356
+ \setcounter{secnumdepth}{5}
357
+ $else$
358
+ \setcounter{secnumdepth}{0}
359
+ $endif$
360
+ $if(subparagraph)$
361
+ $else$
362
+ % Redefines (sub)paragraphs to behave more like sections
363
+ \ifx\paragraph\undefined\else
364
+ \let\oldparagraph\paragraph
365
+ \renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
366
+ \fi
367
+ \ifx\subparagraph\undefined\else
368
+ \let\oldsubparagraph\subparagraph
369
+ \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
370
+ \fi
371
+ $endif$
372
+ $if(dir)$
373
+ \ifxetex
374
+ % load bidi as late as possible as it modifies e.g. graphicx
375
+ $if(latex-dir-rtl)$
376
+ \usepackage[RTLdocument]{bidi}
377
+ $else$
378
+ \usepackage{bidi}
379
+ $endif$
380
+ \fi
381
+ \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
382
+ \TeXXeTstate=1
383
+ \newcommand{\RL}[1]{\beginR #1\endR}
384
+ \newcommand{\LR}[1]{\beginL #1\endL}
385
+ \newenvironment{RTL}{\beginR}{\endR}
386
+ \newenvironment{LTR}{\beginL}{\endL}
387
+ \fi
388
+ $endif$
389
+ $for(header-includes)$
390
+ $header-includes$
391
+ $endfor$
392
+
393
+ $if(title)$
394
+ \title{$title$$if(thanks)$\thanks{$thanks$}$endif$}
395
+ $endif$
396
+ $if(subtitle)$
397
+ \providecommand{\subtitle}[1]{}
398
+ \subtitle{$subtitle$}
399
+ $endif$
400
+
401
+ $if(authors)$
402
+ $for(authors)$
403
+ $if(authors.affiliation)$
404
+ \author[$authors.affiliation$]{$authors.name$}
405
+ $else$
406
+ \author{$authors.name$}
407
+ $endif$
408
+ $endfor$
409
+ $endif$
410
+
411
+ $if(affiliations)$
412
+ $for(affiliations)$
413
+ \affil[$affiliations.index$]{$affiliations.name$}
414
+ $endfor$
415
+ $endif$
416
+ \date{\vspace{-7ex}}
417
+
418
+ \begin{document}
419
+ $if(title)$
420
+ \maketitle
421
+ $endif$
422
+ $if(abstract)$
423
+ \begin{abstract}
424
+ $abstract$
425
+ \end{abstract}
426
+ $endif$
427
+
428
+ \marginpar{
429
+
430
+ \begin{flushleft}
431
+ %\hrule
432
+ \sffamily\small
433
+
434
+ \href{{$book_exec_url$}}{\includegraphics[width=\marginparwidth]{$book_exec_icon$}}
435
+
436
+ \vspace{1mm}
437
+
438
+ {\bfseries DOI:} \href{https://doi.org/$formatted_doi$}{\color{red}{$formatted_doi$}}
439
+
440
+ \vspace{2mm}
441
+
442
+ {\bfseries Jupyter Book}
443
+ \begin{itemize}
444
+ \setlength\itemsep{0em}
445
+ \item \href{$review_issue_url$}{\color{red}{Technical Screening}} \ExternalLink
446
+ \item \href{$repository$}{\color{red}{Source}} \ExternalLink
447
+ \end{itemize}
448
+
449
+ \vspace{2mm}
450
+
451
+ {\bfseries Zenodo Archives}
452
+ \begin{itemize}
453
+ \setlength\itemsep{0em}
454
+ \item \href{$repository_doi$}{\color{red}{Repository}} \ExternalLink
455
+ \item \href{$data_doi$}{\color{red}{Dataset}} \ExternalLink
456
+ \item \href{$book_doi$}{\color{red}{Built Book}} \ExternalLink
457
+ \item \href{$docker_doi$}{\color{red}{Container}} \ExternalLink
458
+ \end{itemize}
459
+
460
+ \vspace{1mm}
461
+
462
+ \par\noindent\hrulefill\par
463
+
464
+ \vspace{2mm}
465
+
466
+ {\bfseries Editor:} \href{$editor_url$}{\color{red}$editor_name$} \ExternalLink \\
467
+ \vspace{1mm}
468
+ $if(reviewers)$
469
+ {\bfseries Reviewers:}
470
+ \begin{itemize}
471
+ \setlength\itemsep{0em}
472
+ $for(reviewers)$
473
+ \item \href{https://github.com/$reviewers$}{@$reviewers$}
474
+ $endfor$
475
+ \end{itemize}
476
+ $endif$
477
+ \vspace{2mm}
478
+
479
+ {\bfseries Submitted:} $submitted$\\
480
+ {\bfseries Published:} $published$
481
+
482
+ \vspace{2mm}
483
+ {\bfseries License}\\
484
+ Authors of papers retain copyright and release the work under a Creative Commons Attribution 4.0 International License (\href{http://creativecommons.org/licenses/by/4.0/}{\color{red}{CC BY 4.0}}).
485
+
486
+ $if(aas-doi)$
487
+ \vspace{4mm}
488
+ {\bfseries In partnership with}\\
489
+ \vspace{2mm}
490
+ \includegraphics[width=4cm]{$aas_logo_path$}
491
+ \vspace{2mm}
492
+ \newline
493
+ This article and software are linked with research article DOI \href{https://doi.org/$aas-doi$}{\color{linky}{$aas-doi$}}, published in the $aas-journal$.
494
+ $endif$
495
+
496
+ \end{flushleft}
497
+ }
498
+
499
+ $for(include-before)$
500
+ $include-before$
501
+
502
+ $endfor$
503
+ $if(toc)$
504
+ {
505
+ $if(colorlinks)$
506
+ \hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$black$endif$}
507
+ $endif$
508
+ \setcounter{tocdepth}{$toc-depth$}
509
+ \tableofcontents
510
+ }
511
+ $endif$
512
+ $if(lot)$
513
+ \listoftables
514
+ $endif$
515
+ $if(lof)$
516
+ \listoffigures
517
+ $endif$
518
+ $body$
519
+
520
+ $if(natbib)$
521
+ $if(bibliography)$
522
+ $if(biblio-title)$
523
+ $if(book-class)$
524
+ \renewcommand\bibname{$biblio-title$}
525
+ $else$
526
+ \renewcommand\refname{$biblio-title$}
527
+ $endif$
528
+ $endif$
529
+ \bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
530
+
531
+ $endif$
532
+ $endif$
533
+ $if(biblatex)$
534
+ \printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
535
+
536
+ $endif$
537
+ $for(include-after)$
538
+ $include-after$
539
+
540
+ $endfor$
541
+ \end{document}
Binary file
Binary file