academia-mcp 1.3.0__py3-none-any.whl → 1.4.1__py3-none-any.whl
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.
- academia_mcp/files.py +1 -0
- academia_mcp/latex_templates/agents4science_2025/agents4science_2025.sty +398 -0
- academia_mcp/latex_templates/agents4science_2025/agents4science_2025.tex +686 -0
- academia_mcp/server.py +10 -2
- academia_mcp/tools/__init__.py +10 -2
- academia_mcp/tools/latex.py +151 -0
- {academia_mcp-1.3.0.dist-info → academia_mcp-1.4.1.dist-info}/METADATA +1 -6
- {academia_mcp-1.3.0.dist-info → academia_mcp-1.4.1.dist-info}/RECORD +12 -10
- academia_mcp/tools/md_to_pdf.py +0 -411
- {academia_mcp-1.3.0.dist-info → academia_mcp-1.4.1.dist-info}/WHEEL +0 -0
- {academia_mcp-1.3.0.dist-info → academia_mcp-1.4.1.dist-info}/entry_points.txt +0 -0
- {academia_mcp-1.3.0.dist-info → academia_mcp-1.4.1.dist-info}/licenses/LICENSE +0 -0
- {academia_mcp-1.3.0.dist-info → academia_mcp-1.4.1.dist-info}/top_level.txt +0 -0
academia_mcp/files.py
CHANGED
@@ -0,0 +1,398 @@
|
|
1
|
+
% Partial rewrite of the LaTeX2e package for submissions to the
|
2
|
+
% Open Conference of AI Agents for Science (agents4science):
|
3
|
+
%
|
4
|
+
% - Based on the NeurIPS 2025 style file by Roman Garnett et al.
|
5
|
+
% - Style modified for visual distinction (e.g., title rule)
|
6
|
+
% - Conference name, year, and details updated
|
7
|
+
% - Track options simplified for a general conference
|
8
|
+
%
|
9
|
+
% Last revision: July 2025
|
10
|
+
|
11
|
+
\NeedsTeXFormat{LaTeX2e}
|
12
|
+
\ProvidesPackage{agents4science_2025}[2025/07/22 agents4science 2025 submission/camera-ready style file]
|
13
|
+
|
14
|
+
% declare final option, which creates camera-ready copy
|
15
|
+
\newif\if@agentsfinal\@agentsfinalfalse
|
16
|
+
\DeclareOption{final}{
|
17
|
+
\@agentsfinaltrue
|
18
|
+
\@anonymousfalse
|
19
|
+
}
|
20
|
+
|
21
|
+
% declare nonatbib option, which does not load natbib in case of
|
22
|
+
% package clash (users can pass options to natbib via
|
23
|
+
% \PassOptionsToPackage)
|
24
|
+
\newif\if@natbib\@natbibtrue
|
25
|
+
\DeclareOption{nonatbib}{
|
26
|
+
\@natbibfalse
|
27
|
+
}
|
28
|
+
|
29
|
+
% declare preprint option, which creates a preprint version ready for
|
30
|
+
% upload to, e.g., arXiv
|
31
|
+
\newif\if@preprint\@preprintfalse
|
32
|
+
\DeclareOption{preprint}{
|
33
|
+
\@preprinttrue
|
34
|
+
\@anonymousfalse
|
35
|
+
}
|
36
|
+
|
37
|
+
% determine the track of the paper in camera-ready mode
|
38
|
+
\newif\if@main\@maintrue
|
39
|
+
\DeclareOption{main}{
|
40
|
+
\@maintrue
|
41
|
+
\newcommand{\@trackname}{\@agentsordinal\ Open Conference of AI Agents for Science (agents4science \@agentsyear).}
|
42
|
+
}
|
43
|
+
|
44
|
+
% For anonymous or non-anonymous
|
45
|
+
\newif\if@anonymous\@anonymoustrue
|
46
|
+
|
47
|
+
% For workshop papers
|
48
|
+
\newcommand{\@workshoptitle}{}
|
49
|
+
\newcommand{\workshoptitle}[1]{\renewcommand{\@workshoptitle}{#1}}
|
50
|
+
|
51
|
+
\newif\if@workshop\@workshopfalse
|
52
|
+
\DeclareOption{sglblindworkshop}{
|
53
|
+
\@workshoptrue
|
54
|
+
\@anonymousfalse
|
55
|
+
\newcommand{\@trackname}{\@agentsordinal\ Open Conference on AI Agents for Science (agents4science \@agentsyear) Workshop: \@workshoptitle.}
|
56
|
+
}
|
57
|
+
\DeclareOption{dblblindworkshop}{
|
58
|
+
\@workshoptrue
|
59
|
+
\newcommand{\@trackname}{\@agentsordinal\ Open Conference on AI Agents for Science (agents4science \@agentsyear) Workshop: \@workshoptitle.}
|
60
|
+
}
|
61
|
+
|
62
|
+
\ProcessOptions\relax
|
63
|
+
|
64
|
+
% fonts
|
65
|
+
\renewcommand{\rmdefault}{ptm}
|
66
|
+
\renewcommand{\sfdefault}{phv}
|
67
|
+
|
68
|
+
% change this every year for notice string at bottom
|
69
|
+
\newcommand{\@agentsordinal}{1st}
|
70
|
+
\newcommand{\@agentsyear}{2025}
|
71
|
+
\newcommand{\@agentslocation}{Virtual}
|
72
|
+
|
73
|
+
% acknowledgments
|
74
|
+
\usepackage{environ}
|
75
|
+
\newcommand{\acksection}{\section*{Acknowledgments and Disclosure of Funding}}
|
76
|
+
\NewEnviron{ack}{%
|
77
|
+
\acksection
|
78
|
+
\BODY
|
79
|
+
}
|
80
|
+
|
81
|
+
% load natbib unless told otherwise
|
82
|
+
\if@natbib
|
83
|
+
\RequirePackage{natbib}
|
84
|
+
\fi
|
85
|
+
|
86
|
+
% set page geometry
|
87
|
+
\usepackage[verbose=true,letterpaper]{geometry}
|
88
|
+
\AtBeginDocument{
|
89
|
+
\newgeometry{
|
90
|
+
textheight=9in,
|
91
|
+
textwidth=5.5in,
|
92
|
+
top=1in,
|
93
|
+
headheight=12pt,
|
94
|
+
headsep=25pt,
|
95
|
+
footskip=30pt
|
96
|
+
}
|
97
|
+
\@ifpackageloaded{fullpage}
|
98
|
+
{\PackageWarning{agents4science_2025}{fullpage package not allowed! Overwriting formatting.}}
|
99
|
+
{}
|
100
|
+
}
|
101
|
+
|
102
|
+
\widowpenalty=10000
|
103
|
+
\clubpenalty=10000
|
104
|
+
\flushbottom
|
105
|
+
\sloppy
|
106
|
+
|
107
|
+
% font sizes with reduced leading
|
108
|
+
\renewcommand{\normalsize}{%
|
109
|
+
\@setfontsize\normalsize\@xpt\@xipt
|
110
|
+
\abovedisplayskip 7\p@ \@plus 2\p@ \@minus 5\p@
|
111
|
+
\abovedisplayshortskip \z@ \@plus 3\p@
|
112
|
+
\belowdisplayskip \abovedisplayskip
|
113
|
+
\belowdisplayshortskip 4\p@ \@plus 3\p@ \@minus 3\p@
|
114
|
+
}
|
115
|
+
\normalsize
|
116
|
+
\renewcommand{\small}{%
|
117
|
+
\@setfontsize\small\@ixpt\@xpt
|
118
|
+
\abovedisplayskip 6\p@ \@plus 1.5\p@ \@minus 4\p@
|
119
|
+
\abovedisplayshortskip \z@ \@plus 2\p@
|
120
|
+
\belowdisplayskip \abovedisplayskip
|
121
|
+
\belowdisplayshortskip 3\p@ \@plus 2\p@ \@minus 2\p@
|
122
|
+
}
|
123
|
+
\renewcommand{\footnotesize}{\@setfontsize\footnotesize\@ixpt\@xpt}
|
124
|
+
\renewcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt\@viiipt}
|
125
|
+
\renewcommand{\tiny}{\@setfontsize\tiny\@vipt\@viipt}
|
126
|
+
\renewcommand{\large}{\@setfontsize\large\@xiipt{14}}
|
127
|
+
\renewcommand{\Large}{\@setfontsize\Large\@xivpt{16}}
|
128
|
+
\renewcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{20}}
|
129
|
+
\renewcommand{\huge}{\@setfontsize\huge\@xxpt{23}}
|
130
|
+
\renewcommand{\Huge}{\@setfontsize\Huge\@xxvpt{28}}
|
131
|
+
|
132
|
+
% sections with less space
|
133
|
+
\providecommand{\section}{}
|
134
|
+
\renewcommand{\section}{%
|
135
|
+
\@startsection{section}{1}{\z@}%
|
136
|
+
{-2.0ex \@plus -0.5ex \@minus -0.2ex}%
|
137
|
+
{ 1.5ex \@plus 0.3ex \@minus 0.2ex}%
|
138
|
+
{\large\bf\raggedright}%
|
139
|
+
}
|
140
|
+
\providecommand{\subsection}{}
|
141
|
+
\renewcommand{\subsection}{%
|
142
|
+
\@startsection{subsection}{2}{\z@}%
|
143
|
+
{-1.8ex \@plus -0.5ex \@minus -0.2ex}%
|
144
|
+
{ 0.8ex \@plus 0.2ex}%
|
145
|
+
{\normalsize\bf\raggedright}%
|
146
|
+
}
|
147
|
+
\providecommand{\subsubsection}{}
|
148
|
+
\renewcommand{\subsubsection}{%
|
149
|
+
\@startsection{subsubsection}{3}{\z@}%
|
150
|
+
{-1.5ex \@plus -0.5ex \@minus -0.2ex}%
|
151
|
+
{ 0.5ex \@plus 0.2ex}%
|
152
|
+
{\normalsize\bf\raggedright}%
|
153
|
+
}
|
154
|
+
\providecommand{\paragraph}{}
|
155
|
+
\renewcommand{\paragraph}{%
|
156
|
+
\@startsection{paragraph}{4}{\z@}%
|
157
|
+
{1.5ex \@plus 0.5ex \@minus 0.2ex}%
|
158
|
+
{-1em}%
|
159
|
+
{\normalsize\bf}%
|
160
|
+
}
|
161
|
+
\providecommand{\subparagraph}{}
|
162
|
+
\renewcommand{\subparagraph}{%
|
163
|
+
\@startsection{subparagraph}{5}{\z@}%
|
164
|
+
{1.5ex \@plus 0.5ex \@minus 0.2ex}%
|
165
|
+
{-1em}%
|
166
|
+
{\normalsize\bf}%
|
167
|
+
}
|
168
|
+
\providecommand{\subsubsubsection}{}
|
169
|
+
\renewcommand{\subsubsubsection}{%
|
170
|
+
\vskip5pt{\noindent\normalsize\rm\raggedright}%
|
171
|
+
}
|
172
|
+
|
173
|
+
% float placement
|
174
|
+
\renewcommand{\topfraction }{0.85}
|
175
|
+
\renewcommand{\bottomfraction }{0.4}
|
176
|
+
\renewcommand{\textfraction }{0.1}
|
177
|
+
\renewcommand{\floatpagefraction}{0.7}
|
178
|
+
|
179
|
+
\newlength{\@agentsabovecaptionskip}\setlength{\@agentsabovecaptionskip}{7\p@}
|
180
|
+
\newlength{\@agentsbelowcaptionskip}\setlength{\@agentsbelowcaptionskip}{\z@}
|
181
|
+
|
182
|
+
\setlength{\abovecaptionskip}{\@agentsabovecaptionskip}
|
183
|
+
\setlength{\belowcaptionskip}{\@agentsbelowcaptionskip}
|
184
|
+
|
185
|
+
% swap above/belowcaptionskip lengths for tables
|
186
|
+
\renewenvironment{table}
|
187
|
+
{\setlength{\abovecaptionskip}{\@agentsbelowcaptionskip}%
|
188
|
+
\setlength{\belowcaptionskip}{\@agentsabovecaptionskip}%
|
189
|
+
\@float{table}}
|
190
|
+
{\end@float}
|
191
|
+
|
192
|
+
% footnote formatting
|
193
|
+
\setlength{\footnotesep }{6.65\p@}
|
194
|
+
\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@}
|
195
|
+
\renewcommand{\footnoterule}{\kern-3\p@ \hrule width 12pc \kern 2.6\p@}
|
196
|
+
\setcounter{footnote}{0}
|
197
|
+
|
198
|
+
% paragraph formatting
|
199
|
+
\setlength{\parindent}{\z@}
|
200
|
+
\setlength{\parskip }{5.5\p@}
|
201
|
+
|
202
|
+
% list formatting
|
203
|
+
\setlength{\topsep }{4\p@ \@plus 1\p@ \@minus 2\p@}
|
204
|
+
\setlength{\partopsep }{1\p@ \@plus 0.5\p@ \@minus 0.5\p@}
|
205
|
+
\setlength{\itemsep }{2\p@ \@plus 1\p@ \@minus 0.5\p@}
|
206
|
+
\setlength{\parsep }{2\p@ \@plus 1\p@ \@minus 0.5\p@}
|
207
|
+
\setlength{\leftmargin }{3pc}
|
208
|
+
\setlength{\leftmargini }{\leftmargin}
|
209
|
+
\setlength{\leftmarginii }{2em}
|
210
|
+
\setlength{\leftmarginiii}{1.5em}
|
211
|
+
\setlength{\leftmarginiv }{1.0em}
|
212
|
+
\setlength{\leftmarginv }{0.5em}
|
213
|
+
\def\@listi {\leftmargin\leftmargini}
|
214
|
+
\def\@listii {\leftmargin\leftmarginii
|
215
|
+
\labelwidth\leftmarginii
|
216
|
+
\advance\labelwidth-\labelsep
|
217
|
+
\topsep 2\p@ \@plus 1\p@ \@minus 0.5\p@
|
218
|
+
\parsep 1\p@ \@plus 0.5\p@ \@minus 0.5\p@
|
219
|
+
\itemsep \parsep}
|
220
|
+
\def\@listiii{\leftmargin\leftmarginiii
|
221
|
+
\labelwidth\leftmarginiii
|
222
|
+
\advance\labelwidth-\labelsep
|
223
|
+
\topsep 1\p@ \@plus 0.5\p@ \@minus 0.5\p@
|
224
|
+
\parsep \z@
|
225
|
+
\partopsep 0.5\p@ \@plus 0\p@ \@minus 0.5\p@
|
226
|
+
\itemsep \topsep}
|
227
|
+
\def\@listiv {\leftmargin\leftmarginiv
|
228
|
+
\labelwidth\leftmarginiv
|
229
|
+
\advance\labelwidth-\labelsep}
|
230
|
+
\def\@listv {\leftmargin\leftmarginv
|
231
|
+
\labelwidth\leftmarginv
|
232
|
+
\advance\labelwidth-\labelsep}
|
233
|
+
\def\@listvi {\leftmargin\leftmarginvi
|
234
|
+
\labelwidth\leftmarginvi
|
235
|
+
\advance\labelwidth-\labelsep}
|
236
|
+
|
237
|
+
% create title
|
238
|
+
\providecommand{\maketitle}{}
|
239
|
+
\renewcommand{\maketitle}{%
|
240
|
+
\par
|
241
|
+
\begingroup
|
242
|
+
\renewcommand{\thefootnote}{\fnsymbol{footnote}}
|
243
|
+
% for perfect author name centering
|
244
|
+
\renewcommand{\@makefnmark}{\hbox to \z@{$^{\@thefnmark}$\hss}}
|
245
|
+
% The footnote-mark was overlapping the footnote-text,
|
246
|
+
% added the following to fix this problem
|
247
|
+
\long\def\@makefntext##1{%
|
248
|
+
\parindent 1em\noindent
|
249
|
+
\hbox to 1.8em{\hss $\m@th ^{\@thefnmark}$}##1
|
250
|
+
}
|
251
|
+
\thispagestyle{empty}
|
252
|
+
\@maketitle
|
253
|
+
\@thanks
|
254
|
+
\@notice
|
255
|
+
\endgroup
|
256
|
+
\let\maketitle\relax
|
257
|
+
\let\thanks\relax
|
258
|
+
}
|
259
|
+
|
260
|
+
% rules for title box at top of first page (modified for agents4science style)
|
261
|
+
\newcommand{\@toptitlebar}{
|
262
|
+
\hrule height 2\p@
|
263
|
+
\vskip 0.2in
|
264
|
+
\vskip -\parskip%
|
265
|
+
}
|
266
|
+
\newcommand{\@bottomtitlebar}{
|
267
|
+
\vskip 0.2in
|
268
|
+
\vskip -\parskip
|
269
|
+
\hrule height 2\p@
|
270
|
+
\vskip 0.09in%
|
271
|
+
}
|
272
|
+
|
273
|
+
% create title (includes both anonymized and non-anonymized versions)
|
274
|
+
\providecommand{\@maketitle}{}
|
275
|
+
\renewcommand{\@maketitle}{%
|
276
|
+
\vbox{%
|
277
|
+
\hsize\textwidth
|
278
|
+
\linewidth\hsize
|
279
|
+
\vskip 0.1in
|
280
|
+
\@toptitlebar
|
281
|
+
\centering
|
282
|
+
{\LARGE\bf \@title\par}
|
283
|
+
\@bottomtitlebar
|
284
|
+
\if@anonymous
|
285
|
+
\begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}
|
286
|
+
Anonymous Author(s) \\
|
287
|
+
Affiliation \\
|
288
|
+
Address \\
|
289
|
+
\texttt{email} \\
|
290
|
+
\end{tabular}%
|
291
|
+
\else
|
292
|
+
\def\And{%
|
293
|
+
\end{tabular}\hfil\linebreak[0]\hfil%
|
294
|
+
\begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\ignorespaces%
|
295
|
+
}
|
296
|
+
\def\AND{%
|
297
|
+
\end{tabular}\hfil\linebreak[4]\hfil%
|
298
|
+
\begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\ignorespaces%
|
299
|
+
}
|
300
|
+
\begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\@author\end{tabular}%
|
301
|
+
\fi
|
302
|
+
\vskip 0.3in \@minus 0.1in
|
303
|
+
}
|
304
|
+
}
|
305
|
+
|
306
|
+
% add conference notice to bottom of first page
|
307
|
+
\newcommand{\ftype@noticebox}{8}
|
308
|
+
\newcommand{\@notice}{%
|
309
|
+
% give a bit of extra room back to authors on first page
|
310
|
+
\enlargethispage{2\baselineskip}%
|
311
|
+
\@float{noticebox}[b]%
|
312
|
+
\footnotesize\@noticestring%
|
313
|
+
\end@float%
|
314
|
+
}
|
315
|
+
|
316
|
+
% abstract styling
|
317
|
+
\renewenvironment{abstract}%
|
318
|
+
{%
|
319
|
+
\vskip 0.075in%
|
320
|
+
\centerline%
|
321
|
+
{\large\bf Abstract}%
|
322
|
+
\vspace{0.5ex}%
|
323
|
+
\begin{quote}%
|
324
|
+
}
|
325
|
+
{
|
326
|
+
\par%
|
327
|
+
\end{quote}%
|
328
|
+
\vskip 1ex%
|
329
|
+
}
|
330
|
+
|
331
|
+
% For the paper checklist
|
332
|
+
\newcommand{\answerYes}[1][]{\textcolor{blue}{[Yes] #1}}
|
333
|
+
\newcommand{\answerNo}[1][]{\textcolor{orange}{[No] #1}}
|
334
|
+
\newcommand{\answerNA}[1][]{\textcolor{gray}{[NA] #1}}
|
335
|
+
\newcommand{\answerTODO}[1][]{\textcolor{red}{\bf [TODO]}}
|
336
|
+
\newcommand{\justificationTODO}[1][]{\textcolor{red}{\bf [TODO]}}
|
337
|
+
|
338
|
+
\newcommand{\involvementA}[1][]{\textcolor{blue}{\bf [A] #1}}
|
339
|
+
\newcommand{\involvementB}[1][]{\textcolor{blue}{\bf [B] #1}}
|
340
|
+
\newcommand{\involvementC}[1][]{\textcolor{blue}{\bf [C] #1}}
|
341
|
+
\newcommand{\involvementD}[1][]{\textcolor{blue}{\bf [D] #1}}
|
342
|
+
\newcommand{\involvementNA}[1][]{\textcolor{gray}{\bf [NA] #1}}
|
343
|
+
\newcommand{\involvmentTODO}[1][]{\textcolor{red}{\bf [TODO]}}
|
344
|
+
|
345
|
+
% handle tweaks for camera-ready copy vs. submission copy
|
346
|
+
\if@preprint
|
347
|
+
\newcommand{\@noticestring}{%
|
348
|
+
Preprint.%
|
349
|
+
}
|
350
|
+
\else
|
351
|
+
\if@agentsfinal
|
352
|
+
\newcommand{\@noticestring}{
|
353
|
+
\@trackname
|
354
|
+
}
|
355
|
+
\else
|
356
|
+
\newcommand{\@noticestring}{%
|
357
|
+
Submitted to \@agentsordinal\/ Open Conference on AI Agents for Science
|
358
|
+
(agents4science \@agentsyear). Do not distribute.%
|
359
|
+
}
|
360
|
+
|
361
|
+
% hide the acknowledgements
|
362
|
+
\NewEnviron{hide}{}
|
363
|
+
\let\ack\hide
|
364
|
+
\let\endack\endhide
|
365
|
+
|
366
|
+
% line numbers for submission
|
367
|
+
\RequirePackage{lineno}
|
368
|
+
\linenumbers
|
369
|
+
|
370
|
+
% fix incompatibilities between lineno and amsmath, if required, by
|
371
|
+
% transparently wrapping linenomath environments around amsmath
|
372
|
+
% environments
|
373
|
+
\AtBeginDocument{%
|
374
|
+
\@ifpackageloaded{amsmath}{%
|
375
|
+
\newcommand*\patchAmsMathEnvironmentForLineno[1]{%
|
376
|
+
\expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname
|
377
|
+
\expandafter\let\csname oldend#1\expandafter\endcsname\csname end#1\endcsname
|
378
|
+
\renewenvironment{#1}%
|
379
|
+
{\linenomath\csname old#1\endcsname}%
|
380
|
+
{\csname oldend#1\endcsname\endlinenomath}%
|
381
|
+
}%
|
382
|
+
\newcommand*\patchBothAmsMathEnvironmentsForLineno[1]{%
|
383
|
+
\patchAmsMathEnvironmentForLineno{#1}%
|
384
|
+
\patchAmsMathEnvironmentForLineno{#1*}%
|
385
|
+
}%
|
386
|
+
\patchBothAmsMathEnvironmentsForLineno{equation}%
|
387
|
+
\patchBothAmsMathEnvironmentsForLineno{align}%
|
388
|
+
\patchBothAmsMathEnvironmentsForLineno{flalign}%
|
389
|
+
\patchBothAmsMathEnvironmentsForLineno{alignat}%
|
390
|
+
\patchBothAmsMathEnvironmentsForLineno{gather}%
|
391
|
+
\patchBothAmsMathEnvironmentsForLineno{multline}%
|
392
|
+
}
|
393
|
+
{}
|
394
|
+
}
|
395
|
+
\fi
|
396
|
+
\fi
|
397
|
+
|
398
|
+
\endinput
|