Zhiming666 commited on
Commit
0e072c0
1 Parent(s): 58674a0

Upload 157 files

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .github/workflows/main.yml +20 -0
  2. .gitignore +1 -0
  3. .idea/.gitignore +10 -0
  4. .idea/auto-draft.iml +14 -0
  5. .idea/inspectionProfiles/Project_Default.xml +95 -0
  6. .idea/inspectionProfiles/profiles_settings.xml +6 -0
  7. .idea/misc.xml +4 -0
  8. .idea/modules.xml +8 -0
  9. .idea/vcs.xml +6 -0
  10. 04c9a7bee23cedb969f454f79837c0e3.zip +0 -0
  11. 6d732fcb-0516-11ee-9128-085bd609d2a0.json +0 -0
  12. LICENSE +21 -0
  13. Playing_Atari_with_Deep_Reinforcement_Learning.pdf +0 -0
  14. README-en.md +43 -0
  15. README.md +51 -0
  16. __pycache__/auto_backgrounds.cpython-310.pyc +0 -0
  17. __pycache__/auto_draft.cpython-310.pyc +0 -0
  18. __pycache__/references_generator.cpython-310.pyc +0 -0
  19. __pycache__/section_generator.cpython-310.pyc +0 -0
  20. a81d76e64c3d70f77bc42dbced229d1d.zip +0 -0
  21. api_wrapper.py +29 -0
  22. app.py +275 -0
  23. assets/page1.png +0 -0
  24. assets/page2.png +0 -0
  25. auto_backgrounds.py +159 -0
  26. auto_draft.py +145 -0
  27. e2c6f789-0515-11ee-ad29-085bd609d2a0.json +0 -0
  28. latex-flatten.py +50 -0
  29. latex_templates/ICLR2022/abstract.tex +0 -0
  30. latex_templates/ICLR2022/backgrounds.tex +0 -0
  31. latex_templates/ICLR2022/conclusion.tex +0 -0
  32. latex_templates/ICLR2022/experiments.tex +0 -0
  33. latex_templates/ICLR2022/fancyhdr.sty +485 -0
  34. latex_templates/ICLR2022/fig.png +0 -0
  35. latex_templates/ICLR2022/iclr2022_conference.bst +1440 -0
  36. latex_templates/ICLR2022/iclr2022_conference.sty +245 -0
  37. latex_templates/ICLR2022/introduction.tex +0 -0
  38. latex_templates/ICLR2022/math_commands.tex +508 -0
  39. latex_templates/ICLR2022/methodology.tex +0 -0
  40. latex_templates/ICLR2022/natbib.sty +1246 -0
  41. latex_templates/ICLR2022/related works.tex +0 -0
  42. latex_templates/ICLR2022/template.tex +35 -0
  43. latex_templates/Summary/abstract.tex +0 -0
  44. latex_templates/Summary/backgrounds.tex +0 -0
  45. latex_templates/Summary/conclusion.tex +0 -0
  46. latex_templates/Summary/experiments.tex +0 -0
  47. latex_templates/Summary/fancyhdr.sty +485 -0
  48. latex_templates/Summary/iclr2022_conference.bst +1440 -0
  49. latex_templates/Summary/iclr2022_conference.sty +245 -0
  50. latex_templates/Summary/introduction.tex +0 -0
.github/workflows/main.yml ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Sync to Hugging Face hub
2
+ on:
3
+ push:
4
+ branches: [main]
5
+
6
+ # to run this workflow manually from the Actions tab
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ sync-to-hub:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v3
14
+ with:
15
+ fetch-depth: 0
16
+ lfs: true
17
+ - name: Push to hub
18
+ env:
19
+ HF_TOKEN: ${{ secrets.HF_TOKEN }}
20
+ run: git push https://shaocongma:$HF_TOKEN@huggingface.co/spaces/shaocongma/auto-draft main
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ /.idea/
.idea/.gitignore ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ # Default ignored files
2
+ /shelf/
3
+ /workspace.xml
4
+ # Datasource local storage ignored files
5
+ /dataSources/
6
+ /dataSources.local.xml
7
+ # Editor-based HTTP Client requests
8
+ /httpRequests/
9
+ **/__pycache__
10
+ **/.idea
.idea/auto-draft.iml ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="PYTHON_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$">
5
+ <excludeFolder url="file://$MODULE_DIR$/venv" />
6
+ </content>
7
+ <orderEntry type="inheritedJdk" />
8
+ <orderEntry type="sourceFolder" forTests="false" />
9
+ </component>
10
+ <component name="PyDocumentationSettings">
11
+ <option name="format" value="PLAIN" />
12
+ <option name="myDocStringFormat" value="Plain" />
13
+ </component>
14
+ </module>
.idea/inspectionProfiles/Project_Default.xml ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <component name="InspectionProjectProfileManager">
2
+ <profile version="1.0">
3
+ <option name="myName" value="Project Default" />
4
+ <inspection_tool class="PyChainedComparisonsInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
5
+ <option name="ignoreConstantInTheMiddle" value="true" />
6
+ </inspection_tool>
7
+ <inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
8
+ <option name="ignoredPackages">
9
+ <value>
10
+ <list size="69">
11
+ <item index="0" class="java.lang.String" itemvalue="pprint" />
12
+ <item index="1" class="java.lang.String" itemvalue="tnt" />
13
+ <item index="2" class="java.lang.String" itemvalue="pyglet" />
14
+ <item index="3" class="java.lang.String" itemvalue="pyzmq" />
15
+ <item index="4" class="java.lang.String" itemvalue="gym" />
16
+ <item index="5" class="java.lang.String" itemvalue="torch" />
17
+ <item index="6" class="java.lang.String" itemvalue="numpy" />
18
+ <item index="7" class="java.lang.String" itemvalue="absl-py" />
19
+ <item index="8" class="java.lang.String" itemvalue="numba" />
20
+ <item index="9" class="java.lang.String" itemvalue="protobuf" />
21
+ <item index="10" class="java.lang.String" itemvalue="torch-scatter" />
22
+ <item index="11" class="java.lang.String" itemvalue="joblib" />
23
+ <item index="12" class="java.lang.String" itemvalue="threadpoolctl" />
24
+ <item index="13" class="java.lang.String" itemvalue="scikit-learn" />
25
+ <item index="14" class="java.lang.String" itemvalue="PyYAML" />
26
+ <item index="15" class="java.lang.String" itemvalue="python-dateutil" />
27
+ <item index="16" class="java.lang.String" itemvalue="cycler" />
28
+ <item index="17" class="java.lang.String" itemvalue="MarkupSafe" />
29
+ <item index="18" class="java.lang.String" itemvalue="mpi4py" />
30
+ <item index="19" class="java.lang.String" itemvalue="torchvision" />
31
+ <item index="20" class="java.lang.String" itemvalue="line-profiler" />
32
+ <item index="21" class="java.lang.String" itemvalue="pyasn1-modules" />
33
+ <item index="22" class="java.lang.String" itemvalue="certifi" />
34
+ <item index="23" class="java.lang.String" itemvalue="oauthlib" />
35
+ <item index="24" class="java.lang.String" itemvalue="pyparsing" />
36
+ <item index="25" class="java.lang.String" itemvalue="Markdown" />
37
+ <item index="26" class="java.lang.String" itemvalue="Werkzeug" />
38
+ <item index="27" class="java.lang.String" itemvalue="h5py" />
39
+ <item index="28" class="java.lang.String" itemvalue="rdflib" />
40
+ <item index="29" class="java.lang.String" itemvalue="torch-cluster" />
41
+ <item index="30" class="java.lang.String" itemvalue="kiwisolver" />
42
+ <item index="31" class="java.lang.String" itemvalue="pytorch-lightning" />
43
+ <item index="32" class="java.lang.String" itemvalue="tensorboard" />
44
+ <item index="33" class="java.lang.String" itemvalue="imageio" />
45
+ <item index="34" class="java.lang.String" itemvalue="matplotlib" />
46
+ <item index="35" class="java.lang.String" itemvalue="test-tube" />
47
+ <item index="36" class="java.lang.String" itemvalue="googledrivedownloader" />
48
+ <item index="37" class="java.lang.String" itemvalue="idna" />
49
+ <item index="38" class="java.lang.String" itemvalue="rsa" />
50
+ <item index="39" class="java.lang.String" itemvalue="networkx" />
51
+ <item index="40" class="java.lang.String" itemvalue="isodate" />
52
+ <item index="41" class="java.lang.String" itemvalue="torch-sparse" />
53
+ <item index="42" class="java.lang.String" itemvalue="llvmlite" />
54
+ <item index="43" class="java.lang.String" itemvalue="pyasn1" />
55
+ <item index="44" class="java.lang.String" itemvalue="requests" />
56
+ <item index="45" class="java.lang.String" itemvalue="importlib-metadata" />
57
+ <item index="46" class="java.lang.String" itemvalue="Jinja2" />
58
+ <item index="47" class="java.lang.String" itemvalue="requests-oauthlib" />
59
+ <item index="48" class="java.lang.String" itemvalue="tensorboard-plugin-wit" />
60
+ <item index="49" class="java.lang.String" itemvalue="zipp" />
61
+ <item index="50" class="java.lang.String" itemvalue="urllib3" />
62
+ <item index="51" class="java.lang.String" itemvalue="torch-geometric" />
63
+ <item index="52" class="java.lang.String" itemvalue="scipy" />
64
+ <item index="53" class="java.lang.String" itemvalue="six" />
65
+ <item index="54" class="java.lang.String" itemvalue="google-auth-oauthlib" />
66
+ <item index="55" class="java.lang.String" itemvalue="chardet" />
67
+ <item index="56" class="java.lang.String" itemvalue="pandas" />
68
+ <item index="57" class="java.lang.String" itemvalue="tqdm" />
69
+ <item index="58" class="java.lang.String" itemvalue="torch-spline-conv" />
70
+ <item index="59" class="java.lang.String" itemvalue="ase" />
71
+ <item index="60" class="java.lang.String" itemvalue="future" />
72
+ <item index="61" class="java.lang.String" itemvalue="cachetools" />
73
+ <item index="62" class="java.lang.String" itemvalue="grpcio" />
74
+ <item index="63" class="java.lang.String" itemvalue="pytz" />
75
+ <item index="64" class="java.lang.String" itemvalue="google-auth" />
76
+ <item index="65" class="java.lang.String" itemvalue="Pillow" />
77
+ <item index="66" class="java.lang.String" itemvalue="decorator" />
78
+ <item index="67" class="java.lang.String" itemvalue="typing-extensions" />
79
+ <item index="68" class="java.lang.String" itemvalue="ale-py" />
80
+ </list>
81
+ </value>
82
+ </option>
83
+ </inspection_tool>
84
+ <inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
85
+ <option name="ignoredErrors">
86
+ <list>
87
+ <option value="N812" />
88
+ <option value="N802" />
89
+ <option value="N803" />
90
+ <option value="N806" />
91
+ </list>
92
+ </option>
93
+ </inspection_tool>
94
+ </profile>
95
+ </component>
.idea/inspectionProfiles/profiles_settings.xml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <component name="InspectionProjectProfileManager">
2
+ <settings>
3
+ <option name="USE_PROJECT_PROFILE" value="false" />
4
+ <version value="1.0" />
5
+ </settings>
6
+ </component>
.idea/misc.xml ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (auto-draft)" project-jdk-type="Python SDK" />
4
+ </project>
.idea/modules.xml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/auto-draft.iml" filepath="$PROJECT_DIR$/.idea/auto-draft.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
+ </component>
6
+ </project>
04c9a7bee23cedb969f454f79837c0e3.zip ADDED
Binary file (54.1 kB). View file
 
6d732fcb-0516-11ee-9128-085bd609d2a0.json ADDED
The diff for this file is too large to render. See raw diff
 
LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2023 CCCBora
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
Playing_Atari_with_Deep_Reinforcement_Learning.pdf ADDED
Binary file (158 kB). View file
 
README-en.md ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Auto-Draft: Literatures Summarization Assistant
2
+
3
+ This project aims to automatically summarize a field of research.
4
+
5
+ ***Features***:
6
+ * Automatically search related papers.
7
+ * Every claim has an appropriate citation.
8
+ * Output LaTeX template.
9
+
10
+ This script requires GPT-4 access. One round of generation will take around 10 minutes and 15,000 tokens (0.5 to 0.8 US dollars).
11
+
12
+ # Demo
13
+
14
+ The following link provides a free demo of basic functions.
15
+ If you need more customized features, please refer to *Usage* for local deployment and modification.
16
+
17
+ https://huggingface.co/spaces/auto-academic/auto-draft
18
+
19
+ # Usage
20
+ 1. Clone this repo:
21
+ ```angular2html
22
+ git clone https://github.com/CCCBora/auto-draft
23
+ ```
24
+ 2. Install dependencies:
25
+ ```angular2html
26
+ pip install -r requirements.txt
27
+ ```
28
+ 3. Set the `OPENAI_API_KEY` in the environment variables.
29
+ 4. Edit `auto_backgrounds.py` to customize the topic you want to explore, and then run
30
+ ```angular2html
31
+ python auto_backgrounds.py
32
+ ```
33
+
34
+ # Example Outputs
35
+ The `outputs` folder contains some original outputs for given inputs.
36
+ They can be directly compiled using Overleaf.
37
+
38
+ Page 1 | Page 2
39
+ :-------------------------:|:-------------------------:
40
+ ![](assets/page1.png "Page-1") | ![](assets/page2.png "Page-2")
41
+
42
+
43
+
README.md ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ sdk: gradio
3
+ app_file: app.py
4
+ license: mit
5
+ title: 'Auto-Draft: 文献整理辅助工具'
6
+ colorTo: indigo
7
+ python_version: 3.10.10
8
+ ---
9
+
10
+
11
+ # Auto-Draft: 文献整理辅助工具
12
+
13
+ 这个项目旨在辅助AI领域学术论文的文献整理。提供如下功能:
14
+ * 主题归纳: 自动搜索相关文献,总结相关工作。
15
+ * 真实引用:所有引用的文献都有对应原文,避免AI胡说八道。
16
+ * 生成LaTeX模板: 输出结果一键编译。
17
+
18
+ 运行过程需要能使用GPT-4的API Key. 生成一篇论文需要15000 Tokens(大约0.5到0.8美元). 总共过程需要大约十分钟.
19
+
20
+ # 体验地址
21
+ 以下链接提供简单功能的免费体验. 如果需要更定制化的功能, 请参照*使用方法*进行本地部署和自行修改.
22
+
23
+ https://huggingface.co/spaces/auto-academic/auto-draft
24
+
25
+ # 使用方法
26
+ 1. 克隆此仓库:
27
+ ```angular2html
28
+ git clone https://github.com/CCCBora/auto-draft
29
+ ```
30
+ 2. 安装依赖:
31
+ ```angular2html
32
+ pip install -r requirements.txt
33
+ ```
34
+ 3. 在环境变量中设定OPENAI_API_KEY。
35
+ 4. 编辑`auto_backgrounds.py`以自定义想要探索的主题和描述,然后运行
36
+ ```angular2html
37
+ python auto_backgrounds.py
38
+ ```
39
+
40
+ # 示例
41
+ `outputs` 文件夹中提供了部分输入的原始输出. 经由Overleaf直接编译得到. 也可以查看本目录下的sample-output.pdf.
42
+
43
+ Page 1 | Page 2
44
+ :-------------------------:|:-------------------------:
45
+ ![](assets/page1.png "Page-1") | ![](assets/page2.png "Page-2")
46
+
47
+ # License
48
+ This project is licensed under the MIT License.
49
+ Some parts of the code are under different licenses, as listed below:
50
+
51
+ * `latex-flatten.py`: Licensed under the Unlicense. Original source: [rekka/latex-flatten](https://github.com/rekka/latex-flatten).
__pycache__/auto_backgrounds.cpython-310.pyc ADDED
Binary file (5.65 kB). View file
 
__pycache__/auto_draft.cpython-310.pyc ADDED
Binary file (4.56 kB). View file
 
__pycache__/references_generator.cpython-310.pyc ADDED
Binary file (2.4 kB). View file
 
__pycache__/section_generator.cpython-310.pyc ADDED
Binary file (3.55 kB). View file
 
a81d76e64c3d70f77bc42dbced229d1d.zip ADDED
Binary file (65.1 kB). View file
 
api_wrapper.py ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ '''
2
+ This script is used to wrap all generation methods together.
3
+
4
+ todo:
5
+ A worker keeps running on the server. Monitor the Amazon SQS. Once receive a new message, do the following:
6
+ Download the corresponding configuration files on S3.
7
+ Change Task status from Pending to Running.
8
+ Call `generator_wrapper` and wait for the outputs.
9
+ If `generator_wrapper` returns results:
10
+ evaluate the results; compile it; upload results to S3 ... Change Task status from Running to Completed.
11
+ If anything goes wrong, raise Error.
12
+ If `generator_wrapper` returns nothing or Timeout, or raise any error:
13
+ Change Task status from Running to Failed.
14
+ '''
15
+
16
+ from auto_backgrounds import generate_draft
17
+ import json
18
+
19
+
20
+ GENERATOR_MAPPING = {"draft": generate_draft}
21
+
22
+ def generator_wrapper(path_to_config_json):
23
+ # Read configuration file and call corresponding function
24
+ with open(path_to_config_json, "r", encoding='utf-8') as f:
25
+ config = json.load(f)
26
+
27
+ generator = GENERATOR_MAPPING.get(config["generator"])
28
+ if generator is None:
29
+ pass
app.py ADDED
@@ -0,0 +1,275 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import os
3
+ import openai
4
+ from auto_backgrounds import generate_backgrounds, generate_draft
5
+ from utils.file_operations import hash_name
6
+ from references_generator import generate_top_k_references
7
+
8
+ # note: App白屏bug:允许第三方cookie
9
+ # todo:
10
+ # 6. get logs when the procedure is not completed. *
11
+ # 7. 自己的文件库; 更多的prompts
12
+ # 8. Decide on how to generate the main part of a paper * (Langchain/AutoGPT
13
+ # 1. 把paper改成纯JSON?
14
+ # 2. 实现别的功能
15
+ # 3. Check API Key GPT-4 Support.
16
+ # 8. Re-build some components using `langchain`
17
+ # - in `gpt_interation`, use LLM
18
+ # 5. 从提供的bib文件中 找到cite和citedby的文章, 计算embeddings; 从整个paper list中 根据cos距离进行排序; 选取max_refs的文章
19
+ # future:
20
+ # 4. add auto_polishing function
21
+ # 12. Change link to more appealing color # after the website is built;
22
+ # 1. Check if there are any duplicated citations
23
+ # 2. Remove potential thebibliography and bibitem in .tex file
24
+
25
+ #######################################################################################################################
26
+ # Check if openai and cloud storage available
27
+ #######################################################################################################################
28
+ openai_key = os.getenv("OPENAI_API_KEY")
29
+ access_key_id = os.getenv('AWS_ACCESS_KEY_ID')
30
+ secret_access_key = os.getenv('AWS_SECRET_ACCESS_KEY')
31
+ if access_key_id is None or secret_access_key is None:
32
+ print("Access keys are not provided. Outputs cannot be saved to AWS Cloud Storage.\n")
33
+ IS_CACHE_AVAILABLE = False
34
+ else:
35
+ IS_CACHE_AVAILABLE = True
36
+
37
+ if openai_key is None:
38
+ print("OPENAI_API_KEY is not found in environment variables. The output may not be generated.\n")
39
+ IS_OPENAI_API_KEY_AVAILABLE = False
40
+ else:
41
+ openai.api_key = openai_key
42
+ try:
43
+ openai.Model.list()
44
+ IS_OPENAI_API_KEY_AVAILABLE = True
45
+ except Exception as e:
46
+ IS_OPENAI_API_KEY_AVAILABLE = False
47
+
48
+
49
+ def clear_inputs(*args):
50
+ return "", ""
51
+
52
+ def clear_inputs_refs(*args):
53
+ return "", 5
54
+
55
+
56
+ def wrapped_generator(paper_title, paper_description, openai_api_key=None,
57
+ paper_template="ICLR2022", tldr=True, max_num_refs=50, selected_sections=None, bib_refs=None, model="gpt-4",
58
+ cache_mode=IS_CACHE_AVAILABLE):
59
+ # if `cache_mode` is True, then follow the following steps:
60
+ # check if "title"+"description" have been generated before
61
+ # if so, download from the cloud storage, return it
62
+ # if not, generate the result.
63
+ if bib_refs is not None:
64
+ bib_refs = bib_refs.name
65
+ if openai_api_key is not None:
66
+ openai.api_key = openai_api_key
67
+ openai.Model.list()
68
+
69
+ if cache_mode:
70
+ from utils.storage import list_all_files, download_file, upload_file
71
+ # check if "title"+"description" have been generated before
72
+ input_dict = {"title": paper_title, "description": paper_description,
73
+ "generator": "generate_draft"}
74
+ file_name = hash_name(input_dict) + ".zip"
75
+ file_list = list_all_files()
76
+ # print(f"{file_name} will be generated. Check the file list {file_list}")
77
+ if file_name in file_list:
78
+ # download from the cloud storage, return it
79
+ download_file(file_name)
80
+ return file_name
81
+ else:
82
+ # generate the result.
83
+ # output = fake_generate_backgrounds(title, description, openai_key)
84
+ output = generate_draft(paper_title, paper_description, template=paper_template,
85
+ tldr=tldr, max_num_refs=max_num_refs,
86
+ sections=selected_sections, bib_refs=bib_refs, model=model)
87
+ # output = generate_draft(paper_title, paper_description, template, "gpt-4")
88
+ upload_file(output)
89
+ return output
90
+ else:
91
+ # output = fake_generate_backgrounds(title, description, openai_key)
92
+ output = generate_draft(paper_title, paper_description, template=paper_template,
93
+ tldr=tldr, max_num_refs=max_num_refs,
94
+ sections=selected_sections, bib_refs=bib_refs, model=model)
95
+ return output
96
+
97
+
98
+ def wrapped_references_generator(paper_title, num_refs, openai_api_key=None):
99
+ if openai_api_key is not None:
100
+ openai.api_key = openai_api_key
101
+ openai.Model.list()
102
+ return generate_top_k_references(paper_title, top_k=num_refs)
103
+
104
+
105
+
106
+ theme = gr.themes.Default(font=gr.themes.GoogleFont("Questrial"))
107
+ # .set(
108
+ # background_fill_primary='#E5E4E2',
109
+ # background_fill_secondary = '#F6F6F6',
110
+ # button_primary_background_fill="#281A39"
111
+ # )
112
+
113
+ ACADEMIC_PAPER = """## 一键生成论文初稿
114
+
115
+ 1. 在Title文本框中输入想要生成的论文名称(比如Playing Atari with Deep Reinforcement Learning).
116
+ 2. 点击Submit. 等待大概十分钟.
117
+ 3. 在右侧下载.zip格式的输出,在Overleaf上编译浏览.
118
+ """
119
+
120
+
121
+ REFERENCES = """## 一键搜索相关论文
122
+ (此功能已经被整合进一键生成论文初稿)
123
+ 1. 在Title文本框中输入想要搜索文献的论文(比如Playing Atari with Deep Reinforcement Learning).
124
+ 2. 点击Submit. 等待大概十分钟.
125
+ 3. 在右侧JSON处会显示相关文献.
126
+ """
127
+
128
+ REFERENCES_INSTRUCTION = """### References
129
+ 这一行用于定义AI如何选取参考文献. 目前是两种方式混合:
130
+ 1. GPT自动根据标题生成关键字,使用Semantic Scholar搜索引擎搜索文献,利用Specter获取Paper Embedding来自动选取最相关的文献作为GPT的参考资料.
131
+ 2. 用户上传bibtex文件,使用Google Scholar搜索摘要作为GPT的参考资料.
132
+ 关于有希望利用本地文件来供GPT参考的功能将在未来实装.
133
+ """
134
+
135
+ DOMAIN_KNOWLEDGE_INSTRUCTION = """### Domain Knowledge
136
+ (暂未实装)
137
+ 这一行用于定义AI的知识库. 将提供两种选择:
138
+ 1. 各个领域内由专家预先收集资料并构建的的FAISS向量数据库. 每个数据库内包含了数百万页经过同行评议的论文和专业经典书籍.
139
+ 2. 自行构建的使用OpenAI text-embedding-ada-002模型创建的FAISS向量数据库.
140
+ """
141
+
142
+ OTHERS_INSTRUCTION = """### Others
143
+
144
+ """
145
+
146
+
147
+ with gr.Blocks(theme=theme) as demo:
148
+ gr.Markdown('''
149
+ # Auto-Draft: 文献整理辅助工具
150
+
151
+ 本Demo提供对[Auto-Draft](https://github.com/CCCBora/auto-draft)的auto_draft功能的测试.
152
+ 通过输入想要生成的论文名称(比如Playing atari with deep reinforcement learning),即可由AI辅助生成论文模板.
153
+
154
+ ***2023-05-17 Update***: 我的API的余额用完了, 所以这个月不再能提供GPT-4的API Key. 这里为大家提供了一个位置输入OpenAI API Key. 同时也提供了GPT-3.5的兼容. 欢迎大家自行体验.
155
+
156
+ 如果有更多想法和建议欢迎加入QQ群里交流, 如果我在Space里更新了Key我会第一时间通知大家. 群号: ***249738228***.
157
+ ''')
158
+
159
+ with gr.Row():
160
+ with gr.Column(scale=2):
161
+ key = gr.Textbox(value=openai_key, lines=1, max_lines=1, label="OpenAI Key",
162
+ visible=not IS_OPENAI_API_KEY_AVAILABLE)
163
+
164
+ # generator = gr.Dropdown(choices=["学术论文", "文献总结"], value="文献总结",
165
+ # label="Selection", info="目前支持生成'学术论文'和'文献总结'.", interactive=True)
166
+
167
+ # 每个功能做一个tab
168
+ with gr.Tab("学术论文"):
169
+ gr.Markdown(ACADEMIC_PAPER)
170
+
171
+ title = gr.Textbox(value="Playing Atari with Deep Reinforcement Learning", lines=1, max_lines=1,
172
+ label="Title", info="论文标题")
173
+
174
+ slider = gr.Slider(minimum=1, maximum=100, value=20, step=1,
175
+ interactive=True, visible=False, label="最大参考文献数目")
176
+ with gr.Accordion("高级设置", open=False):
177
+ with gr.Row():
178
+ description_pp = gr.Textbox(lines=5, label="Description (Optional)", visible=True,
179
+ info="对希望生成的论文的一些描述. 包括这篇论文的创新点, 主要贡献, 等.")
180
+ with gr.Row():
181
+ template = gr.Dropdown(label="Template", choices=["ICLR2022"], value="ICLR2022",
182
+ interactive=False,
183
+ info="生成论文的参考模板. (暂不支持修改)")
184
+ model_selection = gr.Dropdown(label="Model", choices=["gpt-4", "gpt-3.5-turbo"],
185
+ value="gpt-3.5-turbo",
186
+ interactive=True,
187
+ info="生成论文用到的语言模型.")
188
+ sections = gr.CheckboxGroup(
189
+ choices=["introduction", "related works", "backgrounds", "methodology", "experiments",
190
+ "conclusion", "abstract"],
191
+ type="value", label="生成章节", interactive=True,
192
+ value=["introduction", "related works"])
193
+
194
+ with gr.Row():
195
+ with gr.Column(scale=1):
196
+ gr.Markdown(REFERENCES_INSTRUCTION)
197
+
198
+ with gr.Column(scale=2):
199
+ search_engine = gr.Dropdown(label="Search Engine",
200
+ choices=["ArXiv", "Semantic Scholar", "Google Scholar", "None"],
201
+ value="Semantic Scholar",
202
+ interactive=False,
203
+ visible=False,
204
+ info="用于决定GPT用什么搜索引擎来搜索文献. (暂不支持修改)")
205
+ tldr_checkbox = gr.Checkbox(value=True, label="TLDR;",
206
+ info="选择此筐表示将使用Semantic Scholar的TLDR作为文献的总结.",
207
+ interactive=True)
208
+ gr.Markdown('''
209
+ 上传.bib文件提供AI需要参考的文献.
210
+ ''')
211
+ bibtex_file = gr.File(label="Upload .bib file", file_types=["text"],
212
+ interactive=True)
213
+ gr.Examples(
214
+ examples=["latex_templates/example_references.bib"],
215
+ inputs=bibtex_file
216
+ )
217
+
218
+ with gr.Row():
219
+ with gr.Column(scale=1):
220
+ gr.Markdown(DOMAIN_KNOWLEDGE_INSTRUCTION)
221
+
222
+ with gr.Column(scale=2):
223
+ domain_knowledge = gr.Dropdown(label="预载知识库",
224
+ choices=["(None)", "Machine Learning"],
225
+ value="(None)",
226
+ interactive=False,
227
+ info="使用预先构建的知识库. (暂未实装)")
228
+ local_domain_knowledge = gr.File(label="本地知识库 (暂未实装)", interactive=False)
229
+ with gr.Row():
230
+ clear_button_pp = gr.Button("Clear")
231
+ submit_button_pp = gr.Button("Submit", variant="primary")
232
+
233
+ with gr.Tab("文献搜索"):
234
+ gr.Markdown(REFERENCES)
235
+
236
+ title_refs = gr.Textbox(value="Playing Atari with Deep Reinforcement Learning", lines=1, max_lines=1,
237
+ label="Title", info="论文标题")
238
+ slider_refs = gr.Slider(minimum=1, maximum=100, value=5, step=1,
239
+ interactive=True, label="最相关的参考文献数目")
240
+ with gr.Row():
241
+ clear_button_refs = gr.Button("Clear")
242
+ submit_button_refs = gr.Button("Submit", variant="primary")
243
+
244
+ with gr.Tab("文献综述 (Coming soon!)"):
245
+ gr.Markdown('''
246
+ <h1 style="text-align: center;">Coming soon!</h1>
247
+ ''')
248
+ with gr.Tab("Github文档 (Coming soon!)"):
249
+ gr.Markdown('''
250
+ <h1 style="text-align: center;">Coming soon!</h1>
251
+ ''')
252
+
253
+ with gr.Column(scale=1):
254
+ style_mapping = {True: "color:white;background-color:green",
255
+ False: "color:white;background-color:red"} # todo: to match website's style
256
+ availability_mapping = {True: "AVAILABLE", False: "NOT AVAILABLE"}
257
+ gr.Markdown(f'''## Huggingface Space Status
258
+ 当`OpenAI API`显示AVAILABLE的时候这个Space可以直接使用.
259
+ 当`OpenAI API`显示NOT AVAILABLE的时候这个Space可以通过在左侧输入OPENAI KEY来使用. 需要有GPT-4的API权限.
260
+ 当`Cache`显示AVAILABLE的时候, 所有的输入和输出会被备份到我的云储存中. 显示NOT AVAILABLE的时候不影响实际使用.
261
+ `OpenAI API`: <span style="{style_mapping[IS_OPENAI_API_KEY_AVAILABLE]}">{availability_mapping[IS_OPENAI_API_KEY_AVAILABLE]}</span>. `Cache`: <span style="{style_mapping[IS_CACHE_AVAILABLE]}">{availability_mapping[IS_CACHE_AVAILABLE]}</span>.''')
262
+ file_output = gr.File(label="Output")
263
+ json_output = gr.JSON(label="References")
264
+
265
+ clear_button_pp.click(fn=clear_inputs, inputs=[title, description_pp], outputs=[title, description_pp])
266
+ submit_button_pp.click(fn=wrapped_generator,
267
+ inputs=[title, description_pp, key, template, tldr_checkbox, slider, sections, bibtex_file,
268
+ model_selection], outputs=file_output)
269
+
270
+ clear_button_refs.click(fn=clear_inputs_refs, inputs=[title_refs, slider_refs], outputs=[title_refs, slider_refs])
271
+ submit_button_refs.click(fn=wrapped_references_generator,
272
+ inputs=[title_refs, slider_refs, key], outputs=json_output)
273
+
274
+ demo.queue(concurrency_count=1, max_size=5, api_open=False)
275
+ demo.launch(share=True)
assets/page1.png ADDED
assets/page2.png ADDED
auto_backgrounds.py ADDED
@@ -0,0 +1,159 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os.path
2
+ from utils.references import References
3
+ from utils.file_operations import hash_name, make_archive, copy_templates
4
+ from utils.tex_processing import create_copies
5
+ from section_generator import section_generation_bg, keywords_generation, figures_generation, section_generation
6
+ from references_generator import generate_top_k_references
7
+ import logging
8
+ import time
9
+
10
+
11
+ TOTAL_TOKENS = 0
12
+ TOTAL_PROMPTS_TOKENS = 0
13
+ TOTAL_COMPLETION_TOKENS = 0
14
+
15
+
16
+ def log_usage(usage, generating_target, print_out=True):
17
+ global TOTAL_TOKENS
18
+ global TOTAL_PROMPTS_TOKENS
19
+ global TOTAL_COMPLETION_TOKENS
20
+
21
+ prompts_tokens = usage['prompt_tokens']
22
+ completion_tokens = usage['completion_tokens']
23
+ total_tokens = usage['total_tokens']
24
+
25
+ TOTAL_TOKENS += total_tokens
26
+ TOTAL_PROMPTS_TOKENS += prompts_tokens
27
+ TOTAL_COMPLETION_TOKENS += completion_tokens
28
+
29
+ message = f"For generating {generating_target}, {total_tokens} tokens have been used ({prompts_tokens} for prompts; {completion_tokens} for completion). " \
30
+ f"{TOTAL_TOKENS} tokens have been used in total.\n\n"
31
+ if print_out:
32
+ print(message)
33
+ logging.info(message)
34
+
35
+ def _generation_setup(title, description="", template="ICLR2022", tldr=False,
36
+ max_kw_refs=10, max_num_refs=50, bib_refs=None, max_tokens=2048):
37
+ """
38
+ This function handles the setup process for paper generation; it contains three folds
39
+ 1. Copy the template to the outputs folder. Create the log file `generation.log`
40
+ 2. Collect references based on the given `title` and `description`
41
+ 3. Generate the basic `paper` object (a dictionary)
42
+
43
+ Parameters:
44
+ title (str): The title of the paper.
45
+ description (str, optional): A short description or abstract for the paper. Defaults to an empty string.
46
+ template (str, optional): The template to be used for paper generation. Defaults to "ICLR2022".
47
+ tldr (bool, optional): A flag indicating whether a TL;DR (Too Long; Didn't Read) summary should be generated for the collected papers. Defaults to False.
48
+ max_kw_refs (int, optional): The maximum number of references that can be associated with each keyword. Defaults to 10.
49
+ max_num_refs (int, optional): The maximum number of references that can be included in the paper. Defaults to 50.
50
+ bib_refs (list, optional): A list of pre-existing references in BibTeX format. Defaults to None.
51
+
52
+ Returns:
53
+ tuple: A tuple containing the following elements:
54
+ - paper (dict): A dictionary containing the generated paper information.
55
+ - destination_folder (str): The path to the destination folder where the generation log is saved.
56
+ - all_paper_ids (list): A list of all paper IDs collected for the references.
57
+ """
58
+ # print("Generation setup...")
59
+ paper = {}
60
+ paper_body = {}
61
+
62
+ # Create a copy in the outputs folder.
63
+ bibtex_path, destination_folder = copy_templates(template, title)
64
+ logging.basicConfig(level=logging.INFO, filename=os.path.join(destination_folder, "generation.log") )
65
+
66
+ # Generate keywords and references
67
+ # print("Initialize the paper information ...")
68
+ input_dict = {"title": title, "description": description}
69
+ keywords, usage = keywords_generation(input_dict)
70
+ log_usage(usage, "keywords")
71
+
72
+ # generate keywords dictionary
73
+ keywords = {keyword:max_kw_refs for keyword in keywords}
74
+ print(f"keywords: {keywords}\n\n")
75
+
76
+ ref = References(title, bib_refs)
77
+ ref.collect_papers(keywords, tldr=tldr)
78
+ all_paper_ids = ref.to_bibtex(bibtex_path)
79
+
80
+ print(f"The paper information has been initialized. References are saved to {bibtex_path}.")
81
+
82
+ paper["title"] = title
83
+ paper["description"] = description
84
+ paper["references"] = ref.to_prompts(max_tokens=max_tokens)
85
+ paper["body"] = paper_body
86
+ paper["bibtex"] = bibtex_path
87
+ return paper, destination_folder, all_paper_ids #todo: use `all_paper_ids` to check if all citations are in this list
88
+
89
+
90
+
91
+ def generate_backgrounds(title, description="", template="ICLR2022", model="gpt-4"):
92
+ # todo: to match the current generation setup
93
+ paper, destination_folder, _ = _generation_setup(title, description, template, model)
94
+
95
+ for section in ["introduction", "related works", "backgrounds"]:
96
+ try:
97
+ usage = section_generation_bg(paper, section, destination_folder, model=model)
98
+ log_usage(usage, section)
99
+ except Exception as e:
100
+ message = f"Failed to generate {section}. {type(e).__name__} was raised: {e}"
101
+ print(message)
102
+ logging.info(message)
103
+ print(f"The paper '{title}' has been generated. Saved to {destination_folder}.")
104
+
105
+ input_dict = {"title": title, "description": description, "generator": "generate_backgrounds"}
106
+ filename = hash_name(input_dict) + ".zip"
107
+ return make_archive(destination_folder, filename)
108
+
109
+
110
+
111
+ def generate_draft(title, description="", template="ICLR2022",
112
+ tldr=True, max_kw_refs=10, max_num_refs=30, sections=None, bib_refs=None, model="gpt-4"):
113
+ # pre-processing `sections` parameter;
114
+ print("================PRE-PROCESSING================")
115
+ if sections is None:
116
+ sections = ["introduction", "related works", "backgrounds", "methodology", "experiments", "conclusion", "abstract"]
117
+
118
+ # todo: add more parameters; select which section to generate; select maximum refs.
119
+ paper, destination_folder, _ = _generation_setup(title, description, template, tldr, max_kw_refs, max_num_refs, bib_refs)
120
+
121
+ # main components
122
+ for section in sections:
123
+ print(f"================Generate {section}================")
124
+ max_attempts = 4
125
+ attempts_count = 0
126
+ while attempts_count < max_attempts:
127
+ try:
128
+ usage = section_generation(paper, section, destination_folder, model=model)
129
+ log_usage(usage, section)
130
+ break
131
+ except Exception as e:
132
+ message = f"Failed to generate {section}. {type(e).__name__} was raised: {e}\n"
133
+ print(message)
134
+ logging.info(message)
135
+ attempts_count += 1
136
+ time.sleep(15)
137
+
138
+ # post-processing
139
+ print("================POST-PROCESSING================")
140
+ create_copies(destination_folder)
141
+ input_dict = {"title": title, "description": description, "generator": "generate_draft"}
142
+ filename = hash_name(input_dict) + ".zip"
143
+ print("\nMission completed.\n")
144
+ return make_archive(destination_folder, filename)
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+ if __name__ == "__main__":
153
+ import openai
154
+ openai.api_key = os.getenv("OPENAI_API_KEY")
155
+
156
+ title = "Using interpretable boosting algorithms for modeling environmental and agricultural data"
157
+ description = ""
158
+ output = generate_draft(title, description, tldr=True, max_kw_refs=10)
159
+ print(output)
auto_draft.py ADDED
@@ -0,0 +1,145 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # from utils.references import References
2
+ # from utils.prompts import generate_paper_prompts, generate_keywords_prompts, generate_experiments_prompts
3
+ # from utils.gpt_interaction import get_responses, extract_responses, extract_keywords, extract_json
4
+ # from utils.tex_processing import replace_title
5
+ # from utils.figures import generate_random_figures
6
+ # import datetime
7
+ # import shutil
8
+ # import time
9
+ # import logging
10
+ # import os
11
+ #
12
+ # TOTAL_TOKENS = 0
13
+ # TOTAL_PROMPTS_TOKENS = 0
14
+ # TOTAL_COMPLETION_TOKENS = 0
15
+ #
16
+ # def make_archive(source, destination):
17
+ # base = os.path.basename(destination)
18
+ # name = base.split('.')[0]
19
+ # format = base.split('.')[1]
20
+ # archive_from = os.path.dirname(source)
21
+ # archive_to = os.path.basename(source.strip(os.sep))
22
+ # shutil.make_archive(name, format, archive_from, archive_to)
23
+ # shutil.move('%s.%s'%(name,format), destination)
24
+ # return destination
25
+ #
26
+ #
27
+ # def log_usage(usage, generating_target, print_out=True):
28
+ # global TOTAL_TOKENS
29
+ # global TOTAL_PROMPTS_TOKENS
30
+ # global TOTAL_COMPLETION_TOKENS
31
+ #
32
+ # prompts_tokens = usage['prompt_tokens']
33
+ # completion_tokens = usage['completion_tokens']
34
+ # total_tokens = usage['total_tokens']
35
+ #
36
+ # TOTAL_TOKENS += total_tokens
37
+ # TOTAL_PROMPTS_TOKENS += prompts_tokens
38
+ # TOTAL_COMPLETION_TOKENS += completion_tokens
39
+ #
40
+ # message = f"For generating {generating_target}, {total_tokens} tokens have been used ({prompts_tokens} for prompts; {completion_tokens} for completion). " \
41
+ # f"{TOTAL_TOKENS} tokens have been used in total."
42
+ # if print_out:
43
+ # print(message)
44
+ # logging.info(message)
45
+ #
46
+ # def pipeline(paper, section, save_to_path, model):
47
+ # """
48
+ # The main pipeline of generating a section.
49
+ # 1. Generate prompts.
50
+ # 2. Get responses from AI assistant.
51
+ # 3. Extract the section text.
52
+ # 4. Save the text to .tex file.
53
+ # :return usage
54
+ # """
55
+ # print(f"Generating {section}...")
56
+ # prompts = generate_paper_prompts(paper, section)
57
+ # gpt_response, usage = get_responses(prompts, model)
58
+ # output = extract_responses(gpt_response)
59
+ # paper["body"][section] = output
60
+ # tex_file = save_to_path + f"{section}.tex"
61
+ # if section == "abstract":
62
+ # with open(tex_file, "w") as f:
63
+ # f.write(r"\begin{abstract}")
64
+ # with open(tex_file, "a") as f:
65
+ # f.write(output)
66
+ # with open(tex_file, "a") as f:
67
+ # f.write(r"\end{abstract}")
68
+ # else:
69
+ # with open(tex_file, "w") as f:
70
+ # f.write(f"\section{{{section}}}\n")
71
+ # with open(tex_file, "a") as f:
72
+ # f.write(output)
73
+ # time.sleep(5)
74
+ # print(f"{section} has been generated. Saved to {tex_file}.")
75
+ # return usage
76
+ #
77
+ #
78
+ #
79
+ # def generate_draft(title, description="", template="ICLR2022", model="gpt-4"):
80
+ # """
81
+ # The main pipeline of generating a paper.
82
+ # 1. Copy everything to the output folder.
83
+ # 2. Create references.
84
+ # 3. Generate each section using `pipeline`.
85
+ # 4. Post-processing: check common errors, fill the title, ...
86
+ # """
87
+ # paper = {}
88
+ # paper_body = {}
89
+ #
90
+ # # Create a copy in the outputs folder.
91
+ # # todo: use copy_templates function instead.
92
+ # now = datetime.datetime.now()
93
+ # target_name = now.strftime("outputs_%Y%m%d_%H%M%S")
94
+ # source_folder = f"latex_templates/{template}"
95
+ # destination_folder = f"outputs/{target_name}"
96
+ # shutil.copytree(source_folder, destination_folder)
97
+ #
98
+ # bibtex_path = destination_folder + "/ref.bib"
99
+ # save_to_path = destination_folder +"/"
100
+ # replace_title(save_to_path, title)
101
+ # logging.basicConfig( level=logging.INFO, filename=save_to_path+"generation.log")
102
+ #
103
+ # # Generate keywords and references
104
+ # print("Initialize the paper information ...")
105
+ # prompts = generate_keywords_prompts(title, description)
106
+ # gpt_response, usage = get_responses(prompts, model)
107
+ # keywords = extract_keywords(gpt_response)
108
+ # log_usage(usage, "keywords")
109
+ # ref = References(load_papers = "") #todo: allow users to upload bibfile.
110
+ # ref.collect_papers(keywords, method="arxiv") #todo: add more methods to find related papers
111
+ # all_paper_ids = ref.to_bibtex(bibtex_path) #todo: this will used to check if all citations are in this list
112
+ #
113
+ # print(f"The paper information has been initialized. References are saved to {bibtex_path}.")
114
+ #
115
+ # paper["title"] = title
116
+ # paper["description"] = description
117
+ # paper["references"] = ref.to_prompts() #todo: see if this prompts can be compressed.
118
+ # paper["body"] = paper_body
119
+ # paper["bibtex"] = bibtex_path
120
+ #
121
+ # print("Generating figures ...")
122
+ # prompts = generate_experiments_prompts(paper)
123
+ # gpt_response, usage = get_responses(prompts, model)
124
+ # list_of_methods = list(extract_json(gpt_response))
125
+ # log_usage(usage, "figures")
126
+ # generate_random_figures(list_of_methods, save_to_path + "comparison.png")
127
+ #
128
+ # for section in ["introduction", "related works", "backgrounds", "methodology", "experiments", "conclusion", "abstract"]:
129
+ # try:
130
+ # usage = pipeline(paper, section, save_to_path, model=model)
131
+ # log_usage(usage, section)
132
+ # except Exception as e:
133
+ # print(f"Failed to generate {section} due to the error: {e}")
134
+ # print(f"The paper {title} has been generated. Saved to {save_to_path}.")
135
+ # return make_archive(destination_folder, "output.zip")
136
+ #
137
+ # if __name__ == "__main__":
138
+ # # title = "Training Adversarial Generative Neural Network with Adaptive Dropout Rate"
139
+ # title = "Playing Atari Game with Deep Reinforcement Learning"
140
+ # description = ""
141
+ # template = "ICLR2022"
142
+ # model = "gpt-4"
143
+ # # model = "gpt-3.5-turbo"
144
+ #
145
+ # generate_draft(title, description, template, model)
e2c6f789-0515-11ee-ad29-085bd609d2a0.json ADDED
The diff for this file is too large to render. See raw diff
 
latex-flatten.py ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python
2
+ # This script is taken from: https://github.com/rekka/latex-flatten
3
+
4
+ # A simple script for flattening LaTeX files by inlining included files.
5
+ #
6
+ # - Supports `\include` and `\input` commands.
7
+ # - Automatically adds extension `.tex` if the file does not have an extension.
8
+ # - Handles multiple include commands per line, comments.
9
+ # - Does not flatten recursively.
10
+
11
+ import re
12
+ import sys
13
+
14
+ if len(sys.argv)==3:
15
+ main_name = sys.argv[1]
16
+ output_name = sys.argv[2]
17
+ else:
18
+ sys.exit('USAGE: %s main.tex output.tex' %sys.argv[0])
19
+
20
+ main = open(main_name,'r')
21
+ output = open(output_name,'w')
22
+
23
+ for line in main.readlines():
24
+ s = re.split('%', line, 2)
25
+ tex = s[0]
26
+ if len(s) > 1:
27
+ comment = '%' + s[1]
28
+ else:
29
+ comment = ''
30
+
31
+ chunks = re.split(r'\\(?:input|include)\{[^}]+\}', tex)
32
+
33
+ if len(chunks) > 1:
34
+ for (c, t) in zip(chunks, re.finditer(r'\\(input|include)\{([^}]+)\}', tex)):
35
+ cmd_name = t.group(1)
36
+ include_name = t.group(2)
37
+ if '.' not in include_name: include_name = include_name + '.tex'
38
+ if c.strip(): output.write(c + '\n')
39
+ output.write('% BEGIN \\' + cmd_name + '{' + include_name + '}\n')
40
+ include = open(include_name, 'r')
41
+ output.write(include.read())
42
+ include.close()
43
+ output.write('% END \\' + cmd_name + '{' + include_name + '}\n')
44
+ tail = chunks[-1] + comment
45
+ if tail.strip(): output.write(tail)
46
+ else:
47
+ output.write(line)
48
+
49
+ output.close()
50
+ main.close()
latex_templates/ICLR2022/abstract.tex ADDED
File without changes
latex_templates/ICLR2022/backgrounds.tex ADDED
File without changes
latex_templates/ICLR2022/conclusion.tex ADDED
File without changes
latex_templates/ICLR2022/experiments.tex ADDED
File without changes
latex_templates/ICLR2022/fancyhdr.sty ADDED
@@ -0,0 +1,485 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ % fancyhdr.sty version 3.2
2
+ % Fancy headers and footers for LaTeX.
3
+ % Piet van Oostrum,
4
+ % Dept of Computer and Information Sciences, University of Utrecht,
5
+ % Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands
6
+ % Telephone: +31 30 2532180. Email: piet@cs.uu.nl
7
+ % ========================================================================
8
+ % LICENCE:
9
+ % This file may be distributed under the terms of the LaTeX Project Public
10
+ % License, as described in lppl.txt in the base LaTeX distribution.
11
+ % Either version 1 or, at your option, any later version.
12
+ % ========================================================================
13
+ % MODIFICATION HISTORY:
14
+ % Sep 16, 1994
15
+ % version 1.4: Correction for use with \reversemargin
16
+ % Sep 29, 1994:
17
+ % version 1.5: Added the \iftopfloat, \ifbotfloat and \iffloatpage commands
18
+ % Oct 4, 1994:
19
+ % version 1.6: Reset single spacing in headers/footers for use with
20
+ % setspace.sty or doublespace.sty
21
+ % Oct 4, 1994:
22
+ % version 1.7: changed \let\@mkboth\markboth to
23
+ % \def\@mkboth{\protect\markboth} to make it more robust
24
+ % Dec 5, 1994:
25
+ % version 1.8: corrections for amsbook/amsart: define \@chapapp and (more
26
+ % importantly) use the \chapter/sectionmark definitions from ps@headings if
27
+ % they exist (which should be true for all standard classes).
28
+ % May 31, 1995:
29
+ % version 1.9: The proposed \renewcommand{\headrulewidth}{\iffloatpage...
30
+ % construction in the doc did not work properly with the fancyplain style.
31
+ % June 1, 1995:
32
+ % version 1.91: The definition of \@mkboth wasn't restored on subsequent
33
+ % \pagestyle{fancy}'s.
34
+ % June 1, 1995:
35
+ % version 1.92: The sequence \pagestyle{fancyplain} \pagestyle{plain}
36
+ % \pagestyle{fancy} would erroneously select the plain version.
37
+ % June 1, 1995:
38
+ % version 1.93: \fancypagestyle command added.
39
+ % Dec 11, 1995:
40
+ % version 1.94: suggested by Conrad Hughes <chughes@maths.tcd.ie>
41
+ % CJCH, Dec 11, 1995: added \footruleskip to allow control over footrule
42
+ % position (old hardcoded value of .3\normalbaselineskip is far too high
43
+ % when used with very small footer fonts).
44
+ % Jan 31, 1996:
45
+ % version 1.95: call \@normalsize in the reset code if that is defined,
46
+ % otherwise \normalsize.
47
+ % this is to solve a problem with ucthesis.cls, as this doesn't
48
+ % define \@currsize. Unfortunately for latex209 calling \normalsize doesn't
49
+ % work as this is optimized to do very little, so there \@normalsize should
50
+ % be called. Hopefully this code works for all versions of LaTeX known to
51
+ % mankind.
52
+ % April 25, 1996:
53
+ % version 1.96: initialize \headwidth to a magic (negative) value to catch
54
+ % most common cases that people change it before calling \pagestyle{fancy}.
55
+ % Note it can't be initialized when reading in this file, because
56
+ % \textwidth could be changed afterwards. This is quite probable.
57
+ % We also switch to \MakeUppercase rather than \uppercase and introduce a
58
+ % \nouppercase command for use in headers. and footers.
59
+ % May 3, 1996:
60
+ % version 1.97: Two changes:
61
+ % 1. Undo the change in version 1.8 (using the pagestyle{headings} defaults
62
+ % for the chapter and section marks. The current version of amsbook and
63
+ % amsart classes don't seem to need them anymore. Moreover the standard
64
+ % latex classes don't use \markboth if twoside isn't selected, and this is
65
+ % confusing as \leftmark doesn't work as expected.
66
+ % 2. include a call to \ps@empty in ps@@fancy. This is to solve a problem
67
+ % in the amsbook and amsart classes, that make global changes to \topskip,
68
+ % which are reset in \ps@empty. Hopefully this doesn't break other things.
69
+ % May 7, 1996:
70
+ % version 1.98:
71
+ % Added % after the line \def\nouppercase
72
+ % May 7, 1996:
73
+ % version 1.99: This is the alpha version of fancyhdr 2.0
74
+ % Introduced the new commands \fancyhead, \fancyfoot, and \fancyhf.
75
+ % Changed \headrulewidth, \footrulewidth, \footruleskip to
76
+ % macros rather than length parameters, In this way they can be
77
+ % conditionalized and they don't consume length registers. There is no need
78
+ % to have them as length registers unless you want to do calculations with
79
+ % them, which is unlikely. Note that this may make some uses of them
80
+ % incompatible (i.e. if you have a file that uses \setlength or \xxxx=)
81
+ % May 10, 1996:
82
+ % version 1.99a:
83
+ % Added a few more % signs
84
+ % May 10, 1996:
85
+ % version 1.99b:
86
+ % Changed the syntax of \f@nfor to be resistent to catcode changes of :=
87
+ % Removed the [1] from the defs of \lhead etc. because the parameter is
88
+ % consumed by the \@[xy]lhead etc. macros.
89
+ % June 24, 1997:
90
+ % version 1.99c:
91
+ % corrected \nouppercase to also include the protected form of \MakeUppercase
92
+ % \global added to manipulation of \headwidth.
93
+ % \iffootnote command added.
94
+ % Some comments added about \@fancyhead and \@fancyfoot.
95
+ % Aug 24, 1998
96
+ % version 1.99d
97
+ % Changed the default \ps@empty to \ps@@empty in order to allow
98
+ % \fancypagestyle{empty} redefinition.
99
+ % Oct 11, 2000
100
+ % version 2.0
101
+ % Added LPPL license clause.
102
+ %
103
+ % A check for \headheight is added. An errormessage is given (once) if the
104
+ % header is too large. Empty headers don't generate the error even if
105
+ % \headheight is very small or even 0pt.
106
+ % Warning added for the use of 'E' option when twoside option is not used.
107
+ % In this case the 'E' fields will never be used.
108
+ %
109
+ % Mar 10, 2002
110
+ % version 2.1beta
111
+ % New command: \fancyhfoffset[place]{length}
112
+ % defines offsets to be applied to the header/footer to let it stick into
113
+ % the margins (if length > 0).
114
+ % place is like in fancyhead, except that only E,O,L,R can be used.
115
+ % This replaces the old calculation based on \headwidth and the marginpar
116
+ % area.
117
+ % \headwidth will be dynamically calculated in the headers/footers when
118
+ % this is used.
119
+ %
120
+ % Mar 26, 2002
121
+ % version 2.1beta2
122
+ % \fancyhfoffset now also takes h,f as possible letters in the argument to
123
+ % allow the header and footer widths to be different.
124
+ % New commands \fancyheadoffset and \fancyfootoffset added comparable to
125
+ % \fancyhead and \fancyfoot.
126
+ % Errormessages and warnings have been made more informative.
127
+ %
128
+ % Dec 9, 2002
129
+ % version 2.1
130
+ % The defaults for \footrulewidth, \plainheadrulewidth and
131
+ % \plainfootrulewidth are changed from \z@skip to 0pt. In this way when
132
+ % someone inadvertantly uses \setlength to change any of these, the value
133
+ % of \z@skip will not be changed, rather an errormessage will be given.
134
+
135
+ % March 3, 2004
136
+ % Release of version 3.0
137
+
138
+ % Oct 7, 2004
139
+ % version 3.1
140
+ % Added '\endlinechar=13' to \fancy@reset to prevent problems with
141
+ % includegraphics in header when verbatiminput is active.
142
+
143
+ % March 22, 2005
144
+ % version 3.2
145
+ % reset \everypar (the real one) in \fancy@reset because spanish.ldf does
146
+ % strange things with \everypar between << and >>.
147
+
148
+ \def\ifancy@mpty#1{\def\temp@a{#1}\ifx\temp@a\@empty}
149
+
150
+ \def\fancy@def#1#2{\ifancy@mpty{#2}\fancy@gbl\def#1{\leavevmode}\else
151
+ \fancy@gbl\def#1{#2\strut}\fi}
152
+
153
+ \let\fancy@gbl\global
154
+
155
+ \def\@fancyerrmsg#1{%
156
+ \ifx\PackageError\undefined
157
+ \errmessage{#1}\else
158
+ \PackageError{Fancyhdr}{#1}{}\fi}
159
+ \def\@fancywarning#1{%
160
+ \ifx\PackageWarning\undefined
161
+ \errmessage{#1}\else
162
+ \PackageWarning{Fancyhdr}{#1}{}\fi}
163
+
164
+ % Usage: \@forc \var{charstring}{command to be executed for each char}
165
+ % This is similar to LaTeX's \@tfor, but expands the charstring.
166
+
167
+ \def\@forc#1#2#3{\expandafter\f@rc\expandafter#1\expandafter{#2}{#3}}
168
+ \def\f@rc#1#2#3{\def\temp@ty{#2}\ifx\@empty\temp@ty\else
169
+ \f@@rc#1#2\f@@rc{#3}\fi}
170
+ \def\f@@rc#1#2#3\f@@rc#4{\def#1{#2}#4\f@rc#1{#3}{#4}}
171
+
172
+ % Usage: \f@nfor\name:=list\do{body}
173
+ % Like LaTeX's \@for but an empty list is treated as a list with an empty
174
+ % element
175
+
176
+ \newcommand{\f@nfor}[3]{\edef\@fortmp{#2}%
177
+ \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}}
178
+
179
+ % Usage: \def@ult \cs{defaults}{argument}
180
+ % sets \cs to the characters from defaults appearing in argument
181
+ % or defaults if it would be empty. All characters are lowercased.
182
+
183
+ \newcommand\def@ult[3]{%
184
+ \edef\temp@a{\lowercase{\edef\noexpand\temp@a{#3}}}\temp@a
185
+ \def#1{}%
186
+ \@forc\tmpf@ra{#2}%
187
+ {\expandafter\if@in\tmpf@ra\temp@a{\edef#1{#1\tmpf@ra}}{}}%
188
+ \ifx\@empty#1\def#1{#2}\fi}
189
+ %
190
+ % \if@in <char><set><truecase><falsecase>
191
+ %
192
+ \newcommand{\if@in}[4]{%
193
+ \edef\temp@a{#2}\def\temp@b##1#1##2\temp@b{\def\temp@b{##1}}%
194
+ \expandafter\temp@b#2#1\temp@b\ifx\temp@a\temp@b #4\else #3\fi}
195
+
196
+ \newcommand{\fancyhead}{\@ifnextchar[{\f@ncyhf\fancyhead h}%
197
+ {\f@ncyhf\fancyhead h[]}}
198
+ \newcommand{\fancyfoot}{\@ifnextchar[{\f@ncyhf\fancyfoot f}%
199
+ {\f@ncyhf\fancyfoot f[]}}
200
+ \newcommand{\fancyhf}{\@ifnextchar[{\f@ncyhf\fancyhf{}}%
201
+ {\f@ncyhf\fancyhf{}[]}}
202
+
203
+ % New commands for offsets added
204
+
205
+ \newcommand{\fancyheadoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyheadoffset h}%
206
+ {\f@ncyhfoffs\fancyheadoffset h[]}}
207
+ \newcommand{\fancyfootoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyfootoffset f}%
208
+ {\f@ncyhfoffs\fancyfootoffset f[]}}
209
+ \newcommand{\fancyhfoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyhfoffset{}}%
210
+ {\f@ncyhfoffs\fancyhfoffset{}[]}}
211
+
212
+ % The header and footer fields are stored in command sequences with
213
+ % names of the form: \f@ncy<x><y><z> with <x> for [eo], <y> from [lcr]
214
+ % and <z> from [hf].
215
+
216
+ \def\f@ncyhf#1#2[#3]#4{%
217
+ \def\temp@c{}%
218
+ \@forc\tmpf@ra{#3}%
219
+ {\expandafter\if@in\tmpf@ra{eolcrhf,EOLCRHF}%
220
+ {}{\edef\temp@c{\temp@c\tmpf@ra}}}%
221
+ \ifx\@empty\temp@c\else
222
+ \@fancyerrmsg{Illegal char `\temp@c' in \string#1 argument:
223
+ [#3]}%
224
+ \fi
225
+ \f@nfor\temp@c{#3}%
226
+ {\def@ult\f@@@eo{eo}\temp@c
227
+ \if@twoside\else
228
+ \if\f@@@eo e\@fancywarning
229
+ {\string#1's `E' option without twoside option is useless}\fi\fi
230
+ \def@ult\f@@@lcr{lcr}\temp@c
231
+ \def@ult\f@@@hf{hf}{#2\temp@c}%
232
+ \@forc\f@@eo\f@@@eo
233
+ {\@forc\f@@lcr\f@@@lcr
234
+ {\@forc\f@@hf\f@@@hf
235
+ {\expandafter\fancy@def\csname
236
+ f@ncy\f@@eo\f@@lcr\f@@hf\endcsname
237
+ {#4}}}}}}
238
+
239
+ \def\f@ncyhfoffs#1#2[#3]#4{%
240
+ \def\temp@c{}%
241
+ \@forc\tmpf@ra{#3}%
242
+ {\expandafter\if@in\tmpf@ra{eolrhf,EOLRHF}%
243
+ {}{\edef\temp@c{\temp@c\tmpf@ra}}}%
244
+ \ifx\@empty\temp@c\else
245
+ \@fancyerrmsg{Illegal char `\temp@c' in \string#1 argument:
246
+ [#3]}%
247
+ \fi
248
+ \f@nfor\temp@c{#3}%
249
+ {\def@ult\f@@@eo{eo}\temp@c
250
+ \if@twoside\else
251
+ \if\f@@@eo e\@fancywarning
252
+ {\string#1's `E' option without twoside option is useless}\fi\fi
253
+ \def@ult\f@@@lcr{lr}\temp@c
254
+ \def@ult\f@@@hf{hf}{#2\temp@c}%
255
+ \@forc\f@@eo\f@@@eo
256
+ {\@forc\f@@lcr\f@@@lcr
257
+ {\@forc\f@@hf\f@@@hf
258
+ {\expandafter\setlength\csname
259
+ f@ncyO@\f@@eo\f@@lcr\f@@hf\endcsname
260
+ {#4}}}}}%
261
+ \fancy@setoffs}
262
+
263
+ % Fancyheadings version 1 commands. These are more or less deprecated,
264
+ % but they continue to work.
265
+
266
+ \newcommand{\lhead}{\@ifnextchar[{\@xlhead}{\@ylhead}}
267
+ \def\@xlhead[#1]#2{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#2}}
268
+ \def\@ylhead#1{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#1}}
269
+
270
+ \newcommand{\chead}{\@ifnextchar[{\@xchead}{\@ychead}}
271
+ \def\@xchead[#1]#2{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#2}}
272
+ \def\@ychead#1{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#1}}
273
+
274
+ \newcommand{\rhead}{\@ifnextchar[{\@xrhead}{\@yrhead}}
275
+ \def\@xrhead[#1]#2{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#2}}
276
+ \def\@yrhead#1{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#1}}
277
+
278
+ \newcommand{\lfoot}{\@ifnextchar[{\@xlfoot}{\@ylfoot}}
279
+ \def\@xlfoot[#1]#2{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#2}}
280
+ \def\@ylfoot#1{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#1}}
281
+
282
+ \newcommand{\cfoot}{\@ifnextchar[{\@xcfoot}{\@ycfoot}}
283
+ \def\@xcfoot[#1]#2{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#2}}
284
+ \def\@ycfoot#1{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#1}}
285
+
286
+ \newcommand{\rfoot}{\@ifnextchar[{\@xrfoot}{\@yrfoot}}
287
+ \def\@xrfoot[#1]#2{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#2}}
288
+ \def\@yrfoot#1{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#1}}
289
+
290
+ \newlength{\fancy@headwidth}
291
+ \let\headwidth\fancy@headwidth
292
+ \newlength{\f@ncyO@elh}
293
+ \newlength{\f@ncyO@erh}
294
+ \newlength{\f@ncyO@olh}
295
+ \newlength{\f@ncyO@orh}
296
+ \newlength{\f@ncyO@elf}
297
+ \newlength{\f@ncyO@erf}
298
+ \newlength{\f@ncyO@olf}
299
+ \newlength{\f@ncyO@orf}
300
+ \newcommand{\headrulewidth}{0.4pt}
301
+ \newcommand{\footrulewidth}{0pt}
302
+ \newcommand{\footruleskip}{.3\normalbaselineskip}
303
+
304
+ % Fancyplain stuff shouldn't be used anymore (rather
305
+ % \fancypagestyle{plain} should be used), but it must be present for
306
+ % compatibility reasons.
307
+
308
+ \newcommand{\plainheadrulewidth}{0pt}
309
+ \newcommand{\plainfootrulewidth}{0pt}
310
+ \newif\if@fancyplain \@fancyplainfalse
311
+ \def\fancyplain#1#2{\if@fancyplain#1\else#2\fi}
312
+
313
+ \headwidth=-123456789sp %magic constant
314
+
315
+ % Command to reset various things in the headers:
316
+ % a.o. single spacing (taken from setspace.sty)
317
+ % and the catcode of ^^M (so that epsf files in the header work if a
318
+ % verbatim crosses a page boundary)
319
+ % It also defines a \nouppercase command that disables \uppercase and
320
+ % \Makeuppercase. It can only be used in the headers and footers.
321
+ \let\fnch@everypar\everypar% save real \everypar because of spanish.ldf
322
+ \def\fancy@reset{\fnch@everypar{}\restorecr\endlinechar=13
323
+ \def\baselinestretch{1}%
324
+ \def\nouppercase##1{{\let\uppercase\relax\let\MakeUppercase\relax
325
+ \expandafter\let\csname MakeUppercase \endcsname\relax##1}}%
326
+ \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e
327
+ \ifx\@normalsize\undefined \normalsize % for ucthesis.cls
328
+ \else \@normalsize \fi
329
+ \else% NFSS (2.09) present
330
+ \@newbaseline%
331
+ \fi}
332
+
333
+ % Initialization of the head and foot text.
334
+
335
+ % The default values still contain \fancyplain for compatibility.
336
+ \fancyhf{} % clear all
337
+ % lefthead empty on ``plain'' pages, \rightmark on even, \leftmark on odd pages
338
+ % evenhead empty on ``plain'' pages, \leftmark on even, \rightmark on odd pages
339
+ \if@twoside
340
+ \fancyhead[el,or]{\fancyplain{}{\sl\rightmark}}
341
+ \fancyhead[er,ol]{\fancyplain{}{\sl\leftmark}}
342
+ \else
343
+ \fancyhead[l]{\fancyplain{}{\sl\rightmark}}
344
+ \fancyhead[r]{\fancyplain{}{\sl\leftmark}}
345
+ \fi
346
+ \fancyfoot[c]{\rm\thepage} % page number
347
+
348
+ % Use box 0 as a temp box and dimen 0 as temp dimen.
349
+ % This can be done, because this code will always
350
+ % be used inside another box, and therefore the changes are local.
351
+
352
+ \def\@fancyvbox#1#2{\setbox0\vbox{#2}\ifdim\ht0>#1\@fancywarning
353
+ {\string#1 is too small (\the#1): ^^J Make it at least \the\ht0.^^J
354
+ We now make it that large for the rest of the document.^^J
355
+ This may cause the page layout to be inconsistent, however\@gobble}%
356
+ \dimen0=#1\global\setlength{#1}{\ht0}\ht0=\dimen0\fi
357
+ \box0}
358
+
359
+ % Put together a header or footer given the left, center and
360
+ % right text, fillers at left and right and a rule.
361
+ % The \lap commands put the text into an hbox of zero size,
362
+ % so overlapping text does not generate an errormessage.
363
+ % These macros have 5 parameters:
364
+ % 1. LEFTSIDE BEARING % This determines at which side the header will stick
365
+ % out. When \fancyhfoffset is used this calculates \headwidth, otherwise
366
+ % it is \hss or \relax (after expansion).
367
+ % 2. \f@ncyolh, \f@ncyelh, \f@ncyolf or \f@ncyelf. This is the left component.
368
+ % 3. \f@ncyoch, \f@ncyech, \f@ncyocf or \f@ncyecf. This is the middle comp.
369
+ % 4. \f@ncyorh, \f@ncyerh, \f@ncyorf or \f@ncyerf. This is the right component.
370
+ % 5. RIGHTSIDE BEARING. This is always \relax or \hss (after expansion).
371
+
372
+ \def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset
373
+ \@fancyvbox\headheight{\hbox
374
+ {\rlap{\parbox[b]{\headwidth}{\raggedright#2}}\hfill
375
+ \parbox[b]{\headwidth}{\centering#3}\hfill
376
+ \llap{\parbox[b]{\headwidth}{\raggedleft#4}}}\headrule}}#5}
377
+
378
+ \def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset
379
+ \@fancyvbox\footskip{\footrule
380
+ \hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2}}\hfill
381
+ \parbox[t]{\headwidth}{\centering#3}\hfill
382
+ \llap{\parbox[t]{\headwidth}{\raggedleft#4}}}}}#5}
383
+
384
+ \def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi
385
+ \hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}}
386
+
387
+ \def\footrule{{\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi
388
+ \vskip-\footruleskip\vskip-\footrulewidth
389
+ \hrule\@width\headwidth\@height\footrulewidth\vskip\footruleskip}}
390
+
391
+ \def\ps@fancy{%
392
+ \@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%for amsbook
393
+ %
394
+ % Define \MakeUppercase for old LaTeXen.
395
+ % Note: we used \def rather than \let, so that \let\uppercase\relax (from
396
+ % the version 1 documentation) will still work.
397
+ %
398
+ \@ifundefined{MakeUppercase}{\def\MakeUppercase{\uppercase}}{}%
399
+ \@ifundefined{chapter}{\def\sectionmark##1{\markboth
400
+ {\MakeUppercase{\ifnum \c@secnumdepth>\z@
401
+ \thesection\hskip 1em\relax \fi ##1}}{}}%
402
+ \def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne
403
+ \thesubsection\hskip 1em\relax \fi ##1}}}%
404
+ {\def\chaptermark##1{\markboth {\MakeUppercase{\ifnum \c@secnumdepth>\m@ne
405
+ \@chapapp\ \thechapter. \ \fi ##1}}{}}%
406
+ \def\sectionmark##1{\markright{\MakeUppercase{\ifnum \c@secnumdepth >\z@
407
+ \thesection. \ \fi ##1}}}}%
408
+ %\csname ps@headings\endcsname % use \ps@headings defaults if they exist
409
+ \ps@@fancy
410
+ \gdef\ps@fancy{\@fancyplainfalse\ps@@fancy}%
411
+ % Initialize \headwidth if the user didn't
412
+ %
413
+ \ifdim\headwidth<0sp
414
+ %
415
+ % This catches the case that \headwidth hasn't been initialized and the
416
+ % case that the user added something to \headwidth in the expectation that
417
+ % it was initialized to \textwidth. We compensate this now. This loses if
418
+ % the user intended to multiply it by a factor. But that case is more
419
+ % likely done by saying something like \headwidth=1.2\textwidth.
420
+ % The doc says you have to change \headwidth after the first call to
421
+ % \pagestyle{fancy}. This code is just to catch the most common cases were
422
+ % that requirement is violated.
423
+ %
424
+ \global\advance\headwidth123456789sp\global\advance\headwidth\textwidth
425
+ \fi}
426
+ \def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy}
427
+ \def\ps@plain@fancy{\@fancyplaintrue\ps@@fancy}
428
+ \let\ps@@empty\ps@empty
429
+ \def\ps@@fancy{%
430
+ \ps@@empty % This is for amsbook/amsart, which do strange things with \topskip
431
+ \def\@mkboth{\protect\markboth}%
432
+ \def\@oddhead{\@fancyhead\fancy@Oolh\f@ncyolh\f@ncyoch\f@ncyorh\fancy@Oorh}%
433
+ \def\@oddfoot{\@fancyfoot\fancy@Oolf\f@ncyolf\f@ncyocf\f@ncyorf\fancy@Oorf}%
434
+ \def\@evenhead{\@fancyhead\fancy@Oelh\f@ncyelh\f@ncyech\f@ncyerh\fancy@Oerh}%
435
+ \def\@evenfoot{\@fancyfoot\fancy@Oelf\f@ncyelf\f@ncyecf\f@ncyerf\fancy@Oerf}%
436
+ }
437
+ % Default definitions for compatibility mode:
438
+ % These cause the header/footer to take the defined \headwidth as width
439
+ % And to shift in the direction of the marginpar area
440
+
441
+ \def\fancy@Oolh{\if@reversemargin\hss\else\relax\fi}
442
+ \def\fancy@Oorh{\if@reversemargin\relax\else\hss\fi}
443
+ \let\fancy@Oelh\fancy@Oorh
444
+ \let\fancy@Oerh\fancy@Oolh
445
+
446
+ \let\fancy@Oolf\fancy@Oolh
447
+ \let\fancy@Oorf\fancy@Oorh
448
+ \let\fancy@Oelf\fancy@Oelh
449
+ \let\fancy@Oerf\fancy@Oerh
450
+
451
+ % New definitions for the use of \fancyhfoffset
452
+ % These calculate the \headwidth from \textwidth and the specified offsets.
453
+
454
+ \def\fancy@offsolh{\headwidth=\textwidth\advance\headwidth\f@ncyO@olh
455
+ \advance\headwidth\f@ncyO@orh\hskip-\f@ncyO@olh}
456
+ \def\fancy@offselh{\headwidth=\textwidth\advance\headwidth\f@ncyO@elh
457
+ \advance\headwidth\f@ncyO@erh\hskip-\f@ncyO@elh}
458
+
459
+ \def\fancy@offsolf{\headwidth=\textwidth\advance\headwidth\f@ncyO@olf
460
+ \advance\headwidth\f@ncyO@orf\hskip-\f@ncyO@olf}
461
+ \def\fancy@offself{\headwidth=\textwidth\advance\headwidth\f@ncyO@elf
462
+ \advance\headwidth\f@ncyO@erf\hskip-\f@ncyO@elf}
463
+
464
+ \def\fancy@setoffs{%
465
+ % Just in case \let\headwidth\textwidth was used
466
+ \fancy@gbl\let\headwidth\fancy@headwidth
467
+ \fancy@gbl\let\fancy@Oolh\fancy@offsolh
468
+ \fancy@gbl\let\fancy@Oelh\fancy@offselh
469
+ \fancy@gbl\let\fancy@Oorh\hss
470
+ \fancy@gbl\let\fancy@Oerh\hss
471
+ \fancy@gbl\let\fancy@Oolf\fancy@offsolf
472
+ \fancy@gbl\let\fancy@Oelf\fancy@offself
473
+ \fancy@gbl\let\fancy@Oorf\hss
474
+ \fancy@gbl\let\fancy@Oerf\hss}
475
+
476
+ \newif\iffootnote
477
+ \let\latex@makecol\@makecol
478
+ \def\@makecol{\ifvoid\footins\footnotetrue\else\footnotefalse\fi
479
+ \let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol}
480
+ \def\iftopfloat#1#2{\ifx\topfloat\empty #2\else #1\fi}
481
+ \def\ifbotfloat#1#2{\ifx\botfloat\empty #2\else #1\fi}
482
+ \def\iffloatpage#1#2{\if@fcolmade #1\else #2\fi}
483
+
484
+ \newcommand{\fancypagestyle}[2]{%
485
+ \@namedef{ps@#1}{\let\fancy@gbl\relax#2\relax\ps@fancy}}
latex_templates/ICLR2022/fig.png ADDED
latex_templates/ICLR2022/iclr2022_conference.bst ADDED
@@ -0,0 +1,1440 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ %% File: `iclr2017.bst'
2
+ %% A copy of iclm2010.bst, which is a modification of `plainnl.bst' for use with natbib package
3
+ %%
4
+ %% Copyright 2010 Hal Daum\'e III
5
+ %% Modified by J. F�rnkranz
6
+ %% - Changed labels from (X and Y, 2000) to (X & Y, 2000)
7
+ %%
8
+ %% Copyright 1993-2007 Patrick W Daly
9
+ %% Max-Planck-Institut f\"ur Sonnensystemforschung
10
+ %% Max-Planck-Str. 2
11
+ %% D-37191 Katlenburg-Lindau
12
+ %% Germany
13
+ %% E-mail: daly@mps.mpg.de
14
+ %%
15
+ %% This program can be redistributed and/or modified under the terms
16
+ %% of the LaTeX Project Public License Distributed from CTAN
17
+ %% archives in directory macros/latex/base/lppl.txt; either
18
+ %% version 1 of the License, or any later version.
19
+ %%
20
+ % Version and source file information:
21
+ % \ProvidesFile{icml2010.mbs}[2007/11/26 1.93 (PWD)]
22
+ %
23
+ % BibTeX `plainnat' family
24
+ % version 0.99b for BibTeX versions 0.99a or later,
25
+ % for LaTeX versions 2.09 and 2e.
26
+ %
27
+ % For use with the `natbib.sty' package; emulates the corresponding
28
+ % member of the `plain' family, but with author-year citations.
29
+ %
30
+ % With version 6.0 of `natbib.sty', it may also be used for numerical
31
+ % citations, while retaining the commands \citeauthor, \citefullauthor,
32
+ % and \citeyear to print the corresponding information.
33
+ %
34
+ % For version 7.0 of `natbib.sty', the KEY field replaces missing
35
+ % authors/editors, and the date is left blank in \bibitem.
36
+ %
37
+ % Includes field EID for the sequence/citation number of electronic journals
38
+ % which is used instead of page numbers.
39
+ %
40
+ % Includes fields ISBN and ISSN.
41
+ %
42
+ % Includes field URL for Internet addresses.
43
+ %
44
+ % Includes field DOI for Digital Object Idenfifiers.
45
+ %
46
+ % Works best with the url.sty package of Donald Arseneau.
47
+ %
48
+ % Works with identical authors and year are further sorted by
49
+ % citation key, to preserve any natural sequence.
50
+ %
51
+ ENTRY
52
+ { address
53
+ author
54
+ booktitle
55
+ chapter
56
+ doi
57
+ eid
58
+ edition
59
+ editor
60
+ howpublished
61
+ institution
62
+ isbn
63
+ issn
64
+ journal
65
+ key
66
+ month
67
+ note
68
+ number
69
+ organization
70
+ pages
71
+ publisher
72
+ school
73
+ series
74
+ title
75
+ type
76
+ url
77
+ volume
78
+ year
79
+ }
80
+ {}
81
+ { label extra.label sort.label short.list }
82
+
83
+ INTEGERS { output.state before.all mid.sentence after.sentence after.block }
84
+
85
+ FUNCTION {init.state.consts}
86
+ { #0 'before.all :=
87
+ #1 'mid.sentence :=
88
+ #2 'after.sentence :=
89
+ #3 'after.block :=
90
+ }
91
+
92
+ STRINGS { s t }
93
+
94
+ FUNCTION {output.nonnull}
95
+ { 's :=
96
+ output.state mid.sentence =
97
+ { ", " * write$ }
98
+ { output.state after.block =
99
+ { add.period$ write$
100
+ newline$
101
+ "\newblock " write$
102
+ }
103
+ { output.state before.all =
104
+ 'write$
105
+ { add.period$ " " * write$ }
106
+ if$
107
+ }
108
+ if$
109
+ mid.sentence 'output.state :=
110
+ }
111
+ if$
112
+ s
113
+ }
114
+
115
+ FUNCTION {output}
116
+ { duplicate$ empty$
117
+ 'pop$
118
+ 'output.nonnull
119
+ if$
120
+ }
121
+
122
+ FUNCTION {output.check}
123
+ { 't :=
124
+ duplicate$ empty$
125
+ { pop$ "empty " t * " in " * cite$ * warning$ }
126
+ 'output.nonnull
127
+ if$
128
+ }
129
+
130
+ FUNCTION {fin.entry}
131
+ { add.period$
132
+ write$
133
+ newline$
134
+ }
135
+
136
+ FUNCTION {new.block}
137
+ { output.state before.all =
138
+ 'skip$
139
+ { after.block 'output.state := }
140
+ if$
141
+ }
142
+
143
+ FUNCTION {new.sentence}
144
+ { output.state after.block =
145
+ 'skip$
146
+ { output.state before.all =
147
+ 'skip$
148
+ { after.sentence 'output.state := }
149
+ if$
150
+ }
151
+ if$
152
+ }
153
+
154
+ FUNCTION {not}
155
+ { { #0 }
156
+ { #1 }
157
+ if$
158
+ }
159
+
160
+ FUNCTION {and}
161
+ { 'skip$
162
+ { pop$ #0 }
163
+ if$
164
+ }
165
+
166
+ FUNCTION {or}
167
+ { { pop$ #1 }
168
+ 'skip$
169
+ if$
170
+ }
171
+
172
+ FUNCTION {new.block.checka}
173
+ { empty$
174
+ 'skip$
175
+ 'new.block
176
+ if$
177
+ }
178
+
179
+ FUNCTION {new.block.checkb}
180
+ { empty$
181
+ swap$ empty$
182
+ and
183
+ 'skip$
184
+ 'new.block
185
+ if$
186
+ }
187
+
188
+ FUNCTION {new.sentence.checka}
189
+ { empty$
190
+ 'skip$
191
+ 'new.sentence
192
+ if$
193
+ }
194
+
195
+ FUNCTION {new.sentence.checkb}
196
+ { empty$
197
+ swap$ empty$
198
+ and
199
+ 'skip$
200
+ 'new.sentence
201
+ if$
202
+ }
203
+
204
+ FUNCTION {field.or.null}
205
+ { duplicate$ empty$
206
+ { pop$ "" }
207
+ 'skip$
208
+ if$
209
+ }
210
+
211
+ FUNCTION {emphasize}
212
+ { duplicate$ empty$
213
+ { pop$ "" }
214
+ { "\emph{" swap$ * "}" * }
215
+ if$
216
+ }
217
+
218
+ INTEGERS { nameptr namesleft numnames }
219
+
220
+ FUNCTION {format.names}
221
+ { 's :=
222
+ #1 'nameptr :=
223
+ s num.names$ 'numnames :=
224
+ numnames 'namesleft :=
225
+ { namesleft #0 > }
226
+ { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
227
+ nameptr #1 >
228
+ { namesleft #1 >
229
+ { ", " * t * }
230
+ { numnames #2 >
231
+ { "," * }
232
+ 'skip$
233
+ if$
234
+ t "others" =
235
+ { " et~al." * }
236
+ { " and " * t * }
237
+ if$
238
+ }
239
+ if$
240
+ }
241
+ 't
242
+ if$
243
+ nameptr #1 + 'nameptr :=
244
+ namesleft #1 - 'namesleft :=
245
+ }
246
+ while$
247
+ }
248
+
249
+ FUNCTION {format.key}
250
+ { empty$
251
+ { key field.or.null }
252
+ { "" }
253
+ if$
254
+ }
255
+
256
+ FUNCTION {format.authors}
257
+ { author empty$
258
+ { "" }
259
+ { author format.names }
260
+ if$
261
+ }
262
+
263
+ FUNCTION {format.editors}
264
+ { editor empty$
265
+ { "" }
266
+ { editor format.names
267
+ editor num.names$ #1 >
268
+ { " (eds.)" * }
269
+ { " (ed.)" * }
270
+ if$
271
+ }
272
+ if$
273
+ }
274
+
275
+ FUNCTION {format.isbn}
276
+ { isbn empty$
277
+ { "" }
278
+ { new.block "ISBN " isbn * }
279
+ if$
280
+ }
281
+
282
+ FUNCTION {format.issn}
283
+ { issn empty$
284
+ { "" }
285
+ { new.block "ISSN " issn * }
286
+ if$
287
+ }
288
+
289
+ FUNCTION {format.url}
290
+ { url empty$
291
+ { "" }
292
+ { new.block "URL \url{" url * "}" * }
293
+ if$
294
+ }
295
+
296
+ FUNCTION {format.doi}
297
+ { doi empty$
298
+ { "" }
299
+ { new.block "\doi{" doi * "}" * }
300
+ if$
301
+ }
302
+
303
+ FUNCTION {format.title}
304
+ { title empty$
305
+ { "" }
306
+ { title "t" change.case$ }
307
+ if$
308
+ }
309
+
310
+ FUNCTION {format.full.names}
311
+ {'s :=
312
+ #1 'nameptr :=
313
+ s num.names$ 'numnames :=
314
+ numnames 'namesleft :=
315
+ { namesleft #0 > }
316
+ { s nameptr
317
+ "{vv~}{ll}" format.name$ 't :=
318
+ nameptr #1 >
319
+ {
320
+ namesleft #1 >
321
+ { ", " * t * }
322
+ {
323
+ numnames #2 >
324
+ { "," * }
325
+ 'skip$
326
+ if$
327
+ t "others" =
328
+ { " et~al." * }
329
+ { " and " * t * }
330
+ if$
331
+ }
332
+ if$
333
+ }
334
+ 't
335
+ if$
336
+ nameptr #1 + 'nameptr :=
337
+ namesleft #1 - 'namesleft :=
338
+ }
339
+ while$
340
+ }
341
+
342
+ FUNCTION {author.editor.full}
343
+ { author empty$
344
+ { editor empty$
345
+ { "" }
346
+ { editor format.full.names }
347
+ if$
348
+ }
349
+ { author format.full.names }
350
+ if$
351
+ }
352
+
353
+ FUNCTION {author.full}
354
+ { author empty$
355
+ { "" }
356
+ { author format.full.names }
357
+ if$
358
+ }
359
+
360
+ FUNCTION {editor.full}
361
+ { editor empty$
362
+ { "" }
363
+ { editor format.full.names }
364
+ if$
365
+ }
366
+
367
+ FUNCTION {make.full.names}
368
+ { type$ "book" =
369
+ type$ "inbook" =
370
+ or
371
+ 'author.editor.full
372
+ { type$ "proceedings" =
373
+ 'editor.full
374
+ 'author.full
375
+ if$
376
+ }
377
+ if$
378
+ }
379
+
380
+ FUNCTION {output.bibitem}
381
+ { newline$
382
+ "\bibitem[" write$
383
+ label write$
384
+ ")" make.full.names duplicate$ short.list =
385
+ { pop$ }
386
+ { * }
387
+ if$
388
+ "]{" * write$
389
+ cite$ write$
390
+ "}" write$
391
+ newline$
392
+ ""
393
+ before.all 'output.state :=
394
+ }
395
+
396
+ FUNCTION {n.dashify}
397
+ { 't :=
398
+ ""
399
+ { t empty$ not }
400
+ { t #1 #1 substring$ "-" =
401
+ { t #1 #2 substring$ "--" = not
402
+ { "--" *
403
+ t #2 global.max$ substring$ 't :=
404
+ }
405
+ { { t #1 #1 substring$ "-" = }
406
+ { "-" *
407
+ t #2 global.max$ substring$ 't :=
408
+ }
409
+ while$
410
+ }
411
+ if$
412
+ }
413
+ { t #1 #1 substring$ *
414
+ t #2 global.max$ substring$ 't :=
415
+ }
416
+ if$
417
+ }
418
+ while$
419
+ }
420
+
421
+ FUNCTION {format.date}
422
+ { year duplicate$ empty$
423
+ { "empty year in " cite$ * warning$
424
+ pop$ "" }
425
+ 'skip$
426
+ if$
427
+ month empty$
428
+ 'skip$
429
+ { month
430
+ " " * swap$ *
431
+ }
432
+ if$
433
+ extra.label *
434
+ }
435
+
436
+ FUNCTION {format.btitle}
437
+ { title emphasize
438
+ }
439
+
440
+ FUNCTION {tie.or.space.connect}
441
+ { duplicate$ text.length$ #3 <
442
+ { "~" }
443
+ { " " }
444
+ if$
445
+ swap$ * *
446
+ }
447
+
448
+ FUNCTION {either.or.check}
449
+ { empty$
450
+ 'pop$
451
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
452
+ if$
453
+ }
454
+
455
+ FUNCTION {format.bvolume}
456
+ { volume empty$
457
+ { "" }
458
+ { "volume" volume tie.or.space.connect
459
+ series empty$
460
+ 'skip$
461
+ { " of " * series emphasize * }
462
+ if$
463
+ "volume and number" number either.or.check
464
+ }
465
+ if$
466
+ }
467
+
468
+ FUNCTION {format.number.series}
469
+ { volume empty$
470
+ { number empty$
471
+ { series field.or.null }
472
+ { output.state mid.sentence =
473
+ { "number" }
474
+ { "Number" }
475
+ if$
476
+ number tie.or.space.connect
477
+ series empty$
478
+ { "there's a number but no series in " cite$ * warning$ }
479
+ { " in " * series * }
480
+ if$
481
+ }
482
+ if$
483
+ }
484
+ { "" }
485
+ if$
486
+ }
487
+
488
+ FUNCTION {format.edition}
489
+ { edition empty$
490
+ { "" }
491
+ { output.state mid.sentence =
492
+ { edition "l" change.case$ " edition" * }
493
+ { edition "t" change.case$ " edition" * }
494
+ if$
495
+ }
496
+ if$
497
+ }
498
+
499
+ INTEGERS { multiresult }
500
+
501
+ FUNCTION {multi.page.check}
502
+ { 't :=
503
+ #0 'multiresult :=
504
+ { multiresult not
505
+ t empty$ not
506
+ and
507
+ }
508
+ { t #1 #1 substring$
509
+ duplicate$ "-" =
510
+ swap$ duplicate$ "," =
511
+ swap$ "+" =
512
+ or or
513
+ { #1 'multiresult := }
514
+ { t #2 global.max$ substring$ 't := }
515
+ if$
516
+ }
517
+ while$
518
+ multiresult
519
+ }
520
+
521
+ FUNCTION {format.pages}
522
+ { pages empty$
523
+ { "" }
524
+ { pages multi.page.check
525
+ { "pp.\ " pages n.dashify tie.or.space.connect }
526
+ { "pp.\ " pages tie.or.space.connect }
527
+ if$
528
+ }
529
+ if$
530
+ }
531
+
532
+ FUNCTION {format.eid}
533
+ { eid empty$
534
+ { "" }
535
+ { "art." eid tie.or.space.connect }
536
+ if$
537
+ }
538
+
539
+ FUNCTION {format.vol.num.pages}
540
+ { volume field.or.null
541
+ number empty$
542
+ 'skip$
543
+ { "\penalty0 (" number * ")" * *
544
+ volume empty$
545
+ { "there's a number but no volume in " cite$ * warning$ }
546
+ 'skip$
547
+ if$
548
+ }
549
+ if$
550
+ pages empty$
551
+ 'skip$
552
+ { duplicate$ empty$
553
+ { pop$ format.pages }
554
+ { ":\penalty0 " * pages n.dashify * }
555
+ if$
556
+ }
557
+ if$
558
+ }
559
+
560
+ FUNCTION {format.vol.num.eid}
561
+ { volume field.or.null
562
+ number empty$
563
+ 'skip$
564
+ { "\penalty0 (" number * ")" * *
565
+ volume empty$
566
+ { "there's a number but no volume in " cite$ * warning$ }
567
+ 'skip$
568
+ if$
569
+ }
570
+ if$
571
+ eid empty$
572
+ 'skip$
573
+ { duplicate$ empty$
574
+ { pop$ format.eid }
575
+ { ":\penalty0 " * eid * }
576
+ if$
577
+ }
578
+ if$
579
+ }
580
+
581
+ FUNCTION {format.chapter.pages}
582
+ { chapter empty$
583
+ 'format.pages
584
+ { type empty$
585
+ { "chapter" }
586
+ { type "l" change.case$ }
587
+ if$
588
+ chapter tie.or.space.connect
589
+ pages empty$
590
+ 'skip$
591
+ { ", " * format.pages * }
592
+ if$
593
+ }
594
+ if$
595
+ }
596
+
597
+ FUNCTION {format.in.ed.booktitle}
598
+ { booktitle empty$
599
+ { "" }
600
+ { editor empty$
601
+ { "In " booktitle emphasize * }
602
+ { "In " format.editors * ", " * booktitle emphasize * }
603
+ if$
604
+ }
605
+ if$
606
+ }
607
+
608
+ FUNCTION {empty.misc.check}
609
+ { author empty$ title empty$ howpublished empty$
610
+ month empty$ year empty$ note empty$
611
+ and and and and and
612
+ key empty$ not and
613
+ { "all relevant fields are empty in " cite$ * warning$ }
614
+ 'skip$
615
+ if$
616
+ }
617
+
618
+ FUNCTION {format.thesis.type}
619
+ { type empty$
620
+ 'skip$
621
+ { pop$
622
+ type "t" change.case$
623
+ }
624
+ if$
625
+ }
626
+
627
+ FUNCTION {format.tr.number}
628
+ { type empty$
629
+ { "Technical Report" }
630
+ 'type
631
+ if$
632
+ number empty$
633
+ { "t" change.case$ }
634
+ { number tie.or.space.connect }
635
+ if$
636
+ }
637
+
638
+ FUNCTION {format.article.crossref}
639
+ { key empty$
640
+ { journal empty$
641
+ { "need key or journal for " cite$ * " to crossref " * crossref *
642
+ warning$
643
+ ""
644
+ }
645
+ { "In \emph{" journal * "}" * }
646
+ if$
647
+ }
648
+ { "In " }
649
+ if$
650
+ " \citet{" * crossref * "}" *
651
+ }
652
+
653
+ FUNCTION {format.book.crossref}
654
+ { volume empty$
655
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
656
+ "In "
657
+ }
658
+ { "Volume" volume tie.or.space.connect
659
+ " of " *
660
+ }
661
+ if$
662
+ editor empty$
663
+ editor field.or.null author field.or.null =
664
+ or
665
+ { key empty$
666
+ { series empty$
667
+ { "need editor, key, or series for " cite$ * " to crossref " *
668
+ crossref * warning$
669
+ "" *
670
+ }
671
+ { "\emph{" * series * "}" * }
672
+ if$
673
+ }
674
+ 'skip$
675
+ if$
676
+ }
677
+ 'skip$
678
+ if$
679
+ " \citet{" * crossref * "}" *
680
+ }
681
+
682
+ FUNCTION {format.incoll.inproc.crossref}
683
+ { editor empty$
684
+ editor field.or.null author field.or.null =
685
+ or
686
+ { key empty$
687
+ { booktitle empty$
688
+ { "need editor, key, or booktitle for " cite$ * " to crossref " *
689
+ crossref * warning$
690
+ ""
691
+ }
692
+ { "In \emph{" booktitle * "}" * }
693
+ if$
694
+ }
695
+ { "In " }
696
+ if$
697
+ }
698
+ { "In " }
699
+ if$
700
+ " \citet{" * crossref * "}" *
701
+ }
702
+
703
+ FUNCTION {article}
704
+ { output.bibitem
705
+ format.authors "author" output.check
706
+ author format.key output
707
+ new.block
708
+ format.title "title" output.check
709
+ new.block
710
+ crossref missing$
711
+ { journal emphasize "journal" output.check
712
+ eid empty$
713
+ { format.vol.num.pages output }
714
+ { format.vol.num.eid output }
715
+ if$
716
+ format.date "year" output.check
717
+ }
718
+ { format.article.crossref output.nonnull
719
+ eid empty$
720
+ { format.pages output }
721
+ { format.eid output }
722
+ if$
723
+ }
724
+ if$
725
+ format.issn output
726
+ format.doi output
727
+ format.url output
728
+ new.block
729
+ note output
730
+ fin.entry
731
+ }
732
+
733
+ FUNCTION {book}
734
+ { output.bibitem
735
+ author empty$
736
+ { format.editors "author and editor" output.check
737
+ editor format.key output
738
+ }
739
+ { format.authors output.nonnull
740
+ crossref missing$
741
+ { "author and editor" editor either.or.check }
742
+ 'skip$
743
+ if$
744
+ }
745
+ if$
746
+ new.block
747
+ format.btitle "title" output.check
748
+ crossref missing$
749
+ { format.bvolume output
750
+ new.block
751
+ format.number.series output
752
+ new.sentence
753
+ publisher "publisher" output.check
754
+ address output
755
+ }
756
+ { new.block
757
+ format.book.crossref output.nonnull
758
+ }
759
+ if$
760
+ format.edition output
761
+ format.date "year" output.check
762
+ format.isbn output
763
+ format.doi output
764
+ format.url output
765
+ new.block
766
+ note output
767
+ fin.entry
768
+ }
769
+
770
+ FUNCTION {booklet}
771
+ { output.bibitem
772
+ format.authors output
773
+ author format.key output
774
+ new.block
775
+ format.title "title" output.check
776
+ howpublished address new.block.checkb
777
+ howpublished output
778
+ address output
779
+ format.date output
780
+ format.isbn output
781
+ format.doi output
782
+ format.url output
783
+ new.block
784
+ note output
785
+ fin.entry
786
+ }
787
+
788
+ FUNCTION {inbook}
789
+ { output.bibitem
790
+ author empty$
791
+ { format.editors "author and editor" output.check
792
+ editor format.key output
793
+ }
794
+ { format.authors output.nonnull
795
+ crossref missing$
796
+ { "author and editor" editor either.or.check }
797
+ 'skip$
798
+ if$
799
+ }
800
+ if$
801
+ new.block
802
+ format.btitle "title" output.check
803
+ crossref missing$
804
+ { format.bvolume output
805
+ format.chapter.pages "chapter and pages" output.check
806
+ new.block
807
+ format.number.series output
808
+ new.sentence
809
+ publisher "publisher" output.check
810
+ address output
811
+ }
812
+ { format.chapter.pages "chapter and pages" output.check
813
+ new.block
814
+ format.book.crossref output.nonnull
815
+ }
816
+ if$
817
+ format.edition output
818
+ format.date "year" output.check
819
+ format.isbn output
820
+ format.doi output
821
+ format.url output
822
+ new.block
823
+ note output
824
+ fin.entry
825
+ }
826
+
827
+ FUNCTION {incollection}
828
+ { output.bibitem
829
+ format.authors "author" output.check
830
+ author format.key output
831
+ new.block
832
+ format.title "title" output.check
833
+ new.block
834
+ crossref missing$
835
+ { format.in.ed.booktitle "booktitle" output.check
836
+ format.bvolume output
837
+ format.number.series output
838
+ format.chapter.pages output
839
+ new.sentence
840
+ publisher "publisher" output.check
841
+ address output
842
+ format.edition output
843
+ format.date "year" output.check
844
+ }
845
+ { format.incoll.inproc.crossref output.nonnull
846
+ format.chapter.pages output
847
+ }
848
+ if$
849
+ format.isbn output
850
+ format.doi output
851
+ format.url output
852
+ new.block
853
+ note output
854
+ fin.entry
855
+ }
856
+
857
+ FUNCTION {inproceedings}
858
+ { output.bibitem
859
+ format.authors "author" output.check
860
+ author format.key output
861
+ new.block
862
+ format.title "title" output.check
863
+ new.block
864
+ crossref missing$
865
+ { format.in.ed.booktitle "booktitle" output.check
866
+ format.bvolume output
867
+ format.number.series output
868
+ format.pages output
869
+ address empty$
870
+ { organization publisher new.sentence.checkb
871
+ organization output
872
+ publisher output
873
+ format.date "year" output.check
874
+ }
875
+ { address output.nonnull
876
+ format.date "year" output.check
877
+ new.sentence
878
+ organization output
879
+ publisher output
880
+ }
881
+ if$
882
+ }
883
+ { format.incoll.inproc.crossref output.nonnull
884
+ format.pages output
885
+ }
886
+ if$
887
+ format.isbn output
888
+ format.doi output
889
+ format.url output
890
+ new.block
891
+ note output
892
+ fin.entry
893
+ }
894
+
895
+ FUNCTION {conference} { inproceedings }
896
+
897
+ FUNCTION {manual}
898
+ { output.bibitem
899
+ format.authors output
900
+ author format.key output
901
+ new.block
902
+ format.btitle "title" output.check
903
+ organization address new.block.checkb
904
+ organization output
905
+ address output
906
+ format.edition output
907
+ format.date output
908
+ format.url output
909
+ new.block
910
+ note output
911
+ fin.entry
912
+ }
913
+
914
+ FUNCTION {mastersthesis}
915
+ { output.bibitem
916
+ format.authors "author" output.check
917
+ author format.key output
918
+ new.block
919
+ format.title "title" output.check
920
+ new.block
921
+ "Master's thesis" format.thesis.type output.nonnull
922
+ school "school" output.check
923
+ address output
924
+ format.date "year" output.check
925
+ format.url output
926
+ new.block
927
+ note output
928
+ fin.entry
929
+ }
930
+
931
+ FUNCTION {misc}
932
+ { output.bibitem
933
+ format.authors output
934
+ author format.key output
935
+ title howpublished new.block.checkb
936
+ format.title output
937
+ howpublished new.block.checka
938
+ howpublished output
939
+ format.date output
940
+ format.issn output
941
+ format.url output
942
+ new.block
943
+ note output
944
+ fin.entry
945
+ empty.misc.check
946
+ }
947
+
948
+ FUNCTION {phdthesis}
949
+ { output.bibitem
950
+ format.authors "author" output.check
951
+ author format.key output
952
+ new.block
953
+ format.btitle "title" output.check
954
+ new.block
955
+ "PhD thesis" format.thesis.type output.nonnull
956
+ school "school" output.check
957
+ address output
958
+ format.date "year" output.check
959
+ format.url output
960
+ new.block
961
+ note output
962
+ fin.entry
963
+ }
964
+
965
+ FUNCTION {proceedings}
966
+ { output.bibitem
967
+ format.editors output
968
+ editor format.key output
969
+ new.block
970
+ format.btitle "title" output.check
971
+ format.bvolume output
972
+ format.number.series output
973
+ address output
974
+ format.date "year" output.check
975
+ new.sentence
976
+ organization output
977
+ publisher output
978
+ format.isbn output
979
+ format.doi output
980
+ format.url output
981
+ new.block
982
+ note output
983
+ fin.entry
984
+ }
985
+
986
+ FUNCTION {techreport}
987
+ { output.bibitem
988
+ format.authors "author" output.check
989
+ author format.key output
990
+ new.block
991
+ format.title "title" output.check
992
+ new.block
993
+ format.tr.number output.nonnull
994
+ institution "institution" output.check
995
+ address output
996
+ format.date "year" output.check
997
+ format.url output
998
+ new.block
999
+ note output
1000
+ fin.entry
1001
+ }
1002
+
1003
+ FUNCTION {unpublished}
1004
+ { output.bibitem
1005
+ format.authors "author" output.check
1006
+ author format.key output
1007
+ new.block
1008
+ format.title "title" output.check
1009
+ new.block
1010
+ note "note" output.check
1011
+ format.date output
1012
+ format.url output
1013
+ fin.entry
1014
+ }
1015
+
1016
+ FUNCTION {default.type} { misc }
1017
+
1018
+
1019
+ MACRO {jan} {"January"}
1020
+
1021
+ MACRO {feb} {"February"}
1022
+
1023
+ MACRO {mar} {"March"}
1024
+
1025
+ MACRO {apr} {"April"}
1026
+
1027
+ MACRO {may} {"May"}
1028
+
1029
+ MACRO {jun} {"June"}
1030
+
1031
+ MACRO {jul} {"July"}
1032
+
1033
+ MACRO {aug} {"August"}
1034
+
1035
+ MACRO {sep} {"September"}
1036
+
1037
+ MACRO {oct} {"October"}
1038
+
1039
+ MACRO {nov} {"November"}
1040
+
1041
+ MACRO {dec} {"December"}
1042
+
1043
+
1044
+
1045
+ MACRO {acmcs} {"ACM Computing Surveys"}
1046
+
1047
+ MACRO {acta} {"Acta Informatica"}
1048
+
1049
+ MACRO {cacm} {"Communications of the ACM"}
1050
+
1051
+ MACRO {ibmjrd} {"IBM Journal of Research and Development"}
1052
+
1053
+ MACRO {ibmsj} {"IBM Systems Journal"}
1054
+
1055
+ MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
1056
+
1057
+ MACRO {ieeetc} {"IEEE Transactions on Computers"}
1058
+
1059
+ MACRO {ieeetcad}
1060
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
1061
+
1062
+ MACRO {ipl} {"Information Processing Letters"}
1063
+
1064
+ MACRO {jacm} {"Journal of the ACM"}
1065
+
1066
+ MACRO {jcss} {"Journal of Computer and System Sciences"}
1067
+
1068
+ MACRO {scp} {"Science of Computer Programming"}
1069
+
1070
+ MACRO {sicomp} {"SIAM Journal on Computing"}
1071
+
1072
+ MACRO {tocs} {"ACM Transactions on Computer Systems"}
1073
+
1074
+ MACRO {tods} {"ACM Transactions on Database Systems"}
1075
+
1076
+ MACRO {tog} {"ACM Transactions on Graphics"}
1077
+
1078
+ MACRO {toms} {"ACM Transactions on Mathematical Software"}
1079
+
1080
+ MACRO {toois} {"ACM Transactions on Office Information Systems"}
1081
+
1082
+ MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
1083
+
1084
+ MACRO {tcs} {"Theoretical Computer Science"}
1085
+
1086
+
1087
+ READ
1088
+
1089
+ FUNCTION {sortify}
1090
+ { purify$
1091
+ "l" change.case$
1092
+ }
1093
+
1094
+ INTEGERS { len }
1095
+
1096
+ FUNCTION {chop.word}
1097
+ { 's :=
1098
+ 'len :=
1099
+ s #1 len substring$ =
1100
+ { s len #1 + global.max$ substring$ }
1101
+ 's
1102
+ if$
1103
+ }
1104
+
1105
+ FUNCTION {format.lab.names}
1106
+ { 's :=
1107
+ s #1 "{vv~}{ll}" format.name$
1108
+ s num.names$ duplicate$
1109
+ #2 >
1110
+ { pop$ " et~al." * }
1111
+ { #2 <
1112
+ 'skip$
1113
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1114
+ { " et~al." * }
1115
+ { " \& " * s #2 "{vv~}{ll}" format.name$ * }
1116
+ if$
1117
+ }
1118
+ if$
1119
+ }
1120
+ if$
1121
+ }
1122
+
1123
+ FUNCTION {author.key.label}
1124
+ { author empty$
1125
+ { key empty$
1126
+ { cite$ #1 #3 substring$ }
1127
+ 'key
1128
+ if$
1129
+ }
1130
+ { author format.lab.names }
1131
+ if$
1132
+ }
1133
+
1134
+ FUNCTION {author.editor.key.label}
1135
+ { author empty$
1136
+ { editor empty$
1137
+ { key empty$
1138
+ { cite$ #1 #3 substring$ }
1139
+ 'key
1140
+ if$
1141
+ }
1142
+ { editor format.lab.names }
1143
+ if$
1144
+ }
1145
+ { author format.lab.names }
1146
+ if$
1147
+ }
1148
+
1149
+ FUNCTION {author.key.organization.label}
1150
+ { author empty$
1151
+ { key empty$
1152
+ { organization empty$
1153
+ { cite$ #1 #3 substring$ }
1154
+ { "The " #4 organization chop.word #3 text.prefix$ }
1155
+ if$
1156
+ }
1157
+ 'key
1158
+ if$
1159
+ }
1160
+ { author format.lab.names }
1161
+ if$
1162
+ }
1163
+
1164
+ FUNCTION {editor.key.organization.label}
1165
+ { editor empty$
1166
+ { key empty$
1167
+ { organization empty$
1168
+ { cite$ #1 #3 substring$ }
1169
+ { "The " #4 organization chop.word #3 text.prefix$ }
1170
+ if$
1171
+ }
1172
+ 'key
1173
+ if$
1174
+ }
1175
+ { editor format.lab.names }
1176
+ if$
1177
+ }
1178
+
1179
+ FUNCTION {calc.short.authors}
1180
+ { type$ "book" =
1181
+ type$ "inbook" =
1182
+ or
1183
+ 'author.editor.key.label
1184
+ { type$ "proceedings" =
1185
+ 'editor.key.organization.label
1186
+ { type$ "manual" =
1187
+ 'author.key.organization.label
1188
+ 'author.key.label
1189
+ if$
1190
+ }
1191
+ if$
1192
+ }
1193
+ if$
1194
+ 'short.list :=
1195
+ }
1196
+
1197
+ FUNCTION {calc.label}
1198
+ { calc.short.authors
1199
+ short.list
1200
+ "("
1201
+ *
1202
+ year duplicate$ empty$
1203
+ short.list key field.or.null = or
1204
+ { pop$ "" }
1205
+ 'skip$
1206
+ if$
1207
+ *
1208
+ 'label :=
1209
+ }
1210
+
1211
+ FUNCTION {sort.format.names}
1212
+ { 's :=
1213
+ #1 'nameptr :=
1214
+ ""
1215
+ s num.names$ 'numnames :=
1216
+ numnames 'namesleft :=
1217
+ { namesleft #0 > }
1218
+ {
1219
+ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
1220
+ nameptr #1 >
1221
+ {
1222
+ " " *
1223
+ namesleft #1 = t "others" = and
1224
+ { "zzzzz" * }
1225
+ { numnames #2 > nameptr #2 = and
1226
+ { "zz" * year field.or.null * " " * }
1227
+ 'skip$
1228
+ if$
1229
+ t sortify *
1230
+ }
1231
+ if$
1232
+ }
1233
+ { t sortify * }
1234
+ if$
1235
+ nameptr #1 + 'nameptr :=
1236
+ namesleft #1 - 'namesleft :=
1237
+ }
1238
+ while$
1239
+ }
1240
+
1241
+ FUNCTION {sort.format.title}
1242
+ { 't :=
1243
+ "A " #2
1244
+ "An " #3
1245
+ "The " #4 t chop.word
1246
+ chop.word
1247
+ chop.word
1248
+ sortify
1249
+ #1 global.max$ substring$
1250
+ }
1251
+
1252
+ FUNCTION {author.sort}
1253
+ { author empty$
1254
+ { key empty$
1255
+ { "to sort, need author or key in " cite$ * warning$
1256
+ ""
1257
+ }
1258
+ { key sortify }
1259
+ if$
1260
+ }
1261
+ { author sort.format.names }
1262
+ if$
1263
+ }
1264
+
1265
+ FUNCTION {author.editor.sort}
1266
+ { author empty$
1267
+ { editor empty$
1268
+ { key empty$
1269
+ { "to sort, need author, editor, or key in " cite$ * warning$
1270
+ ""
1271
+ }
1272
+ { key sortify }
1273
+ if$
1274
+ }
1275
+ { editor sort.format.names }
1276
+ if$
1277
+ }
1278
+ { author sort.format.names }
1279
+ if$
1280
+ }
1281
+
1282
+ FUNCTION {author.organization.sort}
1283
+ { author empty$
1284
+ { organization empty$
1285
+ { key empty$
1286
+ { "to sort, need author, organization, or key in " cite$ * warning$
1287
+ ""
1288
+ }
1289
+ { key sortify }
1290
+ if$
1291
+ }
1292
+ { "The " #4 organization chop.word sortify }
1293
+ if$
1294
+ }
1295
+ { author sort.format.names }
1296
+ if$
1297
+ }
1298
+
1299
+ FUNCTION {editor.organization.sort}
1300
+ { editor empty$
1301
+ { organization empty$
1302
+ { key empty$
1303
+ { "to sort, need editor, organization, or key in " cite$ * warning$
1304
+ ""
1305
+ }
1306
+ { key sortify }
1307
+ if$
1308
+ }
1309
+ { "The " #4 organization chop.word sortify }
1310
+ if$
1311
+ }
1312
+ { editor sort.format.names }
1313
+ if$
1314
+ }
1315
+
1316
+
1317
+ FUNCTION {presort}
1318
+ { calc.label
1319
+ label sortify
1320
+ " "
1321
+ *
1322
+ type$ "book" =
1323
+ type$ "inbook" =
1324
+ or
1325
+ 'author.editor.sort
1326
+ { type$ "proceedings" =
1327
+ 'editor.organization.sort
1328
+ { type$ "manual" =
1329
+ 'author.organization.sort
1330
+ 'author.sort
1331
+ if$
1332
+ }
1333
+ if$
1334
+ }
1335
+ if$
1336
+ " "
1337
+ *
1338
+ year field.or.null sortify
1339
+ *
1340
+ " "
1341
+ *
1342
+ cite$
1343
+ *
1344
+ #1 entry.max$ substring$
1345
+ 'sort.label :=
1346
+ sort.label *
1347
+ #1 entry.max$ substring$
1348
+ 'sort.key$ :=
1349
+ }
1350
+
1351
+ ITERATE {presort}
1352
+
1353
+ SORT
1354
+
1355
+ STRINGS { longest.label last.label next.extra }
1356
+
1357
+ INTEGERS { longest.label.width last.extra.num number.label }
1358
+
1359
+ FUNCTION {initialize.longest.label}
1360
+ { "" 'longest.label :=
1361
+ #0 int.to.chr$ 'last.label :=
1362
+ "" 'next.extra :=
1363
+ #0 'longest.label.width :=
1364
+ #0 'last.extra.num :=
1365
+ #0 'number.label :=
1366
+ }
1367
+
1368
+ FUNCTION {forward.pass}
1369
+ { last.label label =
1370
+ { last.extra.num #1 + 'last.extra.num :=
1371
+ last.extra.num int.to.chr$ 'extra.label :=
1372
+ }
1373
+ { "a" chr.to.int$ 'last.extra.num :=
1374
+ "" 'extra.label :=
1375
+ label 'last.label :=
1376
+ }
1377
+ if$
1378
+ number.label #1 + 'number.label :=
1379
+ }
1380
+
1381
+ FUNCTION {reverse.pass}
1382
+ { next.extra "b" =
1383
+ { "a" 'extra.label := }
1384
+ 'skip$
1385
+ if$
1386
+ extra.label 'next.extra :=
1387
+ extra.label
1388
+ duplicate$ empty$
1389
+ 'skip$
1390
+ { "{\natexlab{" swap$ * "}}" * }
1391
+ if$
1392
+ 'extra.label :=
1393
+ label extra.label * 'label :=
1394
+ }
1395
+
1396
+ EXECUTE {initialize.longest.label}
1397
+
1398
+ ITERATE {forward.pass}
1399
+
1400
+ REVERSE {reverse.pass}
1401
+
1402
+ FUNCTION {bib.sort.order}
1403
+ { sort.label 'sort.key$ :=
1404
+ }
1405
+
1406
+ ITERATE {bib.sort.order}
1407
+
1408
+ SORT
1409
+
1410
+ FUNCTION {begin.bib}
1411
+ { preamble$ empty$
1412
+ 'skip$
1413
+ { preamble$ write$ newline$ }
1414
+ if$
1415
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
1416
+ write$ newline$
1417
+ "\providecommand{\natexlab}[1]{#1}"
1418
+ write$ newline$
1419
+ "\providecommand{\url}[1]{\texttt{#1}}"
1420
+ write$ newline$
1421
+ "\expandafter\ifx\csname urlstyle\endcsname\relax"
1422
+ write$ newline$
1423
+ " \providecommand{\doi}[1]{doi: #1}\else"
1424
+ write$ newline$
1425
+ " \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
1426
+ write$ newline$
1427
+ }
1428
+
1429
+ EXECUTE {begin.bib}
1430
+
1431
+ EXECUTE {init.state.consts}
1432
+
1433
+ ITERATE {call.type$}
1434
+
1435
+ FUNCTION {end.bib}
1436
+ { newline$
1437
+ "\end{thebibliography}" write$ newline$
1438
+ }
1439
+
1440
+ EXECUTE {end.bib}
latex_templates/ICLR2022/iclr2022_conference.sty ADDED
@@ -0,0 +1,245 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ %%%% ICLR Macros (LaTex)
2
+ %%%% Adapted by Hugo Larochelle from the NIPS stylefile Macros
3
+ %%%% Style File
4
+ %%%% Dec 12, 1990 Rev Aug 14, 1991; Sept, 1995; April, 1997; April, 1999; October 2014
5
+
6
+ % This file can be used with Latex2e whether running in main mode, or
7
+ % 2.09 compatibility mode.
8
+ %
9
+ % If using main mode, you need to include the commands
10
+ % \documentclass{article}
11
+ % \usepackage{iclr14submit_e,times}
12
+ %
13
+
14
+ % Change the overall width of the page. If these parameters are
15
+ % changed, they will require corresponding changes in the
16
+ % maketitle section.
17
+ %
18
+ \usepackage{eso-pic} % used by \AddToShipoutPicture
19
+ \RequirePackage{fancyhdr}
20
+ \RequirePackage{natbib}
21
+
22
+ % modification to natbib citations
23
+ \setcitestyle{authoryear,round,citesep={;},aysep={,},yysep={;}}
24
+
25
+ \renewcommand{\topfraction}{0.95} % let figure take up nearly whole page
26
+ \renewcommand{\textfraction}{0.05} % let figure take up nearly whole page
27
+
28
+ % Define iclrfinal, set to true if iclrfinalcopy is defined
29
+ \newif\ificlrfinal
30
+ \iclrfinalfalse
31
+ \def\iclrfinalcopy{\iclrfinaltrue}
32
+ \font\iclrtenhv = phvb at 8pt
33
+
34
+ % Specify the dimensions of each page
35
+
36
+ \setlength{\paperheight}{11in}
37
+ \setlength{\paperwidth}{8.5in}
38
+
39
+
40
+ \oddsidemargin .5in % Note \oddsidemargin = \evensidemargin
41
+ \evensidemargin .5in
42
+ \marginparwidth 0.07 true in
43
+ %\marginparwidth 0.75 true in
44
+ %\topmargin 0 true pt % Nominal distance from top of page to top of
45
+ %\topmargin 0.125in
46
+ \topmargin -0.625in
47
+ \addtolength{\headsep}{0.25in}
48
+ \textheight 9.0 true in % Height of text (including footnotes & figures)
49
+ \textwidth 5.5 true in % Width of text line.
50
+ \widowpenalty=10000
51
+ \clubpenalty=10000
52
+
53
+ % \thispagestyle{empty} \pagestyle{empty}
54
+ \flushbottom \sloppy
55
+
56
+ % We're never going to need a table of contents, so just flush it to
57
+ % save space --- suggested by drstrip@sandia-2
58
+ \def\addcontentsline#1#2#3{}
59
+
60
+ % Title stuff, taken from deproc.
61
+ \def\maketitle{\par
62
+ \begingroup
63
+ \def\thefootnote{\fnsymbol{footnote}}
64
+ \def\@makefnmark{\hbox to 0pt{$^{\@thefnmark}$\hss}} % for perfect author
65
+ % name centering
66
+ % The footnote-mark was overlapping the footnote-text,
67
+ % added the following to fix this problem (MK)
68
+ \long\def\@makefntext##1{\parindent 1em\noindent
69
+ \hbox to1.8em{\hss $\m@th ^{\@thefnmark}$}##1}
70
+ \@maketitle \@thanks
71
+ \endgroup
72
+ \setcounter{footnote}{0}
73
+ \let\maketitle\relax \let\@maketitle\relax
74
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
75
+
76
+ % The toptitlebar has been raised to top-justify the first page
77
+
78
+ \usepackage{fancyhdr}
79
+ \pagestyle{fancy}
80
+ \fancyhead{}
81
+
82
+ % Title (includes both anonimized and non-anonimized versions)
83
+ \def\@maketitle{\vbox{\hsize\textwidth
84
+ %\linewidth\hsize \vskip 0.1in \toptitlebar \centering
85
+ {\LARGE\sc \@title\par}
86
+ %\bottomtitlebar % \vskip 0.1in % minus
87
+ \ificlrfinal
88
+ \lhead{Published as a conference paper at ICLR 2022}
89
+ \def\And{\end{tabular}\hfil\linebreak[0]\hfil
90
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
91
+ \def\AND{\end{tabular}\hfil\linebreak[4]\hfil
92
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
93
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\@author\end{tabular}%
94
+ \else
95
+ \lhead{Under review as a conference paper at ICLR 2022}
96
+ \def\And{\end{tabular}\hfil\linebreak[0]\hfil
97
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
98
+ \def\AND{\end{tabular}\hfil\linebreak[4]\hfil
99
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
100
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}Anonymous authors\\Paper under double-blind review\end{tabular}%
101
+ \fi
102
+ \vskip 0.3in minus 0.1in}}
103
+
104
+ \renewenvironment{abstract}{\vskip.075in\centerline{\large\sc
105
+ Abstract}\vspace{0.5ex}\begin{quote}}{\par\end{quote}\vskip 1ex}
106
+
107
+ % sections with less space
108
+ \def\section{\@startsection {section}{1}{\z@}{-2.0ex plus
109
+ -0.5ex minus -.2ex}{1.5ex plus 0.3ex
110
+ minus0.2ex}{\large\sc\raggedright}}
111
+
112
+ \def\subsection{\@startsection{subsection}{2}{\z@}{-1.8ex plus
113
+ -0.5ex minus -.2ex}{0.8ex plus .2ex}{\normalsize\sc\raggedright}}
114
+ \def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-1.5ex
115
+ plus -0.5ex minus -.2ex}{0.5ex plus
116
+ .2ex}{\normalsize\sc\raggedright}}
117
+ \def\paragraph{\@startsection{paragraph}{4}{\z@}{1.5ex plus
118
+ 0.5ex minus .2ex}{-1em}{\normalsize\bf}}
119
+ \def\subparagraph{\@startsection{subparagraph}{5}{\z@}{1.5ex plus
120
+ 0.5ex minus .2ex}{-1em}{\normalsize\sc}}
121
+ \def\subsubsubsection{\vskip
122
+ 5pt{\noindent\normalsize\rm\raggedright}}
123
+
124
+
125
+ % Footnotes
126
+ \footnotesep 6.65pt %
127
+ \skip\footins 9pt plus 4pt minus 2pt
128
+ \def\footnoterule{\kern-3pt \hrule width 12pc \kern 2.6pt }
129
+ \setcounter{footnote}{0}
130
+
131
+ % Lists and paragraphs
132
+ \parindent 0pt
133
+ \topsep 4pt plus 1pt minus 2pt
134
+ \partopsep 1pt plus 0.5pt minus 0.5pt
135
+ \itemsep 2pt plus 1pt minus 0.5pt
136
+ \parsep 2pt plus 1pt minus 0.5pt
137
+ \parskip .5pc
138
+
139
+
140
+ %\leftmargin2em
141
+ \leftmargin3pc
142
+ \leftmargini\leftmargin \leftmarginii 2em
143
+ \leftmarginiii 1.5em \leftmarginiv 1.0em \leftmarginv .5em
144
+
145
+ %\labelsep \labelsep 5pt
146
+
147
+ \def\@listi{\leftmargin\leftmargini}
148
+ \def\@listii{\leftmargin\leftmarginii
149
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
150
+ \topsep 2pt plus 1pt minus 0.5pt
151
+ \parsep 1pt plus 0.5pt minus 0.5pt
152
+ \itemsep \parsep}
153
+ \def\@listiii{\leftmargin\leftmarginiii
154
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
155
+ \topsep 1pt plus 0.5pt minus 0.5pt
156
+ \parsep \z@ \partopsep 0.5pt plus 0pt minus 0.5pt
157
+ \itemsep \topsep}
158
+ \def\@listiv{\leftmargin\leftmarginiv
159
+ \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
160
+ \def\@listv{\leftmargin\leftmarginv
161
+ \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
162
+ \def\@listvi{\leftmargin\leftmarginvi
163
+ \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
164
+
165
+ \abovedisplayskip 7pt plus2pt minus5pt%
166
+ \belowdisplayskip \abovedisplayskip
167
+ \abovedisplayshortskip 0pt plus3pt%
168
+ \belowdisplayshortskip 4pt plus3pt minus3pt%
169
+
170
+ % Less leading in most fonts (due to the narrow columns)
171
+ % The choices were between 1-pt and 1.5-pt leading
172
+ %\def\@normalsize{\@setsize\normalsize{11pt}\xpt\@xpt} % got rid of @ (MK)
173
+ \def\normalsize{\@setsize\normalsize{11pt}\xpt\@xpt}
174
+ \def\small{\@setsize\small{10pt}\ixpt\@ixpt}
175
+ \def\footnotesize{\@setsize\footnotesize{10pt}\ixpt\@ixpt}
176
+ \def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
177
+ \def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
178
+ \def\large{\@setsize\large{14pt}\xiipt\@xiipt}
179
+ \def\Large{\@setsize\Large{16pt}\xivpt\@xivpt}
180
+ \def\LARGE{\@setsize\LARGE{20pt}\xviipt\@xviipt}
181
+ \def\huge{\@setsize\huge{23pt}\xxpt\@xxpt}
182
+ \def\Huge{\@setsize\Huge{28pt}\xxvpt\@xxvpt}
183
+
184
+ \def\toptitlebar{\hrule height4pt\vskip .25in\vskip-\parskip}
185
+
186
+ \def\bottomtitlebar{\vskip .29in\vskip-\parskip\hrule height1pt\vskip
187
+ .09in} %
188
+ %Reduced second vskip to compensate for adding the strut in \@author
189
+
190
+
191
+ %% % Vertical Ruler
192
+ %% % This code is, largely, from the CVPR 2010 conference style file
193
+ %% % ----- define vruler
194
+ %% \makeatletter
195
+ %% \newbox\iclrrulerbox
196
+ %% \newcount\iclrrulercount
197
+ %% \newdimen\iclrruleroffset
198
+ %% \newdimen\cv@lineheight
199
+ %% \newdimen\cv@boxheight
200
+ %% \newbox\cv@tmpbox
201
+ %% \newcount\cv@refno
202
+ %% \newcount\cv@tot
203
+ %% % NUMBER with left flushed zeros \fillzeros[<WIDTH>]<NUMBER>
204
+ %% \newcount\cv@tmpc@ \newcount\cv@tmpc
205
+ %% \def\fillzeros[#1]#2{\cv@tmpc@=#2\relax\ifnum\cv@tmpc@<0\cv@tmpc@=-\cv@tmpc@\fi
206
+ %% \cv@tmpc=1 %
207
+ %% \loop\ifnum\cv@tmpc@<10 \else \divide\cv@tmpc@ by 10 \advance\cv@tmpc by 1 \fi
208
+ %% \ifnum\cv@tmpc@=10\relax\cv@tmpc@=11\relax\fi \ifnum\cv@tmpc@>10 \repeat
209
+ %% \ifnum#2<0\advance\cv@tmpc1\relax-\fi
210
+ %% \loop\ifnum\cv@tmpc<#1\relax0\advance\cv@tmpc1\relax\fi \ifnum\cv@tmpc<#1 \repeat
211
+ %% \cv@tmpc@=#2\relax\ifnum\cv@tmpc@<0\cv@tmpc@=-\cv@tmpc@\fi \relax\the\cv@tmpc@}%
212
+ %% % \makevruler[<SCALE>][<INITIAL_COUNT>][<STEP>][<DIGITS>][<HEIGHT>]
213
+ %% \def\makevruler[#1][#2][#3][#4][#5]{\begingroup\offinterlineskip
214
+ %% \textheight=#5\vbadness=10000\vfuzz=120ex\overfullrule=0pt%
215
+ %% \global\setbox\iclrrulerbox=\vbox to \textheight{%
216
+ %% {\parskip=0pt\hfuzz=150em\cv@boxheight=\textheight
217
+ %% \cv@lineheight=#1\global\iclrrulercount=#2%
218
+ %% \cv@tot\cv@boxheight\divide\cv@tot\cv@lineheight\advance\cv@tot2%
219
+ %% \cv@refno1\vskip-\cv@lineheight\vskip1ex%
220
+ %% \loop\setbox\cv@tmpbox=\hbox to0cm{{\iclrtenhv\hfil\fillzeros[#4]\iclrrulercount}}%
221
+ %% \ht\cv@tmpbox\cv@lineheight\dp\cv@tmpbox0pt\box\cv@tmpbox\break
222
+ %% \advance\cv@refno1\global\advance\iclrrulercount#3\relax
223
+ %% \ifnum\cv@refno<\cv@tot\repeat}}\endgroup}%
224
+ %% \makeatother
225
+ %% % ----- end of vruler
226
+
227
+ %% % \makevruler[<SCALE>][<INITIAL_COUNT>][<STEP>][<DIGITS>][<HEIGHT>]
228
+ %% \def\iclrruler#1{\makevruler[12pt][#1][1][3][0.993\textheight]\usebox{\iclrrulerbox}}
229
+ %% \AddToShipoutPicture{%
230
+ %% \ificlrfinal\else
231
+ %% \iclrruleroffset=\textheight
232
+ %% \advance\iclrruleroffset by -3.7pt
233
+ %% \color[rgb]{.7,.7,.7}
234
+ %% \AtTextUpperLeft{%
235
+ %% \put(\LenToUnit{-35pt},\LenToUnit{-\iclrruleroffset}){%left ruler
236
+ %% \iclrruler{\iclrrulercount}}
237
+ %% }
238
+ %% \fi
239
+ %% }
240
+ %%% To add a vertical bar on the side
241
+ %\AddToShipoutPicture{
242
+ %\AtTextLowerLeft{
243
+ %\hspace*{-1.8cm}
244
+ %\colorbox[rgb]{0.7,0.7,0.7}{\small \parbox[b][\textheight]{0.1cm}{}}}
245
+ %}
latex_templates/ICLR2022/introduction.tex ADDED
File without changes
latex_templates/ICLR2022/math_commands.tex ADDED
@@ -0,0 +1,508 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ %%%%% NEW MATH DEFINITIONS %%%%%
2
+
3
+ \usepackage{amsmath,amsfonts,bm}
4
+
5
+ % Mark sections of captions for referring to divisions of figures
6
+ \newcommand{\figleft}{{\em (Left)}}
7
+ \newcommand{\figcenter}{{\em (Center)}}
8
+ \newcommand{\figright}{{\em (Right)}}
9
+ \newcommand{\figtop}{{\em (Top)}}
10
+ \newcommand{\figbottom}{{\em (Bottom)}}
11
+ \newcommand{\captiona}{{\em (a)}}
12
+ \newcommand{\captionb}{{\em (b)}}
13
+ \newcommand{\captionc}{{\em (c)}}
14
+ \newcommand{\captiond}{{\em (d)}}
15
+
16
+ % Highlight a newly defined term
17
+ \newcommand{\newterm}[1]{{\bf #1}}
18
+
19
+
20
+ % Figure reference, lower-case.
21
+ \def\figref#1{figure~\ref{#1}}
22
+ % Figure reference, capital. For start of sentence
23
+ \def\Figref#1{Figure~\ref{#1}}
24
+ \def\twofigref#1#2{figures \ref{#1} and \ref{#2}}
25
+ \def\quadfigref#1#2#3#4{figures \ref{#1}, \ref{#2}, \ref{#3} and \ref{#4}}
26
+ % Section reference, lower-case.
27
+ \def\secref#1{section~\ref{#1}}
28
+ % Section reference, capital.
29
+ \def\Secref#1{Section~\ref{#1}}
30
+ % Reference to two sections.
31
+ \def\twosecrefs#1#2{sections \ref{#1} and \ref{#2}}
32
+ % Reference to three sections.
33
+ \def\secrefs#1#2#3{sections \ref{#1}, \ref{#2} and \ref{#3}}
34
+ % Reference to an equation, lower-case.
35
+ \def\eqref#1{equation~\ref{#1}}
36
+ % Reference to an equation, upper case
37
+ \def\Eqref#1{Equation~\ref{#1}}
38
+ % A raw reference to an equation---avoid using if possible
39
+ \def\plaineqref#1{\ref{#1}}
40
+ % Reference to a chapter, lower-case.
41
+ \def\chapref#1{chapter~\ref{#1}}
42
+ % Reference to an equation, upper case.
43
+ \def\Chapref#1{Chapter~\ref{#1}}
44
+ % Reference to a range of chapters
45
+ \def\rangechapref#1#2{chapters\ref{#1}--\ref{#2}}
46
+ % Reference to an algorithm, lower-case.
47
+ \def\algref#1{algorithm~\ref{#1}}
48
+ % Reference to an algorithm, upper case.
49
+ \def\Algref#1{Algorithm~\ref{#1}}
50
+ \def\twoalgref#1#2{algorithms \ref{#1} and \ref{#2}}
51
+ \def\Twoalgref#1#2{Algorithms \ref{#1} and \ref{#2}}
52
+ % Reference to a part, lower case
53
+ \def\partref#1{part~\ref{#1}}
54
+ % Reference to a part, upper case
55
+ \def\Partref#1{Part~\ref{#1}}
56
+ \def\twopartref#1#2{parts \ref{#1} and \ref{#2}}
57
+
58
+ \def\ceil#1{\lceil #1 \rceil}
59
+ \def\floor#1{\lfloor #1 \rfloor}
60
+ \def\1{\bm{1}}
61
+ \newcommand{\train}{\mathcal{D}}
62
+ \newcommand{\valid}{\mathcal{D_{\mathrm{valid}}}}
63
+ \newcommand{\test}{\mathcal{D_{\mathrm{test}}}}
64
+
65
+ \def\eps{{\epsilon}}
66
+
67
+
68
+ % Random variables
69
+ \def\reta{{\textnormal{$\eta$}}}
70
+ \def\ra{{\textnormal{a}}}
71
+ \def\rb{{\textnormal{b}}}
72
+ \def\rc{{\textnormal{c}}}
73
+ \def\rd{{\textnormal{d}}}
74
+ \def\re{{\textnormal{e}}}
75
+ \def\rf{{\textnormal{f}}}
76
+ \def\rg{{\textnormal{g}}}
77
+ \def\rh{{\textnormal{h}}}
78
+ \def\ri{{\textnormal{i}}}
79
+ \def\rj{{\textnormal{j}}}
80
+ \def\rk{{\textnormal{k}}}
81
+ \def\rl{{\textnormal{l}}}
82
+ % rm is already a command, just don't name any random variables m
83
+ \def\rn{{\textnormal{n}}}
84
+ \def\ro{{\textnormal{o}}}
85
+ \def\rp{{\textnormal{p}}}
86
+ \def\rq{{\textnormal{q}}}
87
+ \def\rr{{\textnormal{r}}}
88
+ \def\rs{{\textnormal{s}}}
89
+ \def\rt{{\textnormal{t}}}
90
+ \def\ru{{\textnormal{u}}}
91
+ \def\rv{{\textnormal{v}}}
92
+ \def\rw{{\textnormal{w}}}
93
+ \def\rx{{\textnormal{x}}}
94
+ \def\ry{{\textnormal{y}}}
95
+ \def\rz{{\textnormal{z}}}
96
+
97
+ % Random vectors
98
+ \def\rvepsilon{{\mathbf{\epsilon}}}
99
+ \def\rvtheta{{\mathbf{\theta}}}
100
+ \def\rva{{\mathbf{a}}}
101
+ \def\rvb{{\mathbf{b}}}
102
+ \def\rvc{{\mathbf{c}}}
103
+ \def\rvd{{\mathbf{d}}}
104
+ \def\rve{{\mathbf{e}}}
105
+ \def\rvf{{\mathbf{f}}}
106
+ \def\rvg{{\mathbf{g}}}
107
+ \def\rvh{{\mathbf{h}}}
108
+ \def\rvu{{\mathbf{i}}}
109
+ \def\rvj{{\mathbf{j}}}
110
+ \def\rvk{{\mathbf{k}}}
111
+ \def\rvl{{\mathbf{l}}}
112
+ \def\rvm{{\mathbf{m}}}
113
+ \def\rvn{{\mathbf{n}}}
114
+ \def\rvo{{\mathbf{o}}}
115
+ \def\rvp{{\mathbf{p}}}
116
+ \def\rvq{{\mathbf{q}}}
117
+ \def\rvr{{\mathbf{r}}}
118
+ \def\rvs{{\mathbf{s}}}
119
+ \def\rvt{{\mathbf{t}}}
120
+ \def\rvu{{\mathbf{u}}}
121
+ \def\rvv{{\mathbf{v}}}
122
+ \def\rvw{{\mathbf{w}}}
123
+ \def\rvx{{\mathbf{x}}}
124
+ \def\rvy{{\mathbf{y}}}
125
+ \def\rvz{{\mathbf{z}}}
126
+
127
+ % Elements of random vectors
128
+ \def\erva{{\textnormal{a}}}
129
+ \def\ervb{{\textnormal{b}}}
130
+ \def\ervc{{\textnormal{c}}}
131
+ \def\ervd{{\textnormal{d}}}
132
+ \def\erve{{\textnormal{e}}}
133
+ \def\ervf{{\textnormal{f}}}
134
+ \def\ervg{{\textnormal{g}}}
135
+ \def\ervh{{\textnormal{h}}}
136
+ \def\ervi{{\textnormal{i}}}
137
+ \def\ervj{{\textnormal{j}}}
138
+ \def\ervk{{\textnormal{k}}}
139
+ \def\ervl{{\textnormal{l}}}
140
+ \def\ervm{{\textnormal{m}}}
141
+ \def\ervn{{\textnormal{n}}}
142
+ \def\ervo{{\textnormal{o}}}
143
+ \def\ervp{{\textnormal{p}}}
144
+ \def\ervq{{\textnormal{q}}}
145
+ \def\ervr{{\textnormal{r}}}
146
+ \def\ervs{{\textnormal{s}}}
147
+ \def\ervt{{\textnormal{t}}}
148
+ \def\ervu{{\textnormal{u}}}
149
+ \def\ervv{{\textnormal{v}}}
150
+ \def\ervw{{\textnormal{w}}}
151
+ \def\ervx{{\textnormal{x}}}
152
+ \def\ervy{{\textnormal{y}}}
153
+ \def\ervz{{\textnormal{z}}}
154
+
155
+ % Random matrices
156
+ \def\rmA{{\mathbf{A}}}
157
+ \def\rmB{{\mathbf{B}}}
158
+ \def\rmC{{\mathbf{C}}}
159
+ \def\rmD{{\mathbf{D}}}
160
+ \def\rmE{{\mathbf{E}}}
161
+ \def\rmF{{\mathbf{F}}}
162
+ \def\rmG{{\mathbf{G}}}
163
+ \def\rmH{{\mathbf{H}}}
164
+ \def\rmI{{\mathbf{I}}}
165
+ \def\rmJ{{\mathbf{J}}}
166
+ \def\rmK{{\mathbf{K}}}
167
+ \def\rmL{{\mathbf{L}}}
168
+ \def\rmM{{\mathbf{M}}}
169
+ \def\rmN{{\mathbf{N}}}
170
+ \def\rmO{{\mathbf{O}}}
171
+ \def\rmP{{\mathbf{P}}}
172
+ \def\rmQ{{\mathbf{Q}}}
173
+ \def\rmR{{\mathbf{R}}}
174
+ \def\rmS{{\mathbf{S}}}
175
+ \def\rmT{{\mathbf{T}}}
176
+ \def\rmU{{\mathbf{U}}}
177
+ \def\rmV{{\mathbf{V}}}
178
+ \def\rmW{{\mathbf{W}}}
179
+ \def\rmX{{\mathbf{X}}}
180
+ \def\rmY{{\mathbf{Y}}}
181
+ \def\rmZ{{\mathbf{Z}}}
182
+
183
+ % Elements of random matrices
184
+ \def\ermA{{\textnormal{A}}}
185
+ \def\ermB{{\textnormal{B}}}
186
+ \def\ermC{{\textnormal{C}}}
187
+ \def\ermD{{\textnormal{D}}}
188
+ \def\ermE{{\textnormal{E}}}
189
+ \def\ermF{{\textnormal{F}}}
190
+ \def\ermG{{\textnormal{G}}}
191
+ \def\ermH{{\textnormal{H}}}
192
+ \def\ermI{{\textnormal{I}}}
193
+ \def\ermJ{{\textnormal{J}}}
194
+ \def\ermK{{\textnormal{K}}}
195
+ \def\ermL{{\textnormal{L}}}
196
+ \def\ermM{{\textnormal{M}}}
197
+ \def\ermN{{\textnormal{N}}}
198
+ \def\ermO{{\textnormal{O}}}
199
+ \def\ermP{{\textnormal{P}}}
200
+ \def\ermQ{{\textnormal{Q}}}
201
+ \def\ermR{{\textnormal{R}}}
202
+ \def\ermS{{\textnormal{S}}}
203
+ \def\ermT{{\textnormal{T}}}
204
+ \def\ermU{{\textnormal{U}}}
205
+ \def\ermV{{\textnormal{V}}}
206
+ \def\ermW{{\textnormal{W}}}
207
+ \def\ermX{{\textnormal{X}}}
208
+ \def\ermY{{\textnormal{Y}}}
209
+ \def\ermZ{{\textnormal{Z}}}
210
+
211
+ % Vectors
212
+ \def\vzero{{\bm{0}}}
213
+ \def\vone{{\bm{1}}}
214
+ \def\vmu{{\bm{\mu}}}
215
+ \def\vtheta{{\bm{\theta}}}
216
+ \def\va{{\bm{a}}}
217
+ \def\vb{{\bm{b}}}
218
+ \def\vc{{\bm{c}}}
219
+ \def\vd{{\bm{d}}}
220
+ \def\ve{{\bm{e}}}
221
+ \def\vf{{\bm{f}}}
222
+ \def\vg{{\bm{g}}}
223
+ \def\vh{{\bm{h}}}
224
+ \def\vi{{\bm{i}}}
225
+ \def\vj{{\bm{j}}}
226
+ \def\vk{{\bm{k}}}
227
+ \def\vl{{\bm{l}}}
228
+ \def\vm{{\bm{m}}}
229
+ \def\vn{{\bm{n}}}
230
+ \def\vo{{\bm{o}}}
231
+ \def\vp{{\bm{p}}}
232
+ \def\vq{{\bm{q}}}
233
+ \def\vr{{\bm{r}}}
234
+ \def\vs{{\bm{s}}}
235
+ \def\vt{{\bm{t}}}
236
+ \def\vu{{\bm{u}}}
237
+ \def\vv{{\bm{v}}}
238
+ \def\vw{{\bm{w}}}
239
+ \def\vx{{\bm{x}}}
240
+ \def\vy{{\bm{y}}}
241
+ \def\vz{{\bm{z}}}
242
+
243
+ % Elements of vectors
244
+ \def\evalpha{{\alpha}}
245
+ \def\evbeta{{\beta}}
246
+ \def\evepsilon{{\epsilon}}
247
+ \def\evlambda{{\lambda}}
248
+ \def\evomega{{\omega}}
249
+ \def\evmu{{\mu}}
250
+ \def\evpsi{{\psi}}
251
+ \def\evsigma{{\sigma}}
252
+ \def\evtheta{{\theta}}
253
+ \def\eva{{a}}
254
+ \def\evb{{b}}
255
+ \def\evc{{c}}
256
+ \def\evd{{d}}
257
+ \def\eve{{e}}
258
+ \def\evf{{f}}
259
+ \def\evg{{g}}
260
+ \def\evh{{h}}
261
+ \def\evi{{i}}
262
+ \def\evj{{j}}
263
+ \def\evk{{k}}
264
+ \def\evl{{l}}
265
+ \def\evm{{m}}
266
+ \def\evn{{n}}
267
+ \def\evo{{o}}
268
+ \def\evp{{p}}
269
+ \def\evq{{q}}
270
+ \def\evr{{r}}
271
+ \def\evs{{s}}
272
+ \def\evt{{t}}
273
+ \def\evu{{u}}
274
+ \def\evv{{v}}
275
+ \def\evw{{w}}
276
+ \def\evx{{x}}
277
+ \def\evy{{y}}
278
+ \def\evz{{z}}
279
+
280
+ % Matrix
281
+ \def\mA{{\bm{A}}}
282
+ \def\mB{{\bm{B}}}
283
+ \def\mC{{\bm{C}}}
284
+ \def\mD{{\bm{D}}}
285
+ \def\mE{{\bm{E}}}
286
+ \def\mF{{\bm{F}}}
287
+ \def\mG{{\bm{G}}}
288
+ \def\mH{{\bm{H}}}
289
+ \def\mI{{\bm{I}}}
290
+ \def\mJ{{\bm{J}}}
291
+ \def\mK{{\bm{K}}}
292
+ \def\mL{{\bm{L}}}
293
+ \def\mM{{\bm{M}}}
294
+ \def\mN{{\bm{N}}}
295
+ \def\mO{{\bm{O}}}
296
+ \def\mP{{\bm{P}}}
297
+ \def\mQ{{\bm{Q}}}
298
+ \def\mR{{\bm{R}}}
299
+ \def\mS{{\bm{S}}}
300
+ \def\mT{{\bm{T}}}
301
+ \def\mU{{\bm{U}}}
302
+ \def\mV{{\bm{V}}}
303
+ \def\mW{{\bm{W}}}
304
+ \def\mX{{\bm{X}}}
305
+ \def\mY{{\bm{Y}}}
306
+ \def\mZ{{\bm{Z}}}
307
+ \def\mBeta{{\bm{\beta}}}
308
+ \def\mPhi{{\bm{\Phi}}}
309
+ \def\mLambda{{\bm{\Lambda}}}
310
+ \def\mSigma{{\bm{\Sigma}}}
311
+
312
+ % Tensor
313
+ \DeclareMathAlphabet{\mathsfit}{\encodingdefault}{\sfdefault}{m}{sl}
314
+ \SetMathAlphabet{\mathsfit}{bold}{\encodingdefault}{\sfdefault}{bx}{n}
315
+ \newcommand{\tens}[1]{\bm{\mathsfit{#1}}}
316
+ \def\tA{{\tens{A}}}
317
+ \def\tB{{\tens{B}}}
318
+ \def\tC{{\tens{C}}}
319
+ \def\tD{{\tens{D}}}
320
+ \def\tE{{\tens{E}}}
321
+ \def\tF{{\tens{F}}}
322
+ \def\tG{{\tens{G}}}
323
+ \def\tH{{\tens{H}}}
324
+ \def\tI{{\tens{I}}}
325
+ \def\tJ{{\tens{J}}}
326
+ \def\tK{{\tens{K}}}
327
+ \def\tL{{\tens{L}}}
328
+ \def\tM{{\tens{M}}}
329
+ \def\tN{{\tens{N}}}
330
+ \def\tO{{\tens{O}}}
331
+ \def\tP{{\tens{P}}}
332
+ \def\tQ{{\tens{Q}}}
333
+ \def\tR{{\tens{R}}}
334
+ \def\tS{{\tens{S}}}
335
+ \def\tT{{\tens{T}}}
336
+ \def\tU{{\tens{U}}}
337
+ \def\tV{{\tens{V}}}
338
+ \def\tW{{\tens{W}}}
339
+ \def\tX{{\tens{X}}}
340
+ \def\tY{{\tens{Y}}}
341
+ \def\tZ{{\tens{Z}}}
342
+
343
+
344
+ % Graph
345
+ \def\gA{{\mathcal{A}}}
346
+ \def\gB{{\mathcal{B}}}
347
+ \def\gC{{\mathcal{C}}}
348
+ \def\gD{{\mathcal{D}}}
349
+ \def\gE{{\mathcal{E}}}
350
+ \def\gF{{\mathcal{F}}}
351
+ \def\gG{{\mathcal{G}}}
352
+ \def\gH{{\mathcal{H}}}
353
+ \def\gI{{\mathcal{I}}}
354
+ \def\gJ{{\mathcal{J}}}
355
+ \def\gK{{\mathcal{K}}}
356
+ \def\gL{{\mathcal{L}}}
357
+ \def\gM{{\mathcal{M}}}
358
+ \def\gN{{\mathcal{N}}}
359
+ \def\gO{{\mathcal{O}}}
360
+ \def\gP{{\mathcal{P}}}
361
+ \def\gQ{{\mathcal{Q}}}
362
+ \def\gR{{\mathcal{R}}}
363
+ \def\gS{{\mathcal{S}}}
364
+ \def\gT{{\mathcal{T}}}
365
+ \def\gU{{\mathcal{U}}}
366
+ \def\gV{{\mathcal{V}}}
367
+ \def\gW{{\mathcal{W}}}
368
+ \def\gX{{\mathcal{X}}}
369
+ \def\gY{{\mathcal{Y}}}
370
+ \def\gZ{{\mathcal{Z}}}
371
+
372
+ % Sets
373
+ \def\sA{{\mathbb{A}}}
374
+ \def\sB{{\mathbb{B}}}
375
+ \def\sC{{\mathbb{C}}}
376
+ \def\sD{{\mathbb{D}}}
377
+ % Don't use a set called E, because this would be the same as our symbol
378
+ % for expectation.
379
+ \def\sF{{\mathbb{F}}}
380
+ \def\sG{{\mathbb{G}}}
381
+ \def\sH{{\mathbb{H}}}
382
+ \def\sI{{\mathbb{I}}}
383
+ \def\sJ{{\mathbb{J}}}
384
+ \def\sK{{\mathbb{K}}}
385
+ \def\sL{{\mathbb{L}}}
386
+ \def\sM{{\mathbb{M}}}
387
+ \def\sN{{\mathbb{N}}}
388
+ \def\sO{{\mathbb{O}}}
389
+ \def\sP{{\mathbb{P}}}
390
+ \def\sQ{{\mathbb{Q}}}
391
+ \def\sR{{\mathbb{R}}}
392
+ \def\sS{{\mathbb{S}}}
393
+ \def\sT{{\mathbb{T}}}
394
+ \def\sU{{\mathbb{U}}}
395
+ \def\sV{{\mathbb{V}}}
396
+ \def\sW{{\mathbb{W}}}
397
+ \def\sX{{\mathbb{X}}}
398
+ \def\sY{{\mathbb{Y}}}
399
+ \def\sZ{{\mathbb{Z}}}
400
+
401
+ % Entries of a matrix
402
+ \def\emLambda{{\Lambda}}
403
+ \def\emA{{A}}
404
+ \def\emB{{B}}
405
+ \def\emC{{C}}
406
+ \def\emD{{D}}
407
+ \def\emE{{E}}
408
+ \def\emF{{F}}
409
+ \def\emG{{G}}
410
+ \def\emH{{H}}
411
+ \def\emI{{I}}
412
+ \def\emJ{{J}}
413
+ \def\emK{{K}}
414
+ \def\emL{{L}}
415
+ \def\emM{{M}}
416
+ \def\emN{{N}}
417
+ \def\emO{{O}}
418
+ \def\emP{{P}}
419
+ \def\emQ{{Q}}
420
+ \def\emR{{R}}
421
+ \def\emS{{S}}
422
+ \def\emT{{T}}
423
+ \def\emU{{U}}
424
+ \def\emV{{V}}
425
+ \def\emW{{W}}
426
+ \def\emX{{X}}
427
+ \def\emY{{Y}}
428
+ \def\emZ{{Z}}
429
+ \def\emSigma{{\Sigma}}
430
+
431
+ % entries of a tensor
432
+ % Same font as tensor, without \bm wrapper
433
+ \newcommand{\etens}[1]{\mathsfit{#1}}
434
+ \def\etLambda{{\etens{\Lambda}}}
435
+ \def\etA{{\etens{A}}}
436
+ \def\etB{{\etens{B}}}
437
+ \def\etC{{\etens{C}}}
438
+ \def\etD{{\etens{D}}}
439
+ \def\etE{{\etens{E}}}
440
+ \def\etF{{\etens{F}}}
441
+ \def\etG{{\etens{G}}}
442
+ \def\etH{{\etens{H}}}
443
+ \def\etI{{\etens{I}}}
444
+ \def\etJ{{\etens{J}}}
445
+ \def\etK{{\etens{K}}}
446
+ \def\etL{{\etens{L}}}
447
+ \def\etM{{\etens{M}}}
448
+ \def\etN{{\etens{N}}}
449
+ \def\etO{{\etens{O}}}
450
+ \def\etP{{\etens{P}}}
451
+ \def\etQ{{\etens{Q}}}
452
+ \def\etR{{\etens{R}}}
453
+ \def\etS{{\etens{S}}}
454
+ \def\etT{{\etens{T}}}
455
+ \def\etU{{\etens{U}}}
456
+ \def\etV{{\etens{V}}}
457
+ \def\etW{{\etens{W}}}
458
+ \def\etX{{\etens{X}}}
459
+ \def\etY{{\etens{Y}}}
460
+ \def\etZ{{\etens{Z}}}
461
+
462
+ % The true underlying data generating distribution
463
+ \newcommand{\pdata}{p_{\rm{data}}}
464
+ % The empirical distribution defined by the training set
465
+ \newcommand{\ptrain}{\hat{p}_{\rm{data}}}
466
+ \newcommand{\Ptrain}{\hat{P}_{\rm{data}}}
467
+ % The model distribution
468
+ \newcommand{\pmodel}{p_{\rm{model}}}
469
+ \newcommand{\Pmodel}{P_{\rm{model}}}
470
+ \newcommand{\ptildemodel}{\tilde{p}_{\rm{model}}}
471
+ % Stochastic autoencoder distributions
472
+ \newcommand{\pencode}{p_{\rm{encoder}}}
473
+ \newcommand{\pdecode}{p_{\rm{decoder}}}
474
+ \newcommand{\precons}{p_{\rm{reconstruct}}}
475
+
476
+ \newcommand{\laplace}{\mathrm{Laplace}} % Laplace distribution
477
+
478
+ \newcommand{\E}{\mathbb{E}}
479
+ \newcommand{\Ls}{\mathcal{L}}
480
+ \newcommand{\R}{\mathbb{R}}
481
+ \newcommand{\emp}{\tilde{p}}
482
+ \newcommand{\lr}{\alpha}
483
+ \newcommand{\reg}{\lambda}
484
+ \newcommand{\rect}{\mathrm{rectifier}}
485
+ \newcommand{\softmax}{\mathrm{softmax}}
486
+ \newcommand{\sigmoid}{\sigma}
487
+ \newcommand{\softplus}{\zeta}
488
+ \newcommand{\KL}{D_{\mathrm{KL}}}
489
+ \newcommand{\Var}{\mathrm{Var}}
490
+ \newcommand{\standarderror}{\mathrm{SE}}
491
+ \newcommand{\Cov}{\mathrm{Cov}}
492
+ % Wolfram Mathworld says $L^2$ is for function spaces and $\ell^2$ is for vectors
493
+ % But then they seem to use $L^2$ for vectors throughout the site, and so does
494
+ % wikipedia.
495
+ \newcommand{\normlzero}{L^0}
496
+ \newcommand{\normlone}{L^1}
497
+ \newcommand{\normltwo}{L^2}
498
+ \newcommand{\normlp}{L^p}
499
+ \newcommand{\normmax}{L^\infty}
500
+
501
+ \newcommand{\parents}{Pa} % See usage in notation.tex. Chosen to match Daphne's book.
502
+
503
+ \DeclareMathOperator*{\argmax}{arg\,max}
504
+ \DeclareMathOperator*{\argmin}{arg\,min}
505
+
506
+ \DeclareMathOperator{\sign}{sign}
507
+ \DeclareMathOperator{\Tr}{Tr}
508
+ \let\ab\allowbreak
latex_templates/ICLR2022/methodology.tex ADDED
File without changes
latex_templates/ICLR2022/natbib.sty ADDED
@@ -0,0 +1,1246 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ %%
2
+ %% This is file `natbib.sty',
3
+ %% generated with the docstrip utility.
4
+ %%
5
+ %% The original source files were:
6
+ %%
7
+ %% natbib.dtx (with options: `package,all')
8
+ %% =============================================
9
+ %% IMPORTANT NOTICE:
10
+ %%
11
+ %% This program can be redistributed and/or modified under the terms
12
+ %% of the LaTeX Project Public License Distributed from CTAN
13
+ %% archives in directory macros/latex/base/lppl.txt; either
14
+ %% version 1 of the License, or any later version.
15
+ %%
16
+ %% This is a generated file.
17
+ %% It may not be distributed without the original source file natbib.dtx.
18
+ %%
19
+ %% Full documentation can be obtained by LaTeXing that original file.
20
+ %% Only a few abbreviated comments remain here to describe the usage.
21
+ %% =============================================
22
+ %% Copyright 1993-2009 Patrick W Daly
23
+ %% Max-Planck-Institut f\"ur Sonnensystemforschung
24
+ %% Max-Planck-Str. 2
25
+ %% D-37191 Katlenburg-Lindau
26
+ %% Germany
27
+ %% E-mail: daly@mps.mpg.de
28
+ \NeedsTeXFormat{LaTeX2e}[1995/06/01]
29
+ \ProvidesPackage{natbib}
30
+ [2009/07/16 8.31 (PWD, AO)]
31
+
32
+ % This package reimplements the LaTeX \cite command to be used for various
33
+ % citation styles, both author-year and numerical. It accepts BibTeX
34
+ % output intended for many other packages, and therefore acts as a
35
+ % general, all-purpose citation-style interface.
36
+ %
37
+ % With standard numerical .bst files, only numerical citations are
38
+ % possible. With an author-year .bst file, both numerical and
39
+ % author-year citations are possible.
40
+ %
41
+ % If author-year citations are selected, \bibitem must have one of the
42
+ % following forms:
43
+ % \bibitem[Jones et al.(1990)]{key}...
44
+ % \bibitem[Jones et al.(1990)Jones, Baker, and Williams]{key}...
45
+ % \bibitem[Jones et al., 1990]{key}...
46
+ % \bibitem[\protect\citeauthoryear{Jones, Baker, and Williams}{Jones
47
+ % et al.}{1990}]{key}...
48
+ % \bibitem[\protect\citeauthoryear{Jones et al.}{1990}]{key}...
49
+ % \bibitem[\protect\astroncite{Jones et al.}{1990}]{key}...
50
+ % \bibitem[\protect\citename{Jones et al., }1990]{key}...
51
+ % \harvarditem[Jones et al.]{Jones, Baker, and Williams}{1990}{key}...
52
+ %
53
+ % This is either to be made up manually, or to be generated by an
54
+ % appropriate .bst file with BibTeX.
55
+ % Author-year mode || Numerical mode
56
+ % Then, \citet{key} ==>> Jones et al. (1990) || Jones et al. [21]
57
+ % \citep{key} ==>> (Jones et al., 1990) || [21]
58
+ % Multiple citations as normal:
59
+ % \citep{key1,key2} ==>> (Jones et al., 1990; Smith, 1989) || [21,24]
60
+ % or (Jones et al., 1990, 1991) || [21,24]
61
+ % or (Jones et al., 1990a,b) || [21,24]
62
+ % \cite{key} is the equivalent of \citet{key} in author-year mode
63
+ % and of \citep{key} in numerical mode
64
+ % Full author lists may be forced with \citet* or \citep*, e.g.
65
+ % \citep*{key} ==>> (Jones, Baker, and Williams, 1990)
66
+ % Optional notes as:
67
+ % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
68
+ % \citep[e.g.,][]{key} ==>> (e.g., Jones et al., 1990)
69
+ % \citep[see][pg. 34]{key}==>> (see Jones et al., 1990, pg. 34)
70
+ % (Note: in standard LaTeX, only one note is allowed, after the ref.
71
+ % Here, one note is like the standard, two make pre- and post-notes.)
72
+ % \citealt{key} ==>> Jones et al. 1990
73
+ % \citealt*{key} ==>> Jones, Baker, and Williams 1990
74
+ % \citealp{key} ==>> Jones et al., 1990
75
+ % \citealp*{key} ==>> Jones, Baker, and Williams, 1990
76
+ % Additional citation possibilities (both author-year and numerical modes)
77
+ % \citeauthor{key} ==>> Jones et al.
78
+ % \citeauthor*{key} ==>> Jones, Baker, and Williams
79
+ % \citeyear{key} ==>> 1990
80
+ % \citeyearpar{key} ==>> (1990)
81
+ % \citetext{priv. comm.} ==>> (priv. comm.)
82
+ % \citenum{key} ==>> 11 [non-superscripted]
83
+ % Note: full author lists depends on whether the bib style supports them;
84
+ % if not, the abbreviated list is printed even when full requested.
85
+ %
86
+ % For names like della Robbia at the start of a sentence, use
87
+ % \Citet{dRob98} ==>> Della Robbia (1998)
88
+ % \Citep{dRob98} ==>> (Della Robbia, 1998)
89
+ % \Citeauthor{dRob98} ==>> Della Robbia
90
+ %
91
+ %
92
+ % Citation aliasing is achieved with
93
+ % \defcitealias{key}{text}
94
+ % \citetalias{key} ==>> text
95
+ % \citepalias{key} ==>> (text)
96
+ %
97
+ % Defining the citation mode and punctual (citation style)
98
+ % \setcitestyle{<comma-separated list of keywords, same
99
+ % as the package options>}
100
+ % Example: \setcitestyle{square,semicolon}
101
+ % Alternatively:
102
+ % Use \bibpunct with 6 mandatory arguments:
103
+ % 1. opening bracket for citation
104
+ % 2. closing bracket
105
+ % 3. citation separator (for multiple citations in one \cite)
106
+ % 4. the letter n for numerical styles, s for superscripts
107
+ % else anything for author-year
108
+ % 5. punctuation between authors and date
109
+ % 6. punctuation between years (or numbers) when common authors missing
110
+ % One optional argument is the character coming before post-notes. It
111
+ % appears in square braces before all other arguments. May be left off.
112
+ % Example (and default) \bibpunct[, ]{(}{)}{;}{a}{,}{,}
113
+ %
114
+ % To make this automatic for a given bib style, named newbib, say, make
115
+ % a local configuration file, natbib.cfg, with the definition
116
+ % \newcommand{\bibstyle@newbib}{\bibpunct...}
117
+ % Then the \bibliographystyle{newbib} will cause \bibstyle@newbib to
118
+ % be called on THE NEXT LATEX RUN (via the aux file).
119
+ %
120
+ % Such preprogrammed definitions may be invoked anywhere in the text
121
+ % by calling \citestyle{newbib}. This is only useful if the style specified
122
+ % differs from that in \bibliographystyle.
123
+ %
124
+ % With \citeindextrue and \citeindexfalse, one can control whether the
125
+ % \cite commands make an automatic entry of the citation in the .idx
126
+ % indexing file. For this, \makeindex must also be given in the preamble.
127
+ %
128
+ % Package Options: (for selecting punctuation)
129
+ % round - round parentheses are used (default)
130
+ % square - square brackets are used [option]
131
+ % curly - curly braces are used {option}
132
+ % angle - angle brackets are used <option>
133
+ % semicolon - multiple citations separated by semi-colon (default)
134
+ % colon - same as semicolon, an earlier confusion
135
+ % comma - separated by comma
136
+ % authoryear - selects author-year citations (default)
137
+ % numbers- selects numerical citations
138
+ % super - numerical citations as superscripts
139
+ % sort - sorts multiple citations according to order in ref. list
140
+ % sort&compress - like sort, but also compresses numerical citations
141
+ % compress - compresses without sorting
142
+ % longnamesfirst - makes first citation full author list
143
+ % sectionbib - puts bibliography in a \section* instead of \chapter*
144
+ % merge - allows the citation key to have a * prefix,
145
+ % signifying to merge its reference with that of the previous citation.
146
+ % elide - if references are merged, repeated portions of later ones may be removed.
147
+ % mcite - recognizes and ignores the * prefix for merging.
148
+ % Punctuation so selected dominates over any predefined ones.
149
+ % Package options are called as, e.g.
150
+ % \usepackage[square,comma]{natbib}
151
+ % LaTeX the source file natbib.dtx to obtain more details
152
+ % or the file natnotes.tex for a brief reference sheet.
153
+ %-----------------------------------------------------------
154
+ \providecommand\@ifxundefined[1]{%
155
+ \ifx#1\@undefined\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
156
+ }%
157
+ \providecommand\@ifnum[1]{%
158
+ \ifnum#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
159
+ }%
160
+ \providecommand\@ifx[1]{%
161
+ \ifx#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
162
+ }%
163
+ \providecommand\appdef[2]{%
164
+ \toks@\expandafter{#1}\@temptokena{#2}%
165
+ \edef#1{\the\toks@\the\@temptokena}%
166
+ }%
167
+ \@ifclassloaded{agu2001}{\PackageError{natbib}
168
+ {The agu2001 class already includes natbib coding,\MessageBreak
169
+ so you should not add it explicitly}
170
+ {Type <Return> for now, but then later remove\MessageBreak
171
+ the command \protect\usepackage{natbib} from the document}
172
+ \endinput}{}
173
+ \@ifclassloaded{agutex}{\PackageError{natbib}
174
+ {The AGUTeX class already includes natbib coding,\MessageBreak
175
+ so you should not add it explicitly}
176
+ {Type <Return> for now, but then later remove\MessageBreak
177
+ the command \protect\usepackage{natbib} from the document}
178
+ \endinput}{}
179
+ \@ifclassloaded{aguplus}{\PackageError{natbib}
180
+ {The aguplus class already includes natbib coding,\MessageBreak
181
+ so you should not add it explicitly}
182
+ {Type <Return> for now, but then later remove\MessageBreak
183
+ the command \protect\usepackage{natbib} from the document}
184
+ \endinput}{}
185
+ \@ifclassloaded{nlinproc}{\PackageError{natbib}
186
+ {The nlinproc class already includes natbib coding,\MessageBreak
187
+ so you should not add it explicitly}
188
+ {Type <Return> for now, but then later remove\MessageBreak
189
+ the command \protect\usepackage{natbib} from the document}
190
+ \endinput}{}
191
+ \@ifclassloaded{egs}{\PackageError{natbib}
192
+ {The egs class already includes natbib coding,\MessageBreak
193
+ so you should not add it explicitly}
194
+ {Type <Return> for now, but then later remove\MessageBreak
195
+ the command \protect\usepackage{natbib} from the document}
196
+ \endinput}{}
197
+ \@ifclassloaded{egu}{\PackageError{natbib}
198
+ {The egu class already includes natbib coding,\MessageBreak
199
+ so you should not add it explicitly}
200
+ {Type <Return> for now, but then later remove\MessageBreak
201
+ the command \protect\usepackage{natbib} from the document}
202
+ \endinput}{}
203
+ % Define citation punctuation for some author-year styles
204
+ % One may add and delete at this point
205
+ % Or put additions into local configuration file natbib.cfg
206
+ \newcommand\bibstyle@chicago{\bibpunct{(}{)}{;}{a}{,}{,}}
207
+ \newcommand\bibstyle@named{\bibpunct{[}{]}{;}{a}{,}{,}}
208
+ \newcommand\bibstyle@agu{\bibpunct{[}{]}{;}{a}{,}{,~}}%Amer. Geophys. Union
209
+ \newcommand\bibstyle@copernicus{\bibpunct{(}{)}{;}{a}{,}{,}}%Copernicus Publications
210
+ \let\bibstyle@egu=\bibstyle@copernicus
211
+ \let\bibstyle@egs=\bibstyle@copernicus
212
+ \newcommand\bibstyle@agsm{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}}
213
+ \newcommand\bibstyle@kluwer{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}}
214
+ \newcommand\bibstyle@dcu{\bibpunct{(}{)}{;}{a}{;}{,}\gdef\harvardand{and}}
215
+ \newcommand\bibstyle@aa{\bibpunct{(}{)}{;}{a}{}{,}} %Astronomy & Astrophysics
216
+ \newcommand\bibstyle@pass{\bibpunct{(}{)}{;}{a}{,}{,}}%Planet. & Space Sci
217
+ \newcommand\bibstyle@anngeo{\bibpunct{(}{)}{;}{a}{,}{,}}%Annales Geophysicae
218
+ \newcommand\bibstyle@nlinproc{\bibpunct{(}{)}{;}{a}{,}{,}}%Nonlin.Proc.Geophys.
219
+ % Define citation punctuation for some numerical styles
220
+ \newcommand\bibstyle@cospar{\bibpunct{/}{/}{,}{n}{}{}%
221
+ \gdef\bibnumfmt##1{##1.}}
222
+ \newcommand\bibstyle@esa{\bibpunct{(Ref.~}{)}{,}{n}{}{}%
223
+ \gdef\bibnumfmt##1{##1.\hspace{1em}}}
224
+ \newcommand\bibstyle@nature{\bibpunct{}{}{,}{s}{}{\textsuperscript{,}}%
225
+ \gdef\bibnumfmt##1{##1.}}
226
+ % The standard LaTeX styles
227
+ \newcommand\bibstyle@plain{\bibpunct{[}{]}{,}{n}{}{,}}
228
+ \let\bibstyle@alpha=\bibstyle@plain
229
+ \let\bibstyle@abbrv=\bibstyle@plain
230
+ \let\bibstyle@unsrt=\bibstyle@plain
231
+ % The author-year modifications of the standard styles
232
+ \newcommand\bibstyle@plainnat{\bibpunct{[}{]}{,}{a}{,}{,}}
233
+ \let\bibstyle@abbrvnat=\bibstyle@plainnat
234
+ \let\bibstyle@unsrtnat=\bibstyle@plainnat
235
+ \newif\ifNAT@numbers \NAT@numbersfalse
236
+ \newif\ifNAT@super \NAT@superfalse
237
+ \let\NAT@merge\z@
238
+ \DeclareOption{numbers}{\NAT@numberstrue
239
+ \ExecuteOptions{square,comma,nobibstyle}}
240
+ \DeclareOption{super}{\NAT@supertrue\NAT@numberstrue
241
+ \renewcommand\NAT@open{}\renewcommand\NAT@close{}
242
+ \ExecuteOptions{nobibstyle}}
243
+ \DeclareOption{authoryear}{\NAT@numbersfalse
244
+ \ExecuteOptions{round,semicolon,bibstyle}}
245
+ \DeclareOption{round}{%
246
+ \renewcommand\NAT@open{(} \renewcommand\NAT@close{)}
247
+ \ExecuteOptions{nobibstyle}}
248
+ \DeclareOption{square}{%
249
+ \renewcommand\NAT@open{[} \renewcommand\NAT@close{]}
250
+ \ExecuteOptions{nobibstyle}}
251
+ \DeclareOption{angle}{%
252
+ \renewcommand\NAT@open{$<$} \renewcommand\NAT@close{$>$}
253
+ \ExecuteOptions{nobibstyle}}
254
+ \DeclareOption{curly}{%
255
+ \renewcommand\NAT@open{\{} \renewcommand\NAT@close{\}}
256
+ \ExecuteOptions{nobibstyle}}
257
+ \DeclareOption{comma}{\renewcommand\NAT@sep{,}
258
+ \ExecuteOptions{nobibstyle}}
259
+ \DeclareOption{semicolon}{\renewcommand\NAT@sep{;}
260
+ \ExecuteOptions{nobibstyle}}
261
+ \DeclareOption{colon}{\ExecuteOptions{semicolon}}
262
+ \DeclareOption{nobibstyle}{\let\bibstyle=\@gobble}
263
+ \DeclareOption{bibstyle}{\let\bibstyle=\@citestyle}
264
+ \newif\ifNAT@openbib \NAT@openbibfalse
265
+ \DeclareOption{openbib}{\NAT@openbibtrue}
266
+ \DeclareOption{sectionbib}{\def\NAT@sectionbib{on}}
267
+ \def\NAT@sort{\z@}
268
+ \def\NAT@cmprs{\z@}
269
+ \DeclareOption{sort}{\def\NAT@sort{\@ne}}
270
+ \DeclareOption{compress}{\def\NAT@cmprs{\@ne}}
271
+ \DeclareOption{sort&compress}{\def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}}
272
+ \DeclareOption{mcite}{\let\NAT@merge\@ne}
273
+ \DeclareOption{merge}{\@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}}
274
+ \DeclareOption{elide}{\@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}}
275
+ \@ifpackageloaded{cite}{\PackageWarningNoLine{natbib}
276
+ {The `cite' package should not be used\MessageBreak
277
+ with natbib. Use option `sort' instead}\ExecuteOptions{sort}}{}
278
+ \@ifpackageloaded{mcite}{\PackageWarningNoLine{natbib}
279
+ {The `mcite' package should not be used\MessageBreak
280
+ with natbib. Use option `merge' instead}\ExecuteOptions{merge}}{}
281
+ \@ifpackageloaded{citeref}{\PackageError{natbib}
282
+ {The `citeref' package must be loaded after natbib}%
283
+ {Move \protect\usepackage{citeref} to after \string\usepackage{natbib}}}{}
284
+ \newif\ifNAT@longnames\NAT@longnamesfalse
285
+ \DeclareOption{longnamesfirst}{\NAT@longnamestrue}
286
+ \DeclareOption{nonamebreak}{\def\NAT@nmfmt#1{\mbox{\NAT@up#1}}}
287
+ \def\NAT@nmfmt#1{{\NAT@up#1}}
288
+ \renewcommand\bibstyle[1]{\csname bibstyle@#1\endcsname}
289
+ \AtBeginDocument{\global\let\bibstyle=\@gobble}
290
+ \let\@citestyle\bibstyle
291
+ \newcommand\citestyle[1]{\@citestyle{#1}\let\bibstyle\@gobble}
292
+ \newcommand\bibpunct[7][, ]%
293
+ {\gdef\NAT@open{#2}\gdef\NAT@close{#3}\gdef
294
+ \NAT@sep{#4}\global\NAT@numbersfalse
295
+ \ifx #5n\global\NAT@numberstrue\global\NAT@superfalse
296
+ \else
297
+ \ifx #5s\global\NAT@numberstrue\global\NAT@supertrue
298
+ \fi\fi
299
+ \gdef\NAT@aysep{#6}\gdef\NAT@yrsep{#7}%
300
+ \gdef\NAT@cmt{#1}%
301
+ \NAT@@setcites
302
+ }
303
+ \newcommand\setcitestyle[1]{
304
+ \@for\@tempa:=#1\do
305
+ {\def\@tempb{round}\ifx\@tempa\@tempb
306
+ \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
307
+ \def\@tempb{square}\ifx\@tempa\@tempb
308
+ \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
309
+ \def\@tempb{angle}\ifx\@tempa\@tempb
310
+ \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
311
+ \def\@tempb{curly}\ifx\@tempa\@tempb
312
+ \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
313
+ \def\@tempb{semicolon}\ifx\@tempa\@tempb
314
+ \renewcommand\NAT@sep{;}\fi
315
+ \def\@tempb{colon}\ifx\@tempa\@tempb
316
+ \renewcommand\NAT@sep{;}\fi
317
+ \def\@tempb{comma}\ifx\@tempa\@tempb
318
+ \renewcommand\NAT@sep{,}\fi
319
+ \def\@tempb{authoryear}\ifx\@tempa\@tempb
320
+ \NAT@numbersfalse\fi
321
+ \def\@tempb{numbers}\ifx\@tempa\@tempb
322
+ \NAT@numberstrue\NAT@superfalse\fi
323
+ \def\@tempb{super}\ifx\@tempa\@tempb
324
+ \NAT@numberstrue\NAT@supertrue\fi
325
+ \expandafter\NAT@find@eq\@tempa=\relax\@nil
326
+ \if\@tempc\relax\else
327
+ \expandafter\NAT@rem@eq\@tempc
328
+ \def\@tempb{open}\ifx\@tempa\@tempb
329
+ \xdef\NAT@open{\@tempc}\fi
330
+ \def\@tempb{close}\ifx\@tempa\@tempb
331
+ \xdef\NAT@close{\@tempc}\fi
332
+ \def\@tempb{aysep}\ifx\@tempa\@tempb
333
+ \xdef\NAT@aysep{\@tempc}\fi
334
+ \def\@tempb{yysep}\ifx\@tempa\@tempb
335
+ \xdef\NAT@yrsep{\@tempc}\fi
336
+ \def\@tempb{notesep}\ifx\@tempa\@tempb
337
+ \xdef\NAT@cmt{\@tempc}\fi
338
+ \def\@tempb{citesep}\ifx\@tempa\@tempb
339
+ \xdef\NAT@sep{\@tempc}\fi
340
+ \fi
341
+ }%
342
+ \NAT@@setcites
343
+ }
344
+ \def\NAT@find@eq#1=#2\@nil{\def\@tempa{#1}\def\@tempc{#2}}
345
+ \def\NAT@rem@eq#1={\def\@tempc{#1}}
346
+ \def\NAT@@setcites{\global\let\bibstyle\@gobble}
347
+ \AtBeginDocument{\let\NAT@@setcites\NAT@set@cites}
348
+ \newcommand\NAT@open{(} \newcommand\NAT@close{)}
349
+ \newcommand\NAT@sep{;}
350
+ \ProcessOptions
351
+ \newcommand\NAT@aysep{,} \newcommand\NAT@yrsep{,}
352
+ \newcommand\NAT@cmt{, }
353
+ \newcommand\NAT@cite%
354
+ [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi
355
+ #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup}
356
+ \newcommand\NAT@citenum%
357
+ [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi
358
+ #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup}
359
+ \newcommand\NAT@citesuper[3]{\ifNAT@swa
360
+ \if*#2*\else#2\NAT@spacechar\fi
361
+ \unskip\kern\p@\textsuperscript{\NAT@@open#1\NAT@@close}%
362
+ \if*#3*\else\NAT@spacechar#3\fi\else #1\fi\endgroup}
363
+ \providecommand\textsuperscript[1]{\mbox{$^{\mbox{\scriptsize#1}}$}}
364
+ \begingroup \catcode`\_=8
365
+ \gdef\NAT@ifcat@num#1{%
366
+ \ifcat_\ifnum\z@<0#1_\else A\fi
367
+ \expandafter\@firstoftwo
368
+ \else
369
+ \expandafter\@secondoftwo
370
+ \fi
371
+ }%
372
+ \endgroup
373
+ \providecommand\@firstofone[1]{#1}
374
+ \newcommand\NAT@citexnum{}
375
+ \def\NAT@citexnum[#1][#2]#3{%
376
+ \NAT@reset@parser
377
+ \NAT@sort@cites{#3}%
378
+ \NAT@reset@citea
379
+ \@cite{\def\NAT@num{-1}\let\NAT@last@yr\relax\let\NAT@nm\@empty
380
+ \@for\@citeb:=\NAT@cite@list\do
381
+ {\@safe@activestrue
382
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
383
+ \@safe@activesfalse
384
+ \@ifundefined{b@\@citeb\@extra@b@citeb}{%
385
+ {\reset@font\bfseries?}
386
+ \NAT@citeundefined\PackageWarning{natbib}%
387
+ {Citation `\@citeb' on page \thepage \space undefined}}%
388
+ {\let\NAT@last@num\NAT@num\let\NAT@last@nm\NAT@nm
389
+ \NAT@parse{\@citeb}%
390
+ \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{%
391
+ \let\NAT@name=\NAT@all@names
392
+ \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}%
393
+ \fi
394
+ \ifNAT@full\let\NAT@nm\NAT@all@names\else
395
+ \let\NAT@nm\NAT@name\fi
396
+ \ifNAT@swa
397
+ \@ifnum{\NAT@ctype>\@ne}{%
398
+ \@citea
399
+ \NAT@hyper@{\@ifnum{\NAT@ctype=\tw@}{\NAT@test{\NAT@ctype}}{\NAT@alias}}%
400
+ }{%
401
+ \@ifnum{\NAT@cmprs>\z@}{%
402
+ \NAT@ifcat@num\NAT@num
403
+ {\let\NAT@nm=\NAT@num}%
404
+ {\def\NAT@nm{-2}}%
405
+ \NAT@ifcat@num\NAT@last@num
406
+ {\@tempcnta=\NAT@last@num\relax}%
407
+ {\@tempcnta\m@ne}%
408
+ \@ifnum{\NAT@nm=\@tempcnta}{%
409
+ \@ifnum{\NAT@merge>\@ne}{}{\NAT@last@yr@mbox}%
410
+ }{%
411
+ \advance\@tempcnta by\@ne
412
+ \@ifnum{\NAT@nm=\@tempcnta}{%
413
+ \ifx\NAT@last@yr\relax
414
+ \def@NAT@last@yr{\@citea}%
415
+ \else
416
+ \def@NAT@last@yr{--\NAT@penalty}%
417
+ \fi
418
+ }{%
419
+ \NAT@last@yr@mbox
420
+ }%
421
+ }%
422
+ }{%
423
+ \@tempswatrue
424
+ \@ifnum{\NAT@merge>\@ne}{\@ifnum{\NAT@last@num=\NAT@num\relax}{\@tempswafalse}{}}{}%
425
+ \if@tempswa\NAT@citea@mbox\fi
426
+ }%
427
+ }%
428
+ \NAT@def@citea
429
+ \else
430
+ \ifcase\NAT@ctype
431
+ \ifx\NAT@last@nm\NAT@nm \NAT@yrsep\NAT@penalty\NAT@space\else
432
+ \@citea \NAT@test{\@ne}\NAT@spacechar\NAT@mbox{\NAT@super@kern\NAT@@open}%
433
+ \fi
434
+ \if*#1*\else#1\NAT@spacechar\fi
435
+ \NAT@mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}%
436
+ \NAT@def@citea@box
437
+ \or
438
+ \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}%
439
+ \or
440
+ \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}%
441
+ \or
442
+ \NAT@hyper@citea@space\NAT@alias
443
+ \fi
444
+ \fi
445
+ }%
446
+ }%
447
+ \@ifnum{\NAT@cmprs>\z@}{\NAT@last@yr}{}%
448
+ \ifNAT@swa\else
449
+ \@ifnum{\NAT@ctype=\z@}{%
450
+ \if*#2*\else\NAT@cmt#2\fi
451
+ }{}%
452
+ \NAT@mbox{\NAT@@close}%
453
+ \fi
454
+ }{#1}{#2}%
455
+ }%
456
+ \def\NAT@citea@mbox{%
457
+ \@citea\mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}%
458
+ }%
459
+ \def\NAT@hyper@#1{%
460
+ \hyper@natlinkstart{\@citeb\@extra@b@citeb}#1\hyper@natlinkend
461
+ }%
462
+ \def\NAT@hyper@citea#1{%
463
+ \@citea
464
+ \NAT@hyper@{#1}%
465
+ \NAT@def@citea
466
+ }%
467
+ \def\NAT@hyper@citea@space#1{%
468
+ \@citea
469
+ \NAT@hyper@{#1}%
470
+ \NAT@def@citea@space
471
+ }%
472
+ \def\def@NAT@last@yr#1{%
473
+ \protected@edef\NAT@last@yr{%
474
+ #1%
475
+ \noexpand\mbox{%
476
+ \noexpand\hyper@natlinkstart{\@citeb\@extra@b@citeb}%
477
+ {\noexpand\citenumfont{\NAT@num}}%
478
+ \noexpand\hyper@natlinkend
479
+ }%
480
+ }%
481
+ }%
482
+ \def\NAT@last@yr@mbox{%
483
+ \NAT@last@yr\let\NAT@last@yr\relax
484
+ \NAT@citea@mbox
485
+ }%
486
+ \newcommand\NAT@test[1]{%
487
+ \@ifnum{#1=\@ne}{%
488
+ \ifx\NAT@nm\NAT@noname
489
+ \begingroup\reset@font\bfseries(author?)\endgroup
490
+ \PackageWarning{natbib}{%
491
+ Author undefined for citation`\@citeb' \MessageBreak on page \thepage%
492
+ }%
493
+ \else \NAT@nm
494
+ \fi
495
+ }{%
496
+ \if\relax\NAT@date\relax
497
+ \begingroup\reset@font\bfseries(year?)\endgroup
498
+ \PackageWarning{natbib}{%
499
+ Year undefined for citation`\@citeb' \MessageBreak on page \thepage%
500
+ }%
501
+ \else \NAT@date
502
+ \fi
503
+ }%
504
+ }%
505
+ \let\citenumfont=\@empty
506
+ \newcommand\NAT@citex{}
507
+ \def\NAT@citex%
508
+ [#1][#2]#3{%
509
+ \NAT@reset@parser
510
+ \NAT@sort@cites{#3}%
511
+ \NAT@reset@citea
512
+ \@cite{\let\NAT@nm\@empty\let\NAT@year\@empty
513
+ \@for\@citeb:=\NAT@cite@list\do
514
+ {\@safe@activestrue
515
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
516
+ \@safe@activesfalse
517
+ \@ifundefined{b@\@citeb\@extra@b@citeb}{\@citea%
518
+ {\reset@font\bfseries ?}\NAT@citeundefined
519
+ \PackageWarning{natbib}%
520
+ {Citation `\@citeb' on page \thepage \space undefined}\def\NAT@date{}}%
521
+ {\let\NAT@last@nm=\NAT@nm\let\NAT@last@yr=\NAT@year
522
+ \NAT@parse{\@citeb}%
523
+ \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{%
524
+ \let\NAT@name=\NAT@all@names
525
+ \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}%
526
+ \fi
527
+ \ifNAT@full\let\NAT@nm\NAT@all@names\else
528
+ \let\NAT@nm\NAT@name\fi
529
+ \ifNAT@swa\ifcase\NAT@ctype
530
+ \if\relax\NAT@date\relax
531
+ \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}\NAT@date}%
532
+ \else
533
+ \ifx\NAT@last@nm\NAT@nm\NAT@yrsep
534
+ \ifx\NAT@last@yr\NAT@year
535
+ \def\NAT@temp{{?}}%
536
+ \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}%
537
+ {Multiple citation on page \thepage: same authors and
538
+ year\MessageBreak without distinguishing extra
539
+ letter,\MessageBreak appears as question mark}\fi
540
+ \NAT@hyper@{\NAT@exlab}%
541
+ \else\unskip\NAT@spacechar
542
+ \NAT@hyper@{\NAT@date}%
543
+ \fi
544
+ \else
545
+ \@citea\NAT@hyper@{%
546
+ \NAT@nmfmt{\NAT@nm}%
547
+ \hyper@natlinkbreak{%
548
+ \NAT@aysep\NAT@spacechar}{\@citeb\@extra@b@citeb
549
+ }%
550
+ \NAT@date
551
+ }%
552
+ \fi
553
+ \fi
554
+ \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
555
+ \or\@citea\NAT@hyper@{\NAT@date}%
556
+ \or\@citea\NAT@hyper@{\NAT@alias}%
557
+ \fi \NAT@def@citea
558
+ \else
559
+ \ifcase\NAT@ctype
560
+ \if\relax\NAT@date\relax
561
+ \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
562
+ \else
563
+ \ifx\NAT@last@nm\NAT@nm\NAT@yrsep
564
+ \ifx\NAT@last@yr\NAT@year
565
+ \def\NAT@temp{{?}}%
566
+ \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}%
567
+ {Multiple citation on page \thepage: same authors and
568
+ year\MessageBreak without distinguishing extra
569
+ letter,\MessageBreak appears as question mark}\fi
570
+ \NAT@hyper@{\NAT@exlab}%
571
+ \else
572
+ \unskip\NAT@spacechar
573
+ \NAT@hyper@{\NAT@date}%
574
+ \fi
575
+ \else
576
+ \@citea\NAT@hyper@{%
577
+ \NAT@nmfmt{\NAT@nm}%
578
+ \hyper@natlinkbreak{\NAT@spacechar\NAT@@open\if*#1*\else#1\NAT@spacechar\fi}%
579
+ {\@citeb\@extra@b@citeb}%
580
+ \NAT@date
581
+ }%
582
+ \fi
583
+ \fi
584
+ \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
585
+ \or\@citea\NAT@hyper@{\NAT@date}%
586
+ \or\@citea\NAT@hyper@{\NAT@alias}%
587
+ \fi
588
+ \if\relax\NAT@date\relax
589
+ \NAT@def@citea
590
+ \else
591
+ \NAT@def@citea@close
592
+ \fi
593
+ \fi
594
+ }}\ifNAT@swa\else\if*#2*\else\NAT@cmt#2\fi
595
+ \if\relax\NAT@date\relax\else\NAT@@close\fi\fi}{#1}{#2}}
596
+ \def\NAT@spacechar{\ }%
597
+ \def\NAT@separator{\NAT@sep\NAT@penalty}%
598
+ \def\NAT@reset@citea{\c@NAT@ctr\@ne\let\@citea\@empty}%
599
+ \def\NAT@def@citea{\def\@citea{\NAT@separator\NAT@space}}%
600
+ \def\NAT@def@citea@space{\def\@citea{\NAT@separator\NAT@spacechar}}%
601
+ \def\NAT@def@citea@close{\def\@citea{\NAT@@close\NAT@separator\NAT@space}}%
602
+ \def\NAT@def@citea@box{\def\@citea{\NAT@mbox{\NAT@@close}\NAT@separator\NAT@spacechar}}%
603
+ \newif\ifNAT@par \NAT@partrue
604
+ \newcommand\NAT@@open{\ifNAT@par\NAT@open\fi}
605
+ \newcommand\NAT@@close{\ifNAT@par\NAT@close\fi}
606
+ \newcommand\NAT@alias{\@ifundefined{al@\@citeb\@extra@b@citeb}{%
607
+ {\reset@font\bfseries(alias?)}\PackageWarning{natbib}
608
+ {Alias undefined for citation `\@citeb'
609
+ \MessageBreak on page \thepage}}{\@nameuse{al@\@citeb\@extra@b@citeb}}}
610
+ \let\NAT@up\relax
611
+ \newcommand\NAT@Up[1]{{\let\protect\@unexpandable@protect\let~\relax
612
+ \expandafter\NAT@deftemp#1}\expandafter\NAT@UP\NAT@temp}
613
+ \newcommand\NAT@deftemp[1]{\xdef\NAT@temp{#1}}
614
+ \newcommand\NAT@UP[1]{\let\@tempa\NAT@UP\ifcat a#1\MakeUppercase{#1}%
615
+ \let\@tempa\relax\else#1\fi\@tempa}
616
+ \newcommand\shortcites[1]{%
617
+ \@bsphack\@for\@citeb:=#1\do
618
+ {\@safe@activestrue
619
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
620
+ \@safe@activesfalse
621
+ \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}\@esphack}
622
+ \newcommand\NAT@biblabel[1]{\hfill}
623
+ \newcommand\NAT@biblabelnum[1]{\bibnumfmt{#1}}
624
+ \let\bibnumfmt\@empty
625
+ \providecommand\@biblabel[1]{[#1]}
626
+ \AtBeginDocument{\ifx\bibnumfmt\@empty\let\bibnumfmt\@biblabel\fi}
627
+ \newcommand\NAT@bibsetnum[1]{\settowidth\labelwidth{\@biblabel{#1}}%
628
+ \setlength{\leftmargin}{\labelwidth}\addtolength{\leftmargin}{\labelsep}%
629
+ \setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@}%
630
+ \ifNAT@openbib
631
+ \addtolength{\leftmargin}{\bibindent}%
632
+ \setlength{\itemindent}{-\bibindent}%
633
+ \setlength{\listparindent}{\itemindent}%
634
+ \setlength{\parsep}{0pt}%
635
+ \fi
636
+ }
637
+ \newlength{\bibhang}
638
+ \setlength{\bibhang}{1em}
639
+ \newlength{\bibsep}
640
+ {\@listi \global\bibsep\itemsep \global\advance\bibsep by\parsep}
641
+
642
+ \newcommand\NAT@bibsetup%
643
+ [1]{\setlength{\leftmargin}{\bibhang}\setlength{\itemindent}{-\leftmargin}%
644
+ \setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@}}
645
+ \newcommand\NAT@set@cites{%
646
+ \ifNAT@numbers
647
+ \ifNAT@super \let\@cite\NAT@citesuper
648
+ \def\NAT@mbox##1{\unskip\nobreak\textsuperscript{##1}}%
649
+ \let\citeyearpar=\citeyear
650
+ \let\NAT@space\relax
651
+ \def\NAT@super@kern{\kern\p@}%
652
+ \else
653
+ \let\NAT@mbox=\mbox
654
+ \let\@cite\NAT@citenum
655
+ \let\NAT@space\NAT@spacechar
656
+ \let\NAT@super@kern\relax
657
+ \fi
658
+ \let\@citex\NAT@citexnum
659
+ \let\@biblabel\NAT@biblabelnum
660
+ \let\@bibsetup\NAT@bibsetnum
661
+ \renewcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@num\NAT@close}%
662
+ \def\natexlab##1{}%
663
+ \def\NAT@penalty{\penalty\@m}%
664
+ \else
665
+ \let\@cite\NAT@cite
666
+ \let\@citex\NAT@citex
667
+ \let\@biblabel\NAT@biblabel
668
+ \let\@bibsetup\NAT@bibsetup
669
+ \let\NAT@space\NAT@spacechar
670
+ \let\NAT@penalty\@empty
671
+ \renewcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@date\NAT@close}%
672
+ \def\natexlab##1{##1}%
673
+ \fi}
674
+ \AtBeginDocument{\NAT@set@cites}
675
+ \AtBeginDocument{\ifx\SK@def\@undefined\else
676
+ \ifx\SK@cite\@empty\else
677
+ \SK@def\@citex[#1][#2]#3{\SK@\SK@@ref{#3}\SK@@citex[#1][#2]{#3}}\fi
678
+ \ifx\SK@citeauthor\@undefined\def\HAR@checkdef{}\else
679
+ \let\citeauthor\SK@citeauthor
680
+ \let\citefullauthor\SK@citefullauthor
681
+ \let\citeyear\SK@citeyear\fi
682
+ \fi}
683
+ \newif\ifNAT@full\NAT@fullfalse
684
+ \newif\ifNAT@swa
685
+ \DeclareRobustCommand\citet
686
+ {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@partrue
687
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
688
+ \newcommand\NAT@citetp{\@ifnextchar[{\NAT@@citetp}{\NAT@@citetp[]}}
689
+ \newcommand\NAT@@citetp{}
690
+ \def\NAT@@citetp[#1]{\@ifnextchar[{\@citex[#1]}{\@citex[][#1]}}
691
+ \DeclareRobustCommand\citep
692
+ {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@partrue
693
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
694
+ \DeclareRobustCommand\cite
695
+ {\begingroup\let\NAT@ctype\z@\NAT@partrue\NAT@swatrue
696
+ \@ifstar{\NAT@fulltrue\NAT@cites}{\NAT@fullfalse\NAT@cites}}
697
+ \newcommand\NAT@cites{\@ifnextchar [{\NAT@@citetp}{%
698
+ \ifNAT@numbers\else
699
+ \NAT@swafalse
700
+ \fi
701
+ \NAT@@citetp[]}}
702
+ \DeclareRobustCommand\citealt
703
+ {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@parfalse
704
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
705
+ \DeclareRobustCommand\citealp
706
+ {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse
707
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
708
+ \DeclareRobustCommand\citenum
709
+ {\begingroup
710
+ \NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse\let\textsuperscript\NAT@spacechar
711
+ \NAT@citexnum[][]}
712
+ \DeclareRobustCommand\citeauthor
713
+ {\begingroup\NAT@swafalse\let\NAT@ctype\@ne\NAT@parfalse
714
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
715
+ \DeclareRobustCommand\Citet
716
+ {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@partrue
717
+ \let\NAT@up\NAT@Up
718
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
719
+ \DeclareRobustCommand\Citep
720
+ {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@partrue
721
+ \let\NAT@up\NAT@Up
722
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
723
+ \DeclareRobustCommand\Citealt
724
+ {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@parfalse
725
+ \let\NAT@up\NAT@Up
726
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
727
+ \DeclareRobustCommand\Citealp
728
+ {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse
729
+ \let\NAT@up\NAT@Up
730
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
731
+ \DeclareRobustCommand\Citeauthor
732
+ {\begingroup\NAT@swafalse\let\NAT@ctype\@ne\NAT@parfalse
733
+ \let\NAT@up\NAT@Up
734
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
735
+ \DeclareRobustCommand\citeyear
736
+ {\begingroup\NAT@swafalse\let\NAT@ctype\tw@\NAT@parfalse\NAT@citetp}
737
+ \DeclareRobustCommand\citeyearpar
738
+ {\begingroup\NAT@swatrue\let\NAT@ctype\tw@\NAT@partrue\NAT@citetp}
739
+ \newcommand\citetext[1]{\NAT@open#1\NAT@close}
740
+ \DeclareRobustCommand\citefullauthor
741
+ {\citeauthor*}
742
+ \newcommand\defcitealias[2]{%
743
+ \@ifundefined{al@#1\@extra@b@citeb}{}
744
+ {\PackageWarning{natbib}{Overwriting existing alias for citation #1}}
745
+ \@namedef{al@#1\@extra@b@citeb}{#2}}
746
+ \DeclareRobustCommand\citetalias{\begingroup
747
+ \NAT@swafalse\let\NAT@ctype\thr@@\NAT@parfalse\NAT@citetp}
748
+ \DeclareRobustCommand\citepalias{\begingroup
749
+ \NAT@swatrue\let\NAT@ctype\thr@@\NAT@partrue\NAT@citetp}
750
+ \renewcommand\nocite[1]{\@bsphack
751
+ \@for\@citeb:=#1\do{%
752
+ \@safe@activestrue
753
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
754
+ \@safe@activesfalse
755
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
756
+ \if*\@citeb\else
757
+ \@ifundefined{b@\@citeb\@extra@b@citeb}{%
758
+ \NAT@citeundefined \PackageWarning{natbib}%
759
+ {Citation `\@citeb' undefined}}{}\fi}%
760
+ \@esphack}
761
+ \newcommand\NAT@parse[1]{%
762
+ \begingroup
763
+ \let\protect=\@unexpandable@protect
764
+ \let~\relax
765
+ \let\active@prefix=\@gobble
766
+ \edef\NAT@temp{\csname b@#1\@extra@b@citeb\endcsname}%
767
+ \aftergroup\NAT@split
768
+ \expandafter
769
+ \endgroup
770
+ \NAT@temp{}{}{}{}{}@@%
771
+ \expandafter\NAT@parse@date\NAT@date??????@@%
772
+ \ifciteindex\NAT@index\fi
773
+ }%
774
+ \def\NAT@split#1#2#3#4#5@@{%
775
+ \gdef\NAT@num{#1}\gdef\NAT@name{#3}\gdef\NAT@date{#2}%
776
+ \gdef\NAT@all@names{#4}%
777
+ \ifx\NAT@num\@empty\gdef\NAT@num{0}\fi
778
+ \ifx\NAT@noname\NAT@all@names \gdef\NAT@all@names{#3}\fi
779
+ }%
780
+ \def\NAT@reset@parser{%
781
+ \global\let\NAT@num\@empty
782
+ \global\let\NAT@name\@empty
783
+ \global\let\NAT@date\@empty
784
+ \global\let\NAT@all@names\@empty
785
+ }%
786
+ \newcommand\NAT@parse@date{}
787
+ \def\NAT@parse@date#1#2#3#4#5#6@@{%
788
+ \ifnum\the\catcode`#1=11\def\NAT@year{}\def\NAT@exlab{#1}\else
789
+ \ifnum\the\catcode`#2=11\def\NAT@year{#1}\def\NAT@exlab{#2}\else
790
+ \ifnum\the\catcode`#3=11\def\NAT@year{#1#2}\def\NAT@exlab{#3}\else
791
+ \ifnum\the\catcode`#4=11\def\NAT@year{#1#2#3}\def\NAT@exlab{#4}\else
792
+ \def\NAT@year{#1#2#3#4}\def\NAT@exlab{{#5}}\fi\fi\fi\fi}
793
+ \newcommand\NAT@index{}
794
+ \let\NAT@makeindex=\makeindex
795
+ \renewcommand\makeindex{\NAT@makeindex
796
+ \renewcommand\NAT@index{\@bsphack\begingroup
797
+ \def~{\string~}\@wrindex{\NAT@idxtxt}}}
798
+ \newcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@date\NAT@close}
799
+ \@ifxundefined\@indexfile{}{\let\NAT@makeindex\relax\makeindex}
800
+ \newif\ifciteindex \citeindexfalse
801
+ \newcommand\citeindextype{default}
802
+ \newcommand\NAT@index@alt{{\let\protect=\noexpand\let~\relax
803
+ \xdef\NAT@temp{\NAT@idxtxt}}\expandafter\NAT@exp\NAT@temp\@nil}
804
+ \newcommand\NAT@exp{}
805
+ \def\NAT@exp#1\@nil{\index[\citeindextype]{#1}}
806
+
807
+ \AtBeginDocument{%
808
+ \@ifpackageloaded{index}{\let\NAT@index=\NAT@index@alt}{}}
809
+ \newcommand\NAT@ifcmd{\futurelet\NAT@temp\NAT@ifxcmd}
810
+ \newcommand\NAT@ifxcmd{\ifx\NAT@temp\relax\else\expandafter\NAT@bare\fi}
811
+ \def\NAT@bare#1(#2)#3(@)#4\@nil#5{%
812
+ \if @#2
813
+ \expandafter\NAT@apalk#1, , \@nil{#5}%
814
+ \else
815
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{#3}{#5}%
816
+ \fi
817
+ }
818
+ \newcommand\NAT@wrout[5]{%
819
+ \if@filesw
820
+ {\let\protect\noexpand\let~\relax
821
+ \immediate
822
+ \write\@auxout{\string\bibcite{#5}{{#1}{#2}{{#3}}{{#4}}}}}\fi
823
+ \ignorespaces}
824
+ \def\NAT@noname{{}}
825
+ \renewcommand\bibitem{\@ifnextchar[{\@lbibitem}{\@lbibitem[]}}%
826
+ \let\NAT@bibitem@first@sw\@secondoftwo
827
+ \def\@lbibitem[#1]#2{%
828
+ \if\relax\@extra@b@citeb\relax\else
829
+ \@ifundefined{br@#2\@extra@b@citeb}{}{%
830
+ \@namedef{br@#2}{\@nameuse{br@#2\@extra@b@citeb}}%
831
+ }%
832
+ \fi
833
+ \@ifundefined{b@#2\@extra@b@citeb}{%
834
+ \def\NAT@num{}%
835
+ }{%
836
+ \NAT@parse{#2}%
837
+ }%
838
+ \def\NAT@tmp{#1}%
839
+ \expandafter\let\expandafter\bibitemOpen\csname NAT@b@open@#2\endcsname
840
+ \expandafter\let\expandafter\bibitemShut\csname NAT@b@shut@#2\endcsname
841
+ \@ifnum{\NAT@merge>\@ne}{%
842
+ \NAT@bibitem@first@sw{%
843
+ \@firstoftwo
844
+ }{%
845
+ \@ifundefined{NAT@b*@#2}{%
846
+ \@firstoftwo
847
+ }{%
848
+ \expandafter\def\expandafter\NAT@num\expandafter{\the\c@NAT@ctr}%
849
+ \@secondoftwo
850
+ }%
851
+ }%
852
+ }{%
853
+ \@firstoftwo
854
+ }%
855
+ {%
856
+ \global\advance\c@NAT@ctr\@ne
857
+ \@ifx{\NAT@tmp\@empty}{\@firstoftwo}{%
858
+ \@secondoftwo
859
+ }%
860
+ {%
861
+ \expandafter\def\expandafter\NAT@num\expandafter{\the\c@NAT@ctr}%
862
+ \global\NAT@stdbsttrue
863
+ }{}%
864
+ \bibitem@fin
865
+ \item[\hfil\NAT@anchor{#2}{\NAT@num}]%
866
+ \global\let\NAT@bibitem@first@sw\@secondoftwo
867
+ \NAT@bibitem@init
868
+ }%
869
+ {%
870
+ \NAT@anchor{#2}{}%
871
+ \NAT@bibitem@cont
872
+ \bibitem@fin
873
+ }%
874
+ \@ifx{\NAT@tmp\@empty}{%
875
+ \NAT@wrout{\the\c@NAT@ctr}{}{}{}{#2}%
876
+ }{%
877
+ \expandafter\NAT@ifcmd\NAT@tmp(@)(@)\@nil{#2}%
878
+ }%
879
+ }%
880
+ \def\bibitem@fin{%
881
+ \@ifxundefined\@bibstop{}{\csname bibitem@\@bibstop\endcsname}%
882
+ }%
883
+ \def\NAT@bibitem@init{%
884
+ \let\@bibstop\@undefined
885
+ }%
886
+ \def\NAT@bibitem@cont{%
887
+ \let\bibitem@Stop\bibitemStop
888
+ \let\bibitem@NoStop\bibitemContinue
889
+ }%
890
+ \def\BibitemOpen{%
891
+ \bibitemOpen
892
+ }%
893
+ \def\BibitemShut#1{%
894
+ \bibitemShut
895
+ \def\@bibstop{#1}%
896
+ \let\bibitem@Stop\bibitemStop
897
+ \let\bibitem@NoStop\bibitemNoStop
898
+ }%
899
+ \def\bibitemStop{}%
900
+ \def\bibitemNoStop{.\spacefactor\@mmm\space}%
901
+ \def\bibitemContinue{\spacefactor\@mmm\space}%
902
+ \mathchardef\@mmm=3000 %
903
+ \providecommand{\bibAnnote}[3]{%
904
+ \BibitemShut{#1}%
905
+ \def\@tempa{#3}\@ifx{\@tempa\@empty}{}{%
906
+ \begin{quotation}\noindent
907
+ \textsc{Key:}\ #2\\\textsc{Annotation:}\ \@tempa
908
+ \end{quotation}%
909
+ }%
910
+ }%
911
+ \providecommand{\bibAnnoteFile}[2]{%
912
+ \IfFileExists{#2}{%
913
+ \bibAnnote{#1}{#2}{\input{#2}}%
914
+ }{%
915
+ \bibAnnote{#1}{#2}{}%
916
+ }%
917
+ }%
918
+ \let\bibitemOpen\relax
919
+ \let\bibitemShut\relax
920
+ \def\bibfield{\@ifnum{\NAT@merge>\tw@}{\@bibfield}{\@secondoftwo}}%
921
+ \def\@bibfield#1#2{%
922
+ \begingroup
923
+ \let\Doi\@gobble
924
+ \let\bibinfo\relax
925
+ \let\restore@protect\@empty
926
+ \protected@edef\@tempa{#2}%
927
+ \aftergroup\def\aftergroup\@tempa
928
+ \expandafter\endgroup\expandafter{\@tempa}%
929
+ \expandafter\@ifx\expandafter{\csname @bib#1\endcsname\@tempa}{%
930
+ \expandafter\let\expandafter\@tempa\csname @bib@X#1\endcsname
931
+ }{%
932
+ \expandafter\let\csname @bib#1\endcsname\@tempa
933
+ \expandafter\let\expandafter\@tempa\csname @bib@Y#1\endcsname
934
+ }%
935
+ \@ifx{\@tempa\relax}{\let\@tempa\@firstofone}{}%
936
+ \@tempa{#2}%
937
+ }%
938
+ \def\bibinfo#1{%
939
+ \expandafter\let\expandafter\@tempa\csname bibinfo@X@#1\endcsname
940
+ \@ifx{\@tempa\relax}{\@firstofone}{\@tempa}%
941
+ }%
942
+ \def\@bib@Xauthor#1{\let\@bib@Xjournal\@gobble}%
943
+ \def\@bib@Xjournal#1{\begingroup\let\bibinfo@X@journal\@bib@Z@journal#1\endgroup}%
944
+ \def\@bibibid@#1{\textit{ibid}.}%
945
+ \appdef\NAT@bibitem@init{%
946
+ \let\@bibauthor \@empty
947
+ \let\@bibjournal \@empty
948
+ \let\@bib@Z@journal\@bibibid@
949
+ }%
950
+ \ifx\SK@lbibitem\@undefined\else
951
+ \let\SK@lbibitem\@lbibitem
952
+ \def\@lbibitem[#1]#2{%
953
+ \SK@lbibitem[#1]{#2}\SK@\SK@@label{#2}\ignorespaces}\fi
954
+ \newif\ifNAT@stdbst \NAT@stdbstfalse
955
+
956
+ \AtEndDocument{%
957
+ \ifNAT@stdbst\if@filesw
958
+ \immediate\write\@auxout{%
959
+ \string\providecommand\string\NAT@force@numbers{}%
960
+ \string\NAT@force@numbers
961
+ }%
962
+ \fi\fi
963
+ }
964
+ \newcommand\NAT@force@numbers{%
965
+ \ifNAT@numbers\else
966
+ \PackageError{natbib}{Bibliography not compatible with author-year
967
+ citations.\MessageBreak
968
+ Press <return> to continue in numerical citation style}
969
+ {Check the bibliography entries for non-compliant syntax,\MessageBreak
970
+ or select author-year BibTeX style, e.g. plainnat}%
971
+ \global\NAT@numberstrue\fi}
972
+
973
+ \providecommand\bibcite{}
974
+ \renewcommand\bibcite[2]{%
975
+ \@ifundefined{b@#1\@extra@binfo}{\relax}{%
976
+ \NAT@citemultiple
977
+ \PackageWarningNoLine{natbib}{Citation `#1' multiply defined}%
978
+ }%
979
+ \global\@namedef{b@#1\@extra@binfo}{#2}%
980
+ }%
981
+ \AtEndDocument{\NAT@swatrue\let\bibcite\NAT@testdef}
982
+ \newcommand\NAT@testdef[2]{%
983
+ \def\NAT@temp{#2}%
984
+ \expandafter \ifx \csname b@#1\@extra@binfo\endcsname\NAT@temp
985
+ \else
986
+ \ifNAT@swa \NAT@swafalse
987
+ \PackageWarningNoLine{natbib}{%
988
+ Citation(s) may have changed.\MessageBreak
989
+ Rerun to get citations correct%
990
+ }%
991
+ \fi
992
+ \fi
993
+ }%
994
+ \newcommand\NAT@apalk{}
995
+ \def\NAT@apalk#1, #2, #3\@nil#4{%
996
+ \if\relax#2\relax
997
+ \global\NAT@stdbsttrue
998
+ \NAT@wrout{#1}{}{}{}{#4}%
999
+ \else
1000
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#4}%
1001
+ \fi
1002
+ }%
1003
+ \newcommand\citeauthoryear{}
1004
+ \def\citeauthoryear#1#2#3(@)(@)\@nil#4{%
1005
+ \if\relax#3\relax
1006
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#4}%
1007
+ \else
1008
+ \NAT@wrout{\the\c@NAT@ctr}{#3}{#2}{#1}{#4}%
1009
+ \fi
1010
+ }%
1011
+ \newcommand\citestarts{\NAT@open}%
1012
+ \newcommand\citeends{\NAT@close}%
1013
+ \newcommand\betweenauthors{and}%
1014
+ \newcommand\astroncite{}
1015
+ \def\astroncite#1#2(@)(@)\@nil#3{%
1016
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#3}%
1017
+ }%
1018
+ \newcommand\citename{}
1019
+ \def\citename#1#2(@)(@)\@nil#3{\expandafter\NAT@apalk#1#2, \@nil{#3}}
1020
+ \newcommand\harvarditem[4][]{%
1021
+ \if\relax#1\relax
1022
+ \bibitem[#2(#3)]{#4}%
1023
+ \else
1024
+ \bibitem[#1(#3)#2]{#4}%
1025
+ \fi
1026
+ }%
1027
+ \newcommand\harvardleft{\NAT@open}
1028
+ \newcommand\harvardright{\NAT@close}
1029
+ \newcommand\harvardyearleft{\NAT@open}
1030
+ \newcommand\harvardyearright{\NAT@close}
1031
+ \AtBeginDocument{\providecommand{\harvardand}{and}}
1032
+ \newcommand\harvardurl[1]{\textbf{URL:} \textit{#1}}
1033
+ \providecommand\bibsection{}
1034
+ \@ifundefined{chapter}{%
1035
+ \renewcommand\bibsection{%
1036
+ \section*{\refname\@mkboth{\MakeUppercase{\refname}}{\MakeUppercase{\refname}}}%
1037
+ }%
1038
+ }{%
1039
+ \@ifxundefined\NAT@sectionbib{%
1040
+ \renewcommand\bibsection{%
1041
+ \chapter*{\bibname\@mkboth{\MakeUppercase{\bibname}}{\MakeUppercase{\bibname}}}%
1042
+ }%
1043
+ }{%
1044
+ \renewcommand\bibsection{%
1045
+ \section*{\bibname\ifx\@mkboth\@gobbletwo\else\markright{\MakeUppercase{\bibname}}\fi}%
1046
+ }%
1047
+ }%
1048
+ }%
1049
+ \@ifclassloaded{amsart}{\renewcommand\bibsection{\section*{\refname}}}{}%
1050
+ \@ifclassloaded{amsbook}{\renewcommand\bibsection{\chapter*{\bibname}}}{}%
1051
+ \@ifxundefined\bib@heading{}{\let\bibsection\bib@heading}%
1052
+ \newcounter{NAT@ctr}
1053
+ \renewenvironment{thebibliography}[1]{%
1054
+ \bibsection
1055
+ \parindent\z@
1056
+ \bibpreamble
1057
+ \bibfont
1058
+ \list{\@biblabel{\the\c@NAT@ctr}}{\@bibsetup{#1}\global\c@NAT@ctr\z@}%
1059
+ \ifNAT@openbib
1060
+ \renewcommand\newblock{\par}%
1061
+ \else
1062
+ \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
1063
+ \fi
1064
+ \sloppy\clubpenalty4000\widowpenalty4000
1065
+ \sfcode`\.\@m
1066
+ \let\NAT@bibitem@first@sw\@firstoftwo
1067
+ \let\citeN\cite \let\shortcite\cite
1068
+ \let\citeasnoun\cite
1069
+ }{%
1070
+ \bibitem@fin
1071
+ \bibpostamble
1072
+ \def\@noitemerr{%
1073
+ \PackageWarning{natbib}{Empty `thebibliography' environment}%
1074
+ }%
1075
+ \endlist
1076
+ \bibcleanup
1077
+ }%
1078
+ \let\bibfont\@empty
1079
+ \let\bibpreamble\@empty
1080
+ \let\bibpostamble\@empty
1081
+ \def\bibcleanup{\vskip-\lastskip}%
1082
+ \providecommand\reset@font{\relax}
1083
+ \providecommand\bibname{Bibliography}
1084
+ \providecommand\refname{References}
1085
+ \newcommand\NAT@citeundefined{\gdef \NAT@undefined {%
1086
+ \PackageWarningNoLine{natbib}{There were undefined citations}}}
1087
+ \let \NAT@undefined \relax
1088
+ \newcommand\NAT@citemultiple{\gdef \NAT@multiple {%
1089
+ \PackageWarningNoLine{natbib}{There were multiply defined citations}}}
1090
+ \let \NAT@multiple \relax
1091
+ \AtEndDocument{\NAT@undefined\NAT@multiple}
1092
+ \providecommand\@mkboth[2]{}
1093
+ \providecommand\MakeUppercase{\uppercase}
1094
+ \providecommand{\@extra@b@citeb}{}
1095
+ \gdef\@extra@binfo{}
1096
+ \def\NAT@anchor#1#2{%
1097
+ \hyper@natanchorstart{#1\@extra@b@citeb}%
1098
+ \def\@tempa{#2}\@ifx{\@tempa\@empty}{}{\@biblabel{#2}}%
1099
+ \hyper@natanchorend
1100
+ }%
1101
+ \providecommand\hyper@natanchorstart[1]{}%
1102
+ \providecommand\hyper@natanchorend{}%
1103
+ \providecommand\hyper@natlinkstart[1]{}%
1104
+ \providecommand\hyper@natlinkend{}%
1105
+ \providecommand\hyper@natlinkbreak[2]{#1}%
1106
+ \AtBeginDocument{%
1107
+ \@ifpackageloaded{babel}{%
1108
+ \let\org@@citex\@citex}{}}
1109
+ \providecommand\@safe@activestrue{}%
1110
+ \providecommand\@safe@activesfalse{}%
1111
+
1112
+ \newcommand\NAT@sort@cites[1]{%
1113
+ \let\NAT@cite@list\@empty
1114
+ \@for\@citeb:=#1\do{\expandafter\NAT@star@cite\@citeb\@@}%
1115
+ \if@filesw
1116
+ \expandafter\immediate\expandafter\write\expandafter\@auxout
1117
+ \expandafter{\expandafter\string\expandafter\citation\expandafter{\NAT@cite@list}}%
1118
+ \fi
1119
+ \@ifnum{\NAT@sort>\z@}{%
1120
+ \expandafter\NAT@sort@cites@\expandafter{\NAT@cite@list}%
1121
+ }{}%
1122
+ }%
1123
+ \def\NAT@star@cite{%
1124
+ \let\NAT@star@sw\@secondoftwo
1125
+ \@ifnum{\NAT@merge>\z@}{%
1126
+ \@ifnextchar*{%
1127
+ \let\NAT@star@sw\@firstoftwo
1128
+ \NAT@star@cite@star
1129
+ }{%
1130
+ \NAT@star@cite@nostar
1131
+ }%
1132
+ }{%
1133
+ \NAT@star@cite@noextension
1134
+ }%
1135
+ }%
1136
+ \def\NAT@star@cite@star*{%
1137
+ \NAT@star@cite@nostar
1138
+ }%
1139
+ \def\NAT@star@cite@nostar{%
1140
+ \let\nat@keyopt@open\@empty
1141
+ \let\nat@keyopt@shut\@empty
1142
+ \@ifnextchar[{\NAT@star@cite@pre}{\NAT@star@cite@pre[]}%
1143
+ }%
1144
+ \def\NAT@star@cite@pre[#1]{%
1145
+ \def\nat@keyopt@open{#1}%
1146
+ \@ifnextchar[{\NAT@star@cite@post}{\NAT@star@cite@post[]}%
1147
+ }%
1148
+ \def\NAT@star@cite@post[#1]#2\@@{%
1149
+ \def\nat@keyopt@shut{#1}%
1150
+ \NAT@star@sw{\expandafter\global\expandafter\let\csname NAT@b*@#2\endcsname\@empty}{}%
1151
+ \NAT@cite@list@append{#2}%
1152
+ }%
1153
+ \def\NAT@star@cite@noextension#1\@@{%
1154
+ \let\nat@keyopt@open\@empty
1155
+ \let\nat@keyopt@shut\@empty
1156
+ \NAT@cite@list@append{#1}%
1157
+ }%
1158
+ \def\NAT@cite@list@append#1{%
1159
+ \edef\@citeb{\@firstofone#1\@empty}%
1160
+ \if@filesw\@ifxundefined\@cprwrite{}{\expandafter\@cprwrite\@citeb=}\fi
1161
+ \if\relax\nat@keyopt@open\relax\else
1162
+ \global\expandafter\let\csname NAT@b@open@\@citeb\endcsname\nat@keyopt@open
1163
+ \fi
1164
+ \if\relax\nat@keyopt@shut\relax\else
1165
+ \global\expandafter\let\csname NAT@b@shut@\@citeb\endcsname\nat@keyopt@shut
1166
+ \fi
1167
+ \toks@\expandafter{\NAT@cite@list}%
1168
+ \ifx\NAT@cite@list\@empty
1169
+ \@temptokena\expandafter{\@citeb}%
1170
+ \else
1171
+ \@temptokena\expandafter{\expandafter,\@citeb}%
1172
+ \fi
1173
+ \edef\NAT@cite@list{\the\toks@\the\@temptokena}%
1174
+ }%
1175
+ \newcommand\NAT@sort@cites@[1]{%
1176
+ \count@\z@
1177
+ \@tempcntb\m@ne
1178
+ \let\@celt\delimiter
1179
+ \def\NAT@num@list{}%
1180
+ \let\NAT@cite@list\@empty
1181
+ \let\NAT@nonsort@list\@empty
1182
+ \@for \@citeb:=#1\do{\NAT@make@cite@list}%
1183
+ \ifx\NAT@nonsort@list\@empty\else
1184
+ \protected@edef\NAT@cite@list{\NAT@cite@list\NAT@nonsort@list}%
1185
+ \fi
1186
+ \ifx\NAT@cite@list\@empty\else
1187
+ \protected@edef\NAT@cite@list{\expandafter\NAT@xcom\NAT@cite@list @@}%
1188
+ \fi
1189
+ }%
1190
+ \def\NAT@make@cite@list{%
1191
+ \advance\count@\@ne
1192
+ \@safe@activestrue
1193
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
1194
+ \@safe@activesfalse
1195
+ \@ifundefined{b@\@citeb\@extra@b@citeb}%
1196
+ {\def\NAT@num{A}}%
1197
+ {\NAT@parse{\@citeb}}%
1198
+ \NAT@ifcat@num\NAT@num
1199
+ {\@tempcnta\NAT@num \relax
1200
+ \@ifnum{\@tempcnta<\@tempcntb}{%
1201
+ \let\NAT@@cite@list=\NAT@cite@list
1202
+ \let\NAT@cite@list\@empty
1203
+ \begingroup\let\@celt=\NAT@celt\NAT@num@list\endgroup
1204
+ \protected@edef\NAT@num@list{%
1205
+ \expandafter\NAT@num@celt \NAT@num@list \@gobble @%
1206
+ }%
1207
+ }{%
1208
+ \protected@edef\NAT@num@list{\NAT@num@list \@celt{\NAT@num}}%
1209
+ \protected@edef\NAT@cite@list{\NAT@cite@list\@citeb,}%
1210
+ \@tempcntb\@tempcnta
1211
+ }%
1212
+ }%
1213
+ {\protected@edef\NAT@nonsort@list{\NAT@nonsort@list\@citeb,}}%
1214
+ }%
1215
+ \def\NAT@celt#1{%
1216
+ \@ifnum{#1>\@tempcnta}{%
1217
+ \xdef\NAT@cite@list{\NAT@cite@list\@citeb,\NAT@@cite@list}%
1218
+ \let\@celt\@gobble
1219
+ }{%
1220
+ \expandafter\def@NAT@cite@lists\NAT@@cite@list\@@
1221
+ }%
1222
+ }%
1223
+ \def\NAT@num@celt#1#2{%
1224
+ \ifx#1\@celt
1225
+ \@ifnum{#2>\@tempcnta}{%
1226
+ \@celt{\number\@tempcnta}%
1227
+ \@celt{#2}%
1228
+ }{%
1229
+ \@celt{#2}%
1230
+ \expandafter\NAT@num@celt
1231
+ }%
1232
+ \fi
1233
+ }%
1234
+ \def\def@NAT@cite@lists#1,#2\@@{%
1235
+ \xdef\NAT@cite@list{\NAT@cite@list#1,}%
1236
+ \xdef\NAT@@cite@list{#2}%
1237
+ }%
1238
+ \def\NAT@nextc#1,#2@@{#1,}
1239
+ \def\NAT@restc#1,#2{#2}
1240
+ \def\NAT@xcom#1,@@{#1}
1241
+ \InputIfFileExists{natbib.cfg}
1242
+ {\typeout{Local config file natbib.cfg used}}{}
1243
+ %%
1244
+ %% <<<<< End of generated file <<<<<<
1245
+ %%
1246
+ %% End of file `natbib.sty'.
latex_templates/ICLR2022/related works.tex ADDED
File without changes
latex_templates/ICLR2022/template.tex ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ \documentclass{article} % For LaTeX2e
2
+ \UseRawInputEncoding
3
+ \usepackage{graphicx}
4
+ \usepackage{booktabs}
5
+ \usepackage{iclr2022_conference, times}
6
+ \input{math_commands.tex}
7
+ \usepackage{hyperref}
8
+ \usepackage{url}
9
+ \usepackage{algorithm}
10
+ \usepackage{algpseudocode}
11
+
12
+ \title{TITLE}
13
+ \author{GPT-4}
14
+
15
+ \newcommand{\fix}{\marginpar{FIX}}
16
+ \newcommand{\new}{\marginpar{NEW}}
17
+
18
+ \begin{document}
19
+ \maketitle
20
+ \input{abstract.tex}
21
+ \input{introduction.tex}
22
+ \input{related works.tex}
23
+ \input{backgrounds.tex}
24
+ \input{methodology.tex}
25
+ \input{experiments.tex}
26
+ \input{conclusion.tex}
27
+
28
+ \bibliography{ref}
29
+ \bibliographystyle{iclr2022_conference}
30
+
31
+ %\appendix
32
+ %\section{Appendix}
33
+ %You may include other additional sections here.
34
+
35
+ \end{document}
latex_templates/Summary/abstract.tex ADDED
File without changes
latex_templates/Summary/backgrounds.tex ADDED
File without changes
latex_templates/Summary/conclusion.tex ADDED
File without changes
latex_templates/Summary/experiments.tex ADDED
File without changes
latex_templates/Summary/fancyhdr.sty ADDED
@@ -0,0 +1,485 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ % fancyhdr.sty version 3.2
2
+ % Fancy headers and footers for LaTeX.
3
+ % Piet van Oostrum,
4
+ % Dept of Computer and Information Sciences, University of Utrecht,
5
+ % Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands
6
+ % Telephone: +31 30 2532180. Email: piet@cs.uu.nl
7
+ % ========================================================================
8
+ % LICENCE:
9
+ % This file may be distributed under the terms of the LaTeX Project Public
10
+ % License, as described in lppl.txt in the base LaTeX distribution.
11
+ % Either version 1 or, at your option, any later version.
12
+ % ========================================================================
13
+ % MODIFICATION HISTORY:
14
+ % Sep 16, 1994
15
+ % version 1.4: Correction for use with \reversemargin
16
+ % Sep 29, 1994:
17
+ % version 1.5: Added the \iftopfloat, \ifbotfloat and \iffloatpage commands
18
+ % Oct 4, 1994:
19
+ % version 1.6: Reset single spacing in headers/footers for use with
20
+ % setspace.sty or doublespace.sty
21
+ % Oct 4, 1994:
22
+ % version 1.7: changed \let\@mkboth\markboth to
23
+ % \def\@mkboth{\protect\markboth} to make it more robust
24
+ % Dec 5, 1994:
25
+ % version 1.8: corrections for amsbook/amsart: define \@chapapp and (more
26
+ % importantly) use the \chapter/sectionmark definitions from ps@headings if
27
+ % they exist (which should be true for all standard classes).
28
+ % May 31, 1995:
29
+ % version 1.9: The proposed \renewcommand{\headrulewidth}{\iffloatpage...
30
+ % construction in the doc did not work properly with the fancyplain style.
31
+ % June 1, 1995:
32
+ % version 1.91: The definition of \@mkboth wasn't restored on subsequent
33
+ % \pagestyle{fancy}'s.
34
+ % June 1, 1995:
35
+ % version 1.92: The sequence \pagestyle{fancyplain} \pagestyle{plain}
36
+ % \pagestyle{fancy} would erroneously select the plain version.
37
+ % June 1, 1995:
38
+ % version 1.93: \fancypagestyle command added.
39
+ % Dec 11, 1995:
40
+ % version 1.94: suggested by Conrad Hughes <chughes@maths.tcd.ie>
41
+ % CJCH, Dec 11, 1995: added \footruleskip to allow control over footrule
42
+ % position (old hardcoded value of .3\normalbaselineskip is far too high
43
+ % when used with very small footer fonts).
44
+ % Jan 31, 1996:
45
+ % version 1.95: call \@normalsize in the reset code if that is defined,
46
+ % otherwise \normalsize.
47
+ % this is to solve a problem with ucthesis.cls, as this doesn't
48
+ % define \@currsize. Unfortunately for latex209 calling \normalsize doesn't
49
+ % work as this is optimized to do very little, so there \@normalsize should
50
+ % be called. Hopefully this code works for all versions of LaTeX known to
51
+ % mankind.
52
+ % April 25, 1996:
53
+ % version 1.96: initialize \headwidth to a magic (negative) value to catch
54
+ % most common cases that people change it before calling \pagestyle{fancy}.
55
+ % Note it can't be initialized when reading in this file, because
56
+ % \textwidth could be changed afterwards. This is quite probable.
57
+ % We also switch to \MakeUppercase rather than \uppercase and introduce a
58
+ % \nouppercase command for use in headers. and footers.
59
+ % May 3, 1996:
60
+ % version 1.97: Two changes:
61
+ % 1. Undo the change in version 1.8 (using the pagestyle{headings} defaults
62
+ % for the chapter and section marks. The current version of amsbook and
63
+ % amsart classes don't seem to need them anymore. Moreover the standard
64
+ % latex classes don't use \markboth if twoside isn't selected, and this is
65
+ % confusing as \leftmark doesn't work as expected.
66
+ % 2. include a call to \ps@empty in ps@@fancy. This is to solve a problem
67
+ % in the amsbook and amsart classes, that make global changes to \topskip,
68
+ % which are reset in \ps@empty. Hopefully this doesn't break other things.
69
+ % May 7, 1996:
70
+ % version 1.98:
71
+ % Added % after the line \def\nouppercase
72
+ % May 7, 1996:
73
+ % version 1.99: This is the alpha version of fancyhdr 2.0
74
+ % Introduced the new commands \fancyhead, \fancyfoot, and \fancyhf.
75
+ % Changed \headrulewidth, \footrulewidth, \footruleskip to
76
+ % macros rather than length parameters, In this way they can be
77
+ % conditionalized and they don't consume length registers. There is no need
78
+ % to have them as length registers unless you want to do calculations with
79
+ % them, which is unlikely. Note that this may make some uses of them
80
+ % incompatible (i.e. if you have a file that uses \setlength or \xxxx=)
81
+ % May 10, 1996:
82
+ % version 1.99a:
83
+ % Added a few more % signs
84
+ % May 10, 1996:
85
+ % version 1.99b:
86
+ % Changed the syntax of \f@nfor to be resistent to catcode changes of :=
87
+ % Removed the [1] from the defs of \lhead etc. because the parameter is
88
+ % consumed by the \@[xy]lhead etc. macros.
89
+ % June 24, 1997:
90
+ % version 1.99c:
91
+ % corrected \nouppercase to also include the protected form of \MakeUppercase
92
+ % \global added to manipulation of \headwidth.
93
+ % \iffootnote command added.
94
+ % Some comments added about \@fancyhead and \@fancyfoot.
95
+ % Aug 24, 1998
96
+ % version 1.99d
97
+ % Changed the default \ps@empty to \ps@@empty in order to allow
98
+ % \fancypagestyle{empty} redefinition.
99
+ % Oct 11, 2000
100
+ % version 2.0
101
+ % Added LPPL license clause.
102
+ %
103
+ % A check for \headheight is added. An errormessage is given (once) if the
104
+ % header is too large. Empty headers don't generate the error even if
105
+ % \headheight is very small or even 0pt.
106
+ % Warning added for the use of 'E' option when twoside option is not used.
107
+ % In this case the 'E' fields will never be used.
108
+ %
109
+ % Mar 10, 2002
110
+ % version 2.1beta
111
+ % New command: \fancyhfoffset[place]{length}
112
+ % defines offsets to be applied to the header/footer to let it stick into
113
+ % the margins (if length > 0).
114
+ % place is like in fancyhead, except that only E,O,L,R can be used.
115
+ % This replaces the old calculation based on \headwidth and the marginpar
116
+ % area.
117
+ % \headwidth will be dynamically calculated in the headers/footers when
118
+ % this is used.
119
+ %
120
+ % Mar 26, 2002
121
+ % version 2.1beta2
122
+ % \fancyhfoffset now also takes h,f as possible letters in the argument to
123
+ % allow the header and footer widths to be different.
124
+ % New commands \fancyheadoffset and \fancyfootoffset added comparable to
125
+ % \fancyhead and \fancyfoot.
126
+ % Errormessages and warnings have been made more informative.
127
+ %
128
+ % Dec 9, 2002
129
+ % version 2.1
130
+ % The defaults for \footrulewidth, \plainheadrulewidth and
131
+ % \plainfootrulewidth are changed from \z@skip to 0pt. In this way when
132
+ % someone inadvertantly uses \setlength to change any of these, the value
133
+ % of \z@skip will not be changed, rather an errormessage will be given.
134
+
135
+ % March 3, 2004
136
+ % Release of version 3.0
137
+
138
+ % Oct 7, 2004
139
+ % version 3.1
140
+ % Added '\endlinechar=13' to \fancy@reset to prevent problems with
141
+ % includegraphics in header when verbatiminput is active.
142
+
143
+ % March 22, 2005
144
+ % version 3.2
145
+ % reset \everypar (the real one) in \fancy@reset because spanish.ldf does
146
+ % strange things with \everypar between << and >>.
147
+
148
+ \def\ifancy@mpty#1{\def\temp@a{#1}\ifx\temp@a\@empty}
149
+
150
+ \def\fancy@def#1#2{\ifancy@mpty{#2}\fancy@gbl\def#1{\leavevmode}\else
151
+ \fancy@gbl\def#1{#2\strut}\fi}
152
+
153
+ \let\fancy@gbl\global
154
+
155
+ \def\@fancyerrmsg#1{%
156
+ \ifx\PackageError\undefined
157
+ \errmessage{#1}\else
158
+ \PackageError{Fancyhdr}{#1}{}\fi}
159
+ \def\@fancywarning#1{%
160
+ \ifx\PackageWarning\undefined
161
+ \errmessage{#1}\else
162
+ \PackageWarning{Fancyhdr}{#1}{}\fi}
163
+
164
+ % Usage: \@forc \var{charstring}{command to be executed for each char}
165
+ % This is similar to LaTeX's \@tfor, but expands the charstring.
166
+
167
+ \def\@forc#1#2#3{\expandafter\f@rc\expandafter#1\expandafter{#2}{#3}}
168
+ \def\f@rc#1#2#3{\def\temp@ty{#2}\ifx\@empty\temp@ty\else
169
+ \f@@rc#1#2\f@@rc{#3}\fi}
170
+ \def\f@@rc#1#2#3\f@@rc#4{\def#1{#2}#4\f@rc#1{#3}{#4}}
171
+
172
+ % Usage: \f@nfor\name:=list\do{body}
173
+ % Like LaTeX's \@for but an empty list is treated as a list with an empty
174
+ % element
175
+
176
+ \newcommand{\f@nfor}[3]{\edef\@fortmp{#2}%
177
+ \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}}
178
+
179
+ % Usage: \def@ult \cs{defaults}{argument}
180
+ % sets \cs to the characters from defaults appearing in argument
181
+ % or defaults if it would be empty. All characters are lowercased.
182
+
183
+ \newcommand\def@ult[3]{%
184
+ \edef\temp@a{\lowercase{\edef\noexpand\temp@a{#3}}}\temp@a
185
+ \def#1{}%
186
+ \@forc\tmpf@ra{#2}%
187
+ {\expandafter\if@in\tmpf@ra\temp@a{\edef#1{#1\tmpf@ra}}{}}%
188
+ \ifx\@empty#1\def#1{#2}\fi}
189
+ %
190
+ % \if@in <char><set><truecase><falsecase>
191
+ %
192
+ \newcommand{\if@in}[4]{%
193
+ \edef\temp@a{#2}\def\temp@b##1#1##2\temp@b{\def\temp@b{##1}}%
194
+ \expandafter\temp@b#2#1\temp@b\ifx\temp@a\temp@b #4\else #3\fi}
195
+
196
+ \newcommand{\fancyhead}{\@ifnextchar[{\f@ncyhf\fancyhead h}%
197
+ {\f@ncyhf\fancyhead h[]}}
198
+ \newcommand{\fancyfoot}{\@ifnextchar[{\f@ncyhf\fancyfoot f}%
199
+ {\f@ncyhf\fancyfoot f[]}}
200
+ \newcommand{\fancyhf}{\@ifnextchar[{\f@ncyhf\fancyhf{}}%
201
+ {\f@ncyhf\fancyhf{}[]}}
202
+
203
+ % New commands for offsets added
204
+
205
+ \newcommand{\fancyheadoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyheadoffset h}%
206
+ {\f@ncyhfoffs\fancyheadoffset h[]}}
207
+ \newcommand{\fancyfootoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyfootoffset f}%
208
+ {\f@ncyhfoffs\fancyfootoffset f[]}}
209
+ \newcommand{\fancyhfoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyhfoffset{}}%
210
+ {\f@ncyhfoffs\fancyhfoffset{}[]}}
211
+
212
+ % The header and footer fields are stored in command sequences with
213
+ % names of the form: \f@ncy<x><y><z> with <x> for [eo], <y> from [lcr]
214
+ % and <z> from [hf].
215
+
216
+ \def\f@ncyhf#1#2[#3]#4{%
217
+ \def\temp@c{}%
218
+ \@forc\tmpf@ra{#3}%
219
+ {\expandafter\if@in\tmpf@ra{eolcrhf,EOLCRHF}%
220
+ {}{\edef\temp@c{\temp@c\tmpf@ra}}}%
221
+ \ifx\@empty\temp@c\else
222
+ \@fancyerrmsg{Illegal char `\temp@c' in \string#1 argument:
223
+ [#3]}%
224
+ \fi
225
+ \f@nfor\temp@c{#3}%
226
+ {\def@ult\f@@@eo{eo}\temp@c
227
+ \if@twoside\else
228
+ \if\f@@@eo e\@fancywarning
229
+ {\string#1's `E' option without twoside option is useless}\fi\fi
230
+ \def@ult\f@@@lcr{lcr}\temp@c
231
+ \def@ult\f@@@hf{hf}{#2\temp@c}%
232
+ \@forc\f@@eo\f@@@eo
233
+ {\@forc\f@@lcr\f@@@lcr
234
+ {\@forc\f@@hf\f@@@hf
235
+ {\expandafter\fancy@def\csname
236
+ f@ncy\f@@eo\f@@lcr\f@@hf\endcsname
237
+ {#4}}}}}}
238
+
239
+ \def\f@ncyhfoffs#1#2[#3]#4{%
240
+ \def\temp@c{}%
241
+ \@forc\tmpf@ra{#3}%
242
+ {\expandafter\if@in\tmpf@ra{eolrhf,EOLRHF}%
243
+ {}{\edef\temp@c{\temp@c\tmpf@ra}}}%
244
+ \ifx\@empty\temp@c\else
245
+ \@fancyerrmsg{Illegal char `\temp@c' in \string#1 argument:
246
+ [#3]}%
247
+ \fi
248
+ \f@nfor\temp@c{#3}%
249
+ {\def@ult\f@@@eo{eo}\temp@c
250
+ \if@twoside\else
251
+ \if\f@@@eo e\@fancywarning
252
+ {\string#1's `E' option without twoside option is useless}\fi\fi
253
+ \def@ult\f@@@lcr{lr}\temp@c
254
+ \def@ult\f@@@hf{hf}{#2\temp@c}%
255
+ \@forc\f@@eo\f@@@eo
256
+ {\@forc\f@@lcr\f@@@lcr
257
+ {\@forc\f@@hf\f@@@hf
258
+ {\expandafter\setlength\csname
259
+ f@ncyO@\f@@eo\f@@lcr\f@@hf\endcsname
260
+ {#4}}}}}%
261
+ \fancy@setoffs}
262
+
263
+ % Fancyheadings version 1 commands. These are more or less deprecated,
264
+ % but they continue to work.
265
+
266
+ \newcommand{\lhead}{\@ifnextchar[{\@xlhead}{\@ylhead}}
267
+ \def\@xlhead[#1]#2{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#2}}
268
+ \def\@ylhead#1{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#1}}
269
+
270
+ \newcommand{\chead}{\@ifnextchar[{\@xchead}{\@ychead}}
271
+ \def\@xchead[#1]#2{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#2}}
272
+ \def\@ychead#1{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#1}}
273
+
274
+ \newcommand{\rhead}{\@ifnextchar[{\@xrhead}{\@yrhead}}
275
+ \def\@xrhead[#1]#2{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#2}}
276
+ \def\@yrhead#1{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#1}}
277
+
278
+ \newcommand{\lfoot}{\@ifnextchar[{\@xlfoot}{\@ylfoot}}
279
+ \def\@xlfoot[#1]#2{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#2}}
280
+ \def\@ylfoot#1{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#1}}
281
+
282
+ \newcommand{\cfoot}{\@ifnextchar[{\@xcfoot}{\@ycfoot}}
283
+ \def\@xcfoot[#1]#2{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#2}}
284
+ \def\@ycfoot#1{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#1}}
285
+
286
+ \newcommand{\rfoot}{\@ifnextchar[{\@xrfoot}{\@yrfoot}}
287
+ \def\@xrfoot[#1]#2{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#2}}
288
+ \def\@yrfoot#1{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#1}}
289
+
290
+ \newlength{\fancy@headwidth}
291
+ \let\headwidth\fancy@headwidth
292
+ \newlength{\f@ncyO@elh}
293
+ \newlength{\f@ncyO@erh}
294
+ \newlength{\f@ncyO@olh}
295
+ \newlength{\f@ncyO@orh}
296
+ \newlength{\f@ncyO@elf}
297
+ \newlength{\f@ncyO@erf}
298
+ \newlength{\f@ncyO@olf}
299
+ \newlength{\f@ncyO@orf}
300
+ \newcommand{\headrulewidth}{0.4pt}
301
+ \newcommand{\footrulewidth}{0pt}
302
+ \newcommand{\footruleskip}{.3\normalbaselineskip}
303
+
304
+ % Fancyplain stuff shouldn't be used anymore (rather
305
+ % \fancypagestyle{plain} should be used), but it must be present for
306
+ % compatibility reasons.
307
+
308
+ \newcommand{\plainheadrulewidth}{0pt}
309
+ \newcommand{\plainfootrulewidth}{0pt}
310
+ \newif\if@fancyplain \@fancyplainfalse
311
+ \def\fancyplain#1#2{\if@fancyplain#1\else#2\fi}
312
+
313
+ \headwidth=-123456789sp %magic constant
314
+
315
+ % Command to reset various things in the headers:
316
+ % a.o. single spacing (taken from setspace.sty)
317
+ % and the catcode of ^^M (so that epsf files in the header work if a
318
+ % verbatim crosses a page boundary)
319
+ % It also defines a \nouppercase command that disables \uppercase and
320
+ % \Makeuppercase. It can only be used in the headers and footers.
321
+ \let\fnch@everypar\everypar% save real \everypar because of spanish.ldf
322
+ \def\fancy@reset{\fnch@everypar{}\restorecr\endlinechar=13
323
+ \def\baselinestretch{1}%
324
+ \def\nouppercase##1{{\let\uppercase\relax\let\MakeUppercase\relax
325
+ \expandafter\let\csname MakeUppercase \endcsname\relax##1}}%
326
+ \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e
327
+ \ifx\@normalsize\undefined \normalsize % for ucthesis.cls
328
+ \else \@normalsize \fi
329
+ \else% NFSS (2.09) present
330
+ \@newbaseline%
331
+ \fi}
332
+
333
+ % Initialization of the head and foot text.
334
+
335
+ % The default values still contain \fancyplain for compatibility.
336
+ \fancyhf{} % clear all
337
+ % lefthead empty on ``plain'' pages, \rightmark on even, \leftmark on odd pages
338
+ % evenhead empty on ``plain'' pages, \leftmark on even, \rightmark on odd pages
339
+ \if@twoside
340
+ \fancyhead[el,or]{\fancyplain{}{\sl\rightmark}}
341
+ \fancyhead[er,ol]{\fancyplain{}{\sl\leftmark}}
342
+ \else
343
+ \fancyhead[l]{\fancyplain{}{\sl\rightmark}}
344
+ \fancyhead[r]{\fancyplain{}{\sl\leftmark}}
345
+ \fi
346
+ \fancyfoot[c]{\rm\thepage} % page number
347
+
348
+ % Use box 0 as a temp box and dimen 0 as temp dimen.
349
+ % This can be done, because this code will always
350
+ % be used inside another box, and therefore the changes are local.
351
+
352
+ \def\@fancyvbox#1#2{\setbox0\vbox{#2}\ifdim\ht0>#1\@fancywarning
353
+ {\string#1 is too small (\the#1): ^^J Make it at least \the\ht0.^^J
354
+ We now make it that large for the rest of the document.^^J
355
+ This may cause the page layout to be inconsistent, however\@gobble}%
356
+ \dimen0=#1\global\setlength{#1}{\ht0}\ht0=\dimen0\fi
357
+ \box0}
358
+
359
+ % Put together a header or footer given the left, center and
360
+ % right text, fillers at left and right and a rule.
361
+ % The \lap commands put the text into an hbox of zero size,
362
+ % so overlapping text does not generate an errormessage.
363
+ % These macros have 5 parameters:
364
+ % 1. LEFTSIDE BEARING % This determines at which side the header will stick
365
+ % out. When \fancyhfoffset is used this calculates \headwidth, otherwise
366
+ % it is \hss or \relax (after expansion).
367
+ % 2. \f@ncyolh, \f@ncyelh, \f@ncyolf or \f@ncyelf. This is the left component.
368
+ % 3. \f@ncyoch, \f@ncyech, \f@ncyocf or \f@ncyecf. This is the middle comp.
369
+ % 4. \f@ncyorh, \f@ncyerh, \f@ncyorf or \f@ncyerf. This is the right component.
370
+ % 5. RIGHTSIDE BEARING. This is always \relax or \hss (after expansion).
371
+
372
+ \def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset
373
+ \@fancyvbox\headheight{\hbox
374
+ {\rlap{\parbox[b]{\headwidth}{\raggedright#2}}\hfill
375
+ \parbox[b]{\headwidth}{\centering#3}\hfill
376
+ \llap{\parbox[b]{\headwidth}{\raggedleft#4}}}\headrule}}#5}
377
+
378
+ \def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset
379
+ \@fancyvbox\footskip{\footrule
380
+ \hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2}}\hfill
381
+ \parbox[t]{\headwidth}{\centering#3}\hfill
382
+ \llap{\parbox[t]{\headwidth}{\raggedleft#4}}}}}#5}
383
+
384
+ \def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi
385
+ \hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}}
386
+
387
+ \def\footrule{{\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi
388
+ \vskip-\footruleskip\vskip-\footrulewidth
389
+ \hrule\@width\headwidth\@height\footrulewidth\vskip\footruleskip}}
390
+
391
+ \def\ps@fancy{%
392
+ \@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%for amsbook
393
+ %
394
+ % Define \MakeUppercase for old LaTeXen.
395
+ % Note: we used \def rather than \let, so that \let\uppercase\relax (from
396
+ % the version 1 documentation) will still work.
397
+ %
398
+ \@ifundefined{MakeUppercase}{\def\MakeUppercase{\uppercase}}{}%
399
+ \@ifundefined{chapter}{\def\sectionmark##1{\markboth
400
+ {\MakeUppercase{\ifnum \c@secnumdepth>\z@
401
+ \thesection\hskip 1em\relax \fi ##1}}{}}%
402
+ \def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne
403
+ \thesubsection\hskip 1em\relax \fi ##1}}}%
404
+ {\def\chaptermark##1{\markboth {\MakeUppercase{\ifnum \c@secnumdepth>\m@ne
405
+ \@chapapp\ \thechapter. \ \fi ##1}}{}}%
406
+ \def\sectionmark##1{\markright{\MakeUppercase{\ifnum \c@secnumdepth >\z@
407
+ \thesection. \ \fi ##1}}}}%
408
+ %\csname ps@headings\endcsname % use \ps@headings defaults if they exist
409
+ \ps@@fancy
410
+ \gdef\ps@fancy{\@fancyplainfalse\ps@@fancy}%
411
+ % Initialize \headwidth if the user didn't
412
+ %
413
+ \ifdim\headwidth<0sp
414
+ %
415
+ % This catches the case that \headwidth hasn't been initialized and the
416
+ % case that the user added something to \headwidth in the expectation that
417
+ % it was initialized to \textwidth. We compensate this now. This loses if
418
+ % the user intended to multiply it by a factor. But that case is more
419
+ % likely done by saying something like \headwidth=1.2\textwidth.
420
+ % The doc says you have to change \headwidth after the first call to
421
+ % \pagestyle{fancy}. This code is just to catch the most common cases were
422
+ % that requirement is violated.
423
+ %
424
+ \global\advance\headwidth123456789sp\global\advance\headwidth\textwidth
425
+ \fi}
426
+ \def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy}
427
+ \def\ps@plain@fancy{\@fancyplaintrue\ps@@fancy}
428
+ \let\ps@@empty\ps@empty
429
+ \def\ps@@fancy{%
430
+ \ps@@empty % This is for amsbook/amsart, which do strange things with \topskip
431
+ \def\@mkboth{\protect\markboth}%
432
+ \def\@oddhead{\@fancyhead\fancy@Oolh\f@ncyolh\f@ncyoch\f@ncyorh\fancy@Oorh}%
433
+ \def\@oddfoot{\@fancyfoot\fancy@Oolf\f@ncyolf\f@ncyocf\f@ncyorf\fancy@Oorf}%
434
+ \def\@evenhead{\@fancyhead\fancy@Oelh\f@ncyelh\f@ncyech\f@ncyerh\fancy@Oerh}%
435
+ \def\@evenfoot{\@fancyfoot\fancy@Oelf\f@ncyelf\f@ncyecf\f@ncyerf\fancy@Oerf}%
436
+ }
437
+ % Default definitions for compatibility mode:
438
+ % These cause the header/footer to take the defined \headwidth as width
439
+ % And to shift in the direction of the marginpar area
440
+
441
+ \def\fancy@Oolh{\if@reversemargin\hss\else\relax\fi}
442
+ \def\fancy@Oorh{\if@reversemargin\relax\else\hss\fi}
443
+ \let\fancy@Oelh\fancy@Oorh
444
+ \let\fancy@Oerh\fancy@Oolh
445
+
446
+ \let\fancy@Oolf\fancy@Oolh
447
+ \let\fancy@Oorf\fancy@Oorh
448
+ \let\fancy@Oelf\fancy@Oelh
449
+ \let\fancy@Oerf\fancy@Oerh
450
+
451
+ % New definitions for the use of \fancyhfoffset
452
+ % These calculate the \headwidth from \textwidth and the specified offsets.
453
+
454
+ \def\fancy@offsolh{\headwidth=\textwidth\advance\headwidth\f@ncyO@olh
455
+ \advance\headwidth\f@ncyO@orh\hskip-\f@ncyO@olh}
456
+ \def\fancy@offselh{\headwidth=\textwidth\advance\headwidth\f@ncyO@elh
457
+ \advance\headwidth\f@ncyO@erh\hskip-\f@ncyO@elh}
458
+
459
+ \def\fancy@offsolf{\headwidth=\textwidth\advance\headwidth\f@ncyO@olf
460
+ \advance\headwidth\f@ncyO@orf\hskip-\f@ncyO@olf}
461
+ \def\fancy@offself{\headwidth=\textwidth\advance\headwidth\f@ncyO@elf
462
+ \advance\headwidth\f@ncyO@erf\hskip-\f@ncyO@elf}
463
+
464
+ \def\fancy@setoffs{%
465
+ % Just in case \let\headwidth\textwidth was used
466
+ \fancy@gbl\let\headwidth\fancy@headwidth
467
+ \fancy@gbl\let\fancy@Oolh\fancy@offsolh
468
+ \fancy@gbl\let\fancy@Oelh\fancy@offselh
469
+ \fancy@gbl\let\fancy@Oorh\hss
470
+ \fancy@gbl\let\fancy@Oerh\hss
471
+ \fancy@gbl\let\fancy@Oolf\fancy@offsolf
472
+ \fancy@gbl\let\fancy@Oelf\fancy@offself
473
+ \fancy@gbl\let\fancy@Oorf\hss
474
+ \fancy@gbl\let\fancy@Oerf\hss}
475
+
476
+ \newif\iffootnote
477
+ \let\latex@makecol\@makecol
478
+ \def\@makecol{\ifvoid\footins\footnotetrue\else\footnotefalse\fi
479
+ \let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol}
480
+ \def\iftopfloat#1#2{\ifx\topfloat\empty #2\else #1\fi}
481
+ \def\ifbotfloat#1#2{\ifx\botfloat\empty #2\else #1\fi}
482
+ \def\iffloatpage#1#2{\if@fcolmade #1\else #2\fi}
483
+
484
+ \newcommand{\fancypagestyle}[2]{%
485
+ \@namedef{ps@#1}{\let\fancy@gbl\relax#2\relax\ps@fancy}}
latex_templates/Summary/iclr2022_conference.bst ADDED
@@ -0,0 +1,1440 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ %% File: `iclr2017.bst'
2
+ %% A copy of iclm2010.bst, which is a modification of `plainnl.bst' for use with natbib package
3
+ %%
4
+ %% Copyright 2010 Hal Daum\'e III
5
+ %% Modified by J. F�rnkranz
6
+ %% - Changed labels from (X and Y, 2000) to (X & Y, 2000)
7
+ %%
8
+ %% Copyright 1993-2007 Patrick W Daly
9
+ %% Max-Planck-Institut f\"ur Sonnensystemforschung
10
+ %% Max-Planck-Str. 2
11
+ %% D-37191 Katlenburg-Lindau
12
+ %% Germany
13
+ %% E-mail: daly@mps.mpg.de
14
+ %%
15
+ %% This program can be redistributed and/or modified under the terms
16
+ %% of the LaTeX Project Public License Distributed from CTAN
17
+ %% archives in directory macros/latex/base/lppl.txt; either
18
+ %% version 1 of the License, or any later version.
19
+ %%
20
+ % Version and source file information:
21
+ % \ProvidesFile{icml2010.mbs}[2007/11/26 1.93 (PWD)]
22
+ %
23
+ % BibTeX `plainnat' family
24
+ % version 0.99b for BibTeX versions 0.99a or later,
25
+ % for LaTeX versions 2.09 and 2e.
26
+ %
27
+ % For use with the `natbib.sty' package; emulates the corresponding
28
+ % member of the `plain' family, but with author-year citations.
29
+ %
30
+ % With version 6.0 of `natbib.sty', it may also be used for numerical
31
+ % citations, while retaining the commands \citeauthor, \citefullauthor,
32
+ % and \citeyear to print the corresponding information.
33
+ %
34
+ % For version 7.0 of `natbib.sty', the KEY field replaces missing
35
+ % authors/editors, and the date is left blank in \bibitem.
36
+ %
37
+ % Includes field EID for the sequence/citation number of electronic journals
38
+ % which is used instead of page numbers.
39
+ %
40
+ % Includes fields ISBN and ISSN.
41
+ %
42
+ % Includes field URL for Internet addresses.
43
+ %
44
+ % Includes field DOI for Digital Object Idenfifiers.
45
+ %
46
+ % Works best with the url.sty package of Donald Arseneau.
47
+ %
48
+ % Works with identical authors and year are further sorted by
49
+ % citation key, to preserve any natural sequence.
50
+ %
51
+ ENTRY
52
+ { address
53
+ author
54
+ booktitle
55
+ chapter
56
+ doi
57
+ eid
58
+ edition
59
+ editor
60
+ howpublished
61
+ institution
62
+ isbn
63
+ issn
64
+ journal
65
+ key
66
+ month
67
+ note
68
+ number
69
+ organization
70
+ pages
71
+ publisher
72
+ school
73
+ series
74
+ title
75
+ type
76
+ url
77
+ volume
78
+ year
79
+ }
80
+ {}
81
+ { label extra.label sort.label short.list }
82
+
83
+ INTEGERS { output.state before.all mid.sentence after.sentence after.block }
84
+
85
+ FUNCTION {init.state.consts}
86
+ { #0 'before.all :=
87
+ #1 'mid.sentence :=
88
+ #2 'after.sentence :=
89
+ #3 'after.block :=
90
+ }
91
+
92
+ STRINGS { s t }
93
+
94
+ FUNCTION {output.nonnull}
95
+ { 's :=
96
+ output.state mid.sentence =
97
+ { ", " * write$ }
98
+ { output.state after.block =
99
+ { add.period$ write$
100
+ newline$
101
+ "\newblock " write$
102
+ }
103
+ { output.state before.all =
104
+ 'write$
105
+ { add.period$ " " * write$ }
106
+ if$
107
+ }
108
+ if$
109
+ mid.sentence 'output.state :=
110
+ }
111
+ if$
112
+ s
113
+ }
114
+
115
+ FUNCTION {output}
116
+ { duplicate$ empty$
117
+ 'pop$
118
+ 'output.nonnull
119
+ if$
120
+ }
121
+
122
+ FUNCTION {output.check}
123
+ { 't :=
124
+ duplicate$ empty$
125
+ { pop$ "empty " t * " in " * cite$ * warning$ }
126
+ 'output.nonnull
127
+ if$
128
+ }
129
+
130
+ FUNCTION {fin.entry}
131
+ { add.period$
132
+ write$
133
+ newline$
134
+ }
135
+
136
+ FUNCTION {new.block}
137
+ { output.state before.all =
138
+ 'skip$
139
+ { after.block 'output.state := }
140
+ if$
141
+ }
142
+
143
+ FUNCTION {new.sentence}
144
+ { output.state after.block =
145
+ 'skip$
146
+ { output.state before.all =
147
+ 'skip$
148
+ { after.sentence 'output.state := }
149
+ if$
150
+ }
151
+ if$
152
+ }
153
+
154
+ FUNCTION {not}
155
+ { { #0 }
156
+ { #1 }
157
+ if$
158
+ }
159
+
160
+ FUNCTION {and}
161
+ { 'skip$
162
+ { pop$ #0 }
163
+ if$
164
+ }
165
+
166
+ FUNCTION {or}
167
+ { { pop$ #1 }
168
+ 'skip$
169
+ if$
170
+ }
171
+
172
+ FUNCTION {new.block.checka}
173
+ { empty$
174
+ 'skip$
175
+ 'new.block
176
+ if$
177
+ }
178
+
179
+ FUNCTION {new.block.checkb}
180
+ { empty$
181
+ swap$ empty$
182
+ and
183
+ 'skip$
184
+ 'new.block
185
+ if$
186
+ }
187
+
188
+ FUNCTION {new.sentence.checka}
189
+ { empty$
190
+ 'skip$
191
+ 'new.sentence
192
+ if$
193
+ }
194
+
195
+ FUNCTION {new.sentence.checkb}
196
+ { empty$
197
+ swap$ empty$
198
+ and
199
+ 'skip$
200
+ 'new.sentence
201
+ if$
202
+ }
203
+
204
+ FUNCTION {field.or.null}
205
+ { duplicate$ empty$
206
+ { pop$ "" }
207
+ 'skip$
208
+ if$
209
+ }
210
+
211
+ FUNCTION {emphasize}
212
+ { duplicate$ empty$
213
+ { pop$ "" }
214
+ { "\emph{" swap$ * "}" * }
215
+ if$
216
+ }
217
+
218
+ INTEGERS { nameptr namesleft numnames }
219
+
220
+ FUNCTION {format.names}
221
+ { 's :=
222
+ #1 'nameptr :=
223
+ s num.names$ 'numnames :=
224
+ numnames 'namesleft :=
225
+ { namesleft #0 > }
226
+ { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
227
+ nameptr #1 >
228
+ { namesleft #1 >
229
+ { ", " * t * }
230
+ { numnames #2 >
231
+ { "," * }
232
+ 'skip$
233
+ if$
234
+ t "others" =
235
+ { " et~al." * }
236
+ { " and " * t * }
237
+ if$
238
+ }
239
+ if$
240
+ }
241
+ 't
242
+ if$
243
+ nameptr #1 + 'nameptr :=
244
+ namesleft #1 - 'namesleft :=
245
+ }
246
+ while$
247
+ }
248
+
249
+ FUNCTION {format.key}
250
+ { empty$
251
+ { key field.or.null }
252
+ { "" }
253
+ if$
254
+ }
255
+
256
+ FUNCTION {format.authors}
257
+ { author empty$
258
+ { "" }
259
+ { author format.names }
260
+ if$
261
+ }
262
+
263
+ FUNCTION {format.editors}
264
+ { editor empty$
265
+ { "" }
266
+ { editor format.names
267
+ editor num.names$ #1 >
268
+ { " (eds.)" * }
269
+ { " (ed.)" * }
270
+ if$
271
+ }
272
+ if$
273
+ }
274
+
275
+ FUNCTION {format.isbn}
276
+ { isbn empty$
277
+ { "" }
278
+ { new.block "ISBN " isbn * }
279
+ if$
280
+ }
281
+
282
+ FUNCTION {format.issn}
283
+ { issn empty$
284
+ { "" }
285
+ { new.block "ISSN " issn * }
286
+ if$
287
+ }
288
+
289
+ FUNCTION {format.url}
290
+ { url empty$
291
+ { "" }
292
+ { new.block "URL \url{" url * "}" * }
293
+ if$
294
+ }
295
+
296
+ FUNCTION {format.doi}
297
+ { doi empty$
298
+ { "" }
299
+ { new.block "\doi{" doi * "}" * }
300
+ if$
301
+ }
302
+
303
+ FUNCTION {format.title}
304
+ { title empty$
305
+ { "" }
306
+ { title "t" change.case$ }
307
+ if$
308
+ }
309
+
310
+ FUNCTION {format.full.names}
311
+ {'s :=
312
+ #1 'nameptr :=
313
+ s num.names$ 'numnames :=
314
+ numnames 'namesleft :=
315
+ { namesleft #0 > }
316
+ { s nameptr
317
+ "{vv~}{ll}" format.name$ 't :=
318
+ nameptr #1 >
319
+ {
320
+ namesleft #1 >
321
+ { ", " * t * }
322
+ {
323
+ numnames #2 >
324
+ { "," * }
325
+ 'skip$
326
+ if$
327
+ t "others" =
328
+ { " et~al." * }
329
+ { " and " * t * }
330
+ if$
331
+ }
332
+ if$
333
+ }
334
+ 't
335
+ if$
336
+ nameptr #1 + 'nameptr :=
337
+ namesleft #1 - 'namesleft :=
338
+ }
339
+ while$
340
+ }
341
+
342
+ FUNCTION {author.editor.full}
343
+ { author empty$
344
+ { editor empty$
345
+ { "" }
346
+ { editor format.full.names }
347
+ if$
348
+ }
349
+ { author format.full.names }
350
+ if$
351
+ }
352
+
353
+ FUNCTION {author.full}
354
+ { author empty$
355
+ { "" }
356
+ { author format.full.names }
357
+ if$
358
+ }
359
+
360
+ FUNCTION {editor.full}
361
+ { editor empty$
362
+ { "" }
363
+ { editor format.full.names }
364
+ if$
365
+ }
366
+
367
+ FUNCTION {make.full.names}
368
+ { type$ "book" =
369
+ type$ "inbook" =
370
+ or
371
+ 'author.editor.full
372
+ { type$ "proceedings" =
373
+ 'editor.full
374
+ 'author.full
375
+ if$
376
+ }
377
+ if$
378
+ }
379
+
380
+ FUNCTION {output.bibitem}
381
+ { newline$
382
+ "\bibitem[" write$
383
+ label write$
384
+ ")" make.full.names duplicate$ short.list =
385
+ { pop$ }
386
+ { * }
387
+ if$
388
+ "]{" * write$
389
+ cite$ write$
390
+ "}" write$
391
+ newline$
392
+ ""
393
+ before.all 'output.state :=
394
+ }
395
+
396
+ FUNCTION {n.dashify}
397
+ { 't :=
398
+ ""
399
+ { t empty$ not }
400
+ { t #1 #1 substring$ "-" =
401
+ { t #1 #2 substring$ "--" = not
402
+ { "--" *
403
+ t #2 global.max$ substring$ 't :=
404
+ }
405
+ { { t #1 #1 substring$ "-" = }
406
+ { "-" *
407
+ t #2 global.max$ substring$ 't :=
408
+ }
409
+ while$
410
+ }
411
+ if$
412
+ }
413
+ { t #1 #1 substring$ *
414
+ t #2 global.max$ substring$ 't :=
415
+ }
416
+ if$
417
+ }
418
+ while$
419
+ }
420
+
421
+ FUNCTION {format.date}
422
+ { year duplicate$ empty$
423
+ { "empty year in " cite$ * warning$
424
+ pop$ "" }
425
+ 'skip$
426
+ if$
427
+ month empty$
428
+ 'skip$
429
+ { month
430
+ " " * swap$ *
431
+ }
432
+ if$
433
+ extra.label *
434
+ }
435
+
436
+ FUNCTION {format.btitle}
437
+ { title emphasize
438
+ }
439
+
440
+ FUNCTION {tie.or.space.connect}
441
+ { duplicate$ text.length$ #3 <
442
+ { "~" }
443
+ { " " }
444
+ if$
445
+ swap$ * *
446
+ }
447
+
448
+ FUNCTION {either.or.check}
449
+ { empty$
450
+ 'pop$
451
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
452
+ if$
453
+ }
454
+
455
+ FUNCTION {format.bvolume}
456
+ { volume empty$
457
+ { "" }
458
+ { "volume" volume tie.or.space.connect
459
+ series empty$
460
+ 'skip$
461
+ { " of " * series emphasize * }
462
+ if$
463
+ "volume and number" number either.or.check
464
+ }
465
+ if$
466
+ }
467
+
468
+ FUNCTION {format.number.series}
469
+ { volume empty$
470
+ { number empty$
471
+ { series field.or.null }
472
+ { output.state mid.sentence =
473
+ { "number" }
474
+ { "Number" }
475
+ if$
476
+ number tie.or.space.connect
477
+ series empty$
478
+ { "there's a number but no series in " cite$ * warning$ }
479
+ { " in " * series * }
480
+ if$
481
+ }
482
+ if$
483
+ }
484
+ { "" }
485
+ if$
486
+ }
487
+
488
+ FUNCTION {format.edition}
489
+ { edition empty$
490
+ { "" }
491
+ { output.state mid.sentence =
492
+ { edition "l" change.case$ " edition" * }
493
+ { edition "t" change.case$ " edition" * }
494
+ if$
495
+ }
496
+ if$
497
+ }
498
+
499
+ INTEGERS { multiresult }
500
+
501
+ FUNCTION {multi.page.check}
502
+ { 't :=
503
+ #0 'multiresult :=
504
+ { multiresult not
505
+ t empty$ not
506
+ and
507
+ }
508
+ { t #1 #1 substring$
509
+ duplicate$ "-" =
510
+ swap$ duplicate$ "," =
511
+ swap$ "+" =
512
+ or or
513
+ { #1 'multiresult := }
514
+ { t #2 global.max$ substring$ 't := }
515
+ if$
516
+ }
517
+ while$
518
+ multiresult
519
+ }
520
+
521
+ FUNCTION {format.pages}
522
+ { pages empty$
523
+ { "" }
524
+ { pages multi.page.check
525
+ { "pp.\ " pages n.dashify tie.or.space.connect }
526
+ { "pp.\ " pages tie.or.space.connect }
527
+ if$
528
+ }
529
+ if$
530
+ }
531
+
532
+ FUNCTION {format.eid}
533
+ { eid empty$
534
+ { "" }
535
+ { "art." eid tie.or.space.connect }
536
+ if$
537
+ }
538
+
539
+ FUNCTION {format.vol.num.pages}
540
+ { volume field.or.null
541
+ number empty$
542
+ 'skip$
543
+ { "\penalty0 (" number * ")" * *
544
+ volume empty$
545
+ { "there's a number but no volume in " cite$ * warning$ }
546
+ 'skip$
547
+ if$
548
+ }
549
+ if$
550
+ pages empty$
551
+ 'skip$
552
+ { duplicate$ empty$
553
+ { pop$ format.pages }
554
+ { ":\penalty0 " * pages n.dashify * }
555
+ if$
556
+ }
557
+ if$
558
+ }
559
+
560
+ FUNCTION {format.vol.num.eid}
561
+ { volume field.or.null
562
+ number empty$
563
+ 'skip$
564
+ { "\penalty0 (" number * ")" * *
565
+ volume empty$
566
+ { "there's a number but no volume in " cite$ * warning$ }
567
+ 'skip$
568
+ if$
569
+ }
570
+ if$
571
+ eid empty$
572
+ 'skip$
573
+ { duplicate$ empty$
574
+ { pop$ format.eid }
575
+ { ":\penalty0 " * eid * }
576
+ if$
577
+ }
578
+ if$
579
+ }
580
+
581
+ FUNCTION {format.chapter.pages}
582
+ { chapter empty$
583
+ 'format.pages
584
+ { type empty$
585
+ { "chapter" }
586
+ { type "l" change.case$ }
587
+ if$
588
+ chapter tie.or.space.connect
589
+ pages empty$
590
+ 'skip$
591
+ { ", " * format.pages * }
592
+ if$
593
+ }
594
+ if$
595
+ }
596
+
597
+ FUNCTION {format.in.ed.booktitle}
598
+ { booktitle empty$
599
+ { "" }
600
+ { editor empty$
601
+ { "In " booktitle emphasize * }
602
+ { "In " format.editors * ", " * booktitle emphasize * }
603
+ if$
604
+ }
605
+ if$
606
+ }
607
+
608
+ FUNCTION {empty.misc.check}
609
+ { author empty$ title empty$ howpublished empty$
610
+ month empty$ year empty$ note empty$
611
+ and and and and and
612
+ key empty$ not and
613
+ { "all relevant fields are empty in " cite$ * warning$ }
614
+ 'skip$
615
+ if$
616
+ }
617
+
618
+ FUNCTION {format.thesis.type}
619
+ { type empty$
620
+ 'skip$
621
+ { pop$
622
+ type "t" change.case$
623
+ }
624
+ if$
625
+ }
626
+
627
+ FUNCTION {format.tr.number}
628
+ { type empty$
629
+ { "Technical Report" }
630
+ 'type
631
+ if$
632
+ number empty$
633
+ { "t" change.case$ }
634
+ { number tie.or.space.connect }
635
+ if$
636
+ }
637
+
638
+ FUNCTION {format.article.crossref}
639
+ { key empty$
640
+ { journal empty$
641
+ { "need key or journal for " cite$ * " to crossref " * crossref *
642
+ warning$
643
+ ""
644
+ }
645
+ { "In \emph{" journal * "}" * }
646
+ if$
647
+ }
648
+ { "In " }
649
+ if$
650
+ " \citet{" * crossref * "}" *
651
+ }
652
+
653
+ FUNCTION {format.book.crossref}
654
+ { volume empty$
655
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
656
+ "In "
657
+ }
658
+ { "Volume" volume tie.or.space.connect
659
+ " of " *
660
+ }
661
+ if$
662
+ editor empty$
663
+ editor field.or.null author field.or.null =
664
+ or
665
+ { key empty$
666
+ { series empty$
667
+ { "need editor, key, or series for " cite$ * " to crossref " *
668
+ crossref * warning$
669
+ "" *
670
+ }
671
+ { "\emph{" * series * "}" * }
672
+ if$
673
+ }
674
+ 'skip$
675
+ if$
676
+ }
677
+ 'skip$
678
+ if$
679
+ " \citet{" * crossref * "}" *
680
+ }
681
+
682
+ FUNCTION {format.incoll.inproc.crossref}
683
+ { editor empty$
684
+ editor field.or.null author field.or.null =
685
+ or
686
+ { key empty$
687
+ { booktitle empty$
688
+ { "need editor, key, or booktitle for " cite$ * " to crossref " *
689
+ crossref * warning$
690
+ ""
691
+ }
692
+ { "In \emph{" booktitle * "}" * }
693
+ if$
694
+ }
695
+ { "In " }
696
+ if$
697
+ }
698
+ { "In " }
699
+ if$
700
+ " \citet{" * crossref * "}" *
701
+ }
702
+
703
+ FUNCTION {article}
704
+ { output.bibitem
705
+ format.authors "author" output.check
706
+ author format.key output
707
+ new.block
708
+ format.title "title" output.check
709
+ new.block
710
+ crossref missing$
711
+ { journal emphasize "journal" output.check
712
+ eid empty$
713
+ { format.vol.num.pages output }
714
+ { format.vol.num.eid output }
715
+ if$
716
+ format.date "year" output.check
717
+ }
718
+ { format.article.crossref output.nonnull
719
+ eid empty$
720
+ { format.pages output }
721
+ { format.eid output }
722
+ if$
723
+ }
724
+ if$
725
+ format.issn output
726
+ format.doi output
727
+ format.url output
728
+ new.block
729
+ note output
730
+ fin.entry
731
+ }
732
+
733
+ FUNCTION {book}
734
+ { output.bibitem
735
+ author empty$
736
+ { format.editors "author and editor" output.check
737
+ editor format.key output
738
+ }
739
+ { format.authors output.nonnull
740
+ crossref missing$
741
+ { "author and editor" editor either.or.check }
742
+ 'skip$
743
+ if$
744
+ }
745
+ if$
746
+ new.block
747
+ format.btitle "title" output.check
748
+ crossref missing$
749
+ { format.bvolume output
750
+ new.block
751
+ format.number.series output
752
+ new.sentence
753
+ publisher "publisher" output.check
754
+ address output
755
+ }
756
+ { new.block
757
+ format.book.crossref output.nonnull
758
+ }
759
+ if$
760
+ format.edition output
761
+ format.date "year" output.check
762
+ format.isbn output
763
+ format.doi output
764
+ format.url output
765
+ new.block
766
+ note output
767
+ fin.entry
768
+ }
769
+
770
+ FUNCTION {booklet}
771
+ { output.bibitem
772
+ format.authors output
773
+ author format.key output
774
+ new.block
775
+ format.title "title" output.check
776
+ howpublished address new.block.checkb
777
+ howpublished output
778
+ address output
779
+ format.date output
780
+ format.isbn output
781
+ format.doi output
782
+ format.url output
783
+ new.block
784
+ note output
785
+ fin.entry
786
+ }
787
+
788
+ FUNCTION {inbook}
789
+ { output.bibitem
790
+ author empty$
791
+ { format.editors "author and editor" output.check
792
+ editor format.key output
793
+ }
794
+ { format.authors output.nonnull
795
+ crossref missing$
796
+ { "author and editor" editor either.or.check }
797
+ 'skip$
798
+ if$
799
+ }
800
+ if$
801
+ new.block
802
+ format.btitle "title" output.check
803
+ crossref missing$
804
+ { format.bvolume output
805
+ format.chapter.pages "chapter and pages" output.check
806
+ new.block
807
+ format.number.series output
808
+ new.sentence
809
+ publisher "publisher" output.check
810
+ address output
811
+ }
812
+ { format.chapter.pages "chapter and pages" output.check
813
+ new.block
814
+ format.book.crossref output.nonnull
815
+ }
816
+ if$
817
+ format.edition output
818
+ format.date "year" output.check
819
+ format.isbn output
820
+ format.doi output
821
+ format.url output
822
+ new.block
823
+ note output
824
+ fin.entry
825
+ }
826
+
827
+ FUNCTION {incollection}
828
+ { output.bibitem
829
+ format.authors "author" output.check
830
+ author format.key output
831
+ new.block
832
+ format.title "title" output.check
833
+ new.block
834
+ crossref missing$
835
+ { format.in.ed.booktitle "booktitle" output.check
836
+ format.bvolume output
837
+ format.number.series output
838
+ format.chapter.pages output
839
+ new.sentence
840
+ publisher "publisher" output.check
841
+ address output
842
+ format.edition output
843
+ format.date "year" output.check
844
+ }
845
+ { format.incoll.inproc.crossref output.nonnull
846
+ format.chapter.pages output
847
+ }
848
+ if$
849
+ format.isbn output
850
+ format.doi output
851
+ format.url output
852
+ new.block
853
+ note output
854
+ fin.entry
855
+ }
856
+
857
+ FUNCTION {inproceedings}
858
+ { output.bibitem
859
+ format.authors "author" output.check
860
+ author format.key output
861
+ new.block
862
+ format.title "title" output.check
863
+ new.block
864
+ crossref missing$
865
+ { format.in.ed.booktitle "booktitle" output.check
866
+ format.bvolume output
867
+ format.number.series output
868
+ format.pages output
869
+ address empty$
870
+ { organization publisher new.sentence.checkb
871
+ organization output
872
+ publisher output
873
+ format.date "year" output.check
874
+ }
875
+ { address output.nonnull
876
+ format.date "year" output.check
877
+ new.sentence
878
+ organization output
879
+ publisher output
880
+ }
881
+ if$
882
+ }
883
+ { format.incoll.inproc.crossref output.nonnull
884
+ format.pages output
885
+ }
886
+ if$
887
+ format.isbn output
888
+ format.doi output
889
+ format.url output
890
+ new.block
891
+ note output
892
+ fin.entry
893
+ }
894
+
895
+ FUNCTION {conference} { inproceedings }
896
+
897
+ FUNCTION {manual}
898
+ { output.bibitem
899
+ format.authors output
900
+ author format.key output
901
+ new.block
902
+ format.btitle "title" output.check
903
+ organization address new.block.checkb
904
+ organization output
905
+ address output
906
+ format.edition output
907
+ format.date output
908
+ format.url output
909
+ new.block
910
+ note output
911
+ fin.entry
912
+ }
913
+
914
+ FUNCTION {mastersthesis}
915
+ { output.bibitem
916
+ format.authors "author" output.check
917
+ author format.key output
918
+ new.block
919
+ format.title "title" output.check
920
+ new.block
921
+ "Master's thesis" format.thesis.type output.nonnull
922
+ school "school" output.check
923
+ address output
924
+ format.date "year" output.check
925
+ format.url output
926
+ new.block
927
+ note output
928
+ fin.entry
929
+ }
930
+
931
+ FUNCTION {misc}
932
+ { output.bibitem
933
+ format.authors output
934
+ author format.key output
935
+ title howpublished new.block.checkb
936
+ format.title output
937
+ howpublished new.block.checka
938
+ howpublished output
939
+ format.date output
940
+ format.issn output
941
+ format.url output
942
+ new.block
943
+ note output
944
+ fin.entry
945
+ empty.misc.check
946
+ }
947
+
948
+ FUNCTION {phdthesis}
949
+ { output.bibitem
950
+ format.authors "author" output.check
951
+ author format.key output
952
+ new.block
953
+ format.btitle "title" output.check
954
+ new.block
955
+ "PhD thesis" format.thesis.type output.nonnull
956
+ school "school" output.check
957
+ address output
958
+ format.date "year" output.check
959
+ format.url output
960
+ new.block
961
+ note output
962
+ fin.entry
963
+ }
964
+
965
+ FUNCTION {proceedings}
966
+ { output.bibitem
967
+ format.editors output
968
+ editor format.key output
969
+ new.block
970
+ format.btitle "title" output.check
971
+ format.bvolume output
972
+ format.number.series output
973
+ address output
974
+ format.date "year" output.check
975
+ new.sentence
976
+ organization output
977
+ publisher output
978
+ format.isbn output
979
+ format.doi output
980
+ format.url output
981
+ new.block
982
+ note output
983
+ fin.entry
984
+ }
985
+
986
+ FUNCTION {techreport}
987
+ { output.bibitem
988
+ format.authors "author" output.check
989
+ author format.key output
990
+ new.block
991
+ format.title "title" output.check
992
+ new.block
993
+ format.tr.number output.nonnull
994
+ institution "institution" output.check
995
+ address output
996
+ format.date "year" output.check
997
+ format.url output
998
+ new.block
999
+ note output
1000
+ fin.entry
1001
+ }
1002
+
1003
+ FUNCTION {unpublished}
1004
+ { output.bibitem
1005
+ format.authors "author" output.check
1006
+ author format.key output
1007
+ new.block
1008
+ format.title "title" output.check
1009
+ new.block
1010
+ note "note" output.check
1011
+ format.date output
1012
+ format.url output
1013
+ fin.entry
1014
+ }
1015
+
1016
+ FUNCTION {default.type} { misc }
1017
+
1018
+
1019
+ MACRO {jan} {"January"}
1020
+
1021
+ MACRO {feb} {"February"}
1022
+
1023
+ MACRO {mar} {"March"}
1024
+
1025
+ MACRO {apr} {"April"}
1026
+
1027
+ MACRO {may} {"May"}
1028
+
1029
+ MACRO {jun} {"June"}
1030
+
1031
+ MACRO {jul} {"July"}
1032
+
1033
+ MACRO {aug} {"August"}
1034
+
1035
+ MACRO {sep} {"September"}
1036
+
1037
+ MACRO {oct} {"October"}
1038
+
1039
+ MACRO {nov} {"November"}
1040
+
1041
+ MACRO {dec} {"December"}
1042
+
1043
+
1044
+
1045
+ MACRO {acmcs} {"ACM Computing Surveys"}
1046
+
1047
+ MACRO {acta} {"Acta Informatica"}
1048
+
1049
+ MACRO {cacm} {"Communications of the ACM"}
1050
+
1051
+ MACRO {ibmjrd} {"IBM Journal of Research and Development"}
1052
+
1053
+ MACRO {ibmsj} {"IBM Systems Journal"}
1054
+
1055
+ MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
1056
+
1057
+ MACRO {ieeetc} {"IEEE Transactions on Computers"}
1058
+
1059
+ MACRO {ieeetcad}
1060
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
1061
+
1062
+ MACRO {ipl} {"Information Processing Letters"}
1063
+
1064
+ MACRO {jacm} {"Journal of the ACM"}
1065
+
1066
+ MACRO {jcss} {"Journal of Computer and System Sciences"}
1067
+
1068
+ MACRO {scp} {"Science of Computer Programming"}
1069
+
1070
+ MACRO {sicomp} {"SIAM Journal on Computing"}
1071
+
1072
+ MACRO {tocs} {"ACM Transactions on Computer Systems"}
1073
+
1074
+ MACRO {tods} {"ACM Transactions on Database Systems"}
1075
+
1076
+ MACRO {tog} {"ACM Transactions on Graphics"}
1077
+
1078
+ MACRO {toms} {"ACM Transactions on Mathematical Software"}
1079
+
1080
+ MACRO {toois} {"ACM Transactions on Office Information Systems"}
1081
+
1082
+ MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
1083
+
1084
+ MACRO {tcs} {"Theoretical Computer Science"}
1085
+
1086
+
1087
+ READ
1088
+
1089
+ FUNCTION {sortify}
1090
+ { purify$
1091
+ "l" change.case$
1092
+ }
1093
+
1094
+ INTEGERS { len }
1095
+
1096
+ FUNCTION {chop.word}
1097
+ { 's :=
1098
+ 'len :=
1099
+ s #1 len substring$ =
1100
+ { s len #1 + global.max$ substring$ }
1101
+ 's
1102
+ if$
1103
+ }
1104
+
1105
+ FUNCTION {format.lab.names}
1106
+ { 's :=
1107
+ s #1 "{vv~}{ll}" format.name$
1108
+ s num.names$ duplicate$
1109
+ #2 >
1110
+ { pop$ " et~al." * }
1111
+ { #2 <
1112
+ 'skip$
1113
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1114
+ { " et~al." * }
1115
+ { " \& " * s #2 "{vv~}{ll}" format.name$ * }
1116
+ if$
1117
+ }
1118
+ if$
1119
+ }
1120
+ if$
1121
+ }
1122
+
1123
+ FUNCTION {author.key.label}
1124
+ { author empty$
1125
+ { key empty$
1126
+ { cite$ #1 #3 substring$ }
1127
+ 'key
1128
+ if$
1129
+ }
1130
+ { author format.lab.names }
1131
+ if$
1132
+ }
1133
+
1134
+ FUNCTION {author.editor.key.label}
1135
+ { author empty$
1136
+ { editor empty$
1137
+ { key empty$
1138
+ { cite$ #1 #3 substring$ }
1139
+ 'key
1140
+ if$
1141
+ }
1142
+ { editor format.lab.names }
1143
+ if$
1144
+ }
1145
+ { author format.lab.names }
1146
+ if$
1147
+ }
1148
+
1149
+ FUNCTION {author.key.organization.label}
1150
+ { author empty$
1151
+ { key empty$
1152
+ { organization empty$
1153
+ { cite$ #1 #3 substring$ }
1154
+ { "The " #4 organization chop.word #3 text.prefix$ }
1155
+ if$
1156
+ }
1157
+ 'key
1158
+ if$
1159
+ }
1160
+ { author format.lab.names }
1161
+ if$
1162
+ }
1163
+
1164
+ FUNCTION {editor.key.organization.label}
1165
+ { editor empty$
1166
+ { key empty$
1167
+ { organization empty$
1168
+ { cite$ #1 #3 substring$ }
1169
+ { "The " #4 organization chop.word #3 text.prefix$ }
1170
+ if$
1171
+ }
1172
+ 'key
1173
+ if$
1174
+ }
1175
+ { editor format.lab.names }
1176
+ if$
1177
+ }
1178
+
1179
+ FUNCTION {calc.short.authors}
1180
+ { type$ "book" =
1181
+ type$ "inbook" =
1182
+ or
1183
+ 'author.editor.key.label
1184
+ { type$ "proceedings" =
1185
+ 'editor.key.organization.label
1186
+ { type$ "manual" =
1187
+ 'author.key.organization.label
1188
+ 'author.key.label
1189
+ if$
1190
+ }
1191
+ if$
1192
+ }
1193
+ if$
1194
+ 'short.list :=
1195
+ }
1196
+
1197
+ FUNCTION {calc.label}
1198
+ { calc.short.authors
1199
+ short.list
1200
+ "("
1201
+ *
1202
+ year duplicate$ empty$
1203
+ short.list key field.or.null = or
1204
+ { pop$ "" }
1205
+ 'skip$
1206
+ if$
1207
+ *
1208
+ 'label :=
1209
+ }
1210
+
1211
+ FUNCTION {sort.format.names}
1212
+ { 's :=
1213
+ #1 'nameptr :=
1214
+ ""
1215
+ s num.names$ 'numnames :=
1216
+ numnames 'namesleft :=
1217
+ { namesleft #0 > }
1218
+ {
1219
+ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
1220
+ nameptr #1 >
1221
+ {
1222
+ " " *
1223
+ namesleft #1 = t "others" = and
1224
+ { "zzzzz" * }
1225
+ { numnames #2 > nameptr #2 = and
1226
+ { "zz" * year field.or.null * " " * }
1227
+ 'skip$
1228
+ if$
1229
+ t sortify *
1230
+ }
1231
+ if$
1232
+ }
1233
+ { t sortify * }
1234
+ if$
1235
+ nameptr #1 + 'nameptr :=
1236
+ namesleft #1 - 'namesleft :=
1237
+ }
1238
+ while$
1239
+ }
1240
+
1241
+ FUNCTION {sort.format.title}
1242
+ { 't :=
1243
+ "A " #2
1244
+ "An " #3
1245
+ "The " #4 t chop.word
1246
+ chop.word
1247
+ chop.word
1248
+ sortify
1249
+ #1 global.max$ substring$
1250
+ }
1251
+
1252
+ FUNCTION {author.sort}
1253
+ { author empty$
1254
+ { key empty$
1255
+ { "to sort, need author or key in " cite$ * warning$
1256
+ ""
1257
+ }
1258
+ { key sortify }
1259
+ if$
1260
+ }
1261
+ { author sort.format.names }
1262
+ if$
1263
+ }
1264
+
1265
+ FUNCTION {author.editor.sort}
1266
+ { author empty$
1267
+ { editor empty$
1268
+ { key empty$
1269
+ { "to sort, need author, editor, or key in " cite$ * warning$
1270
+ ""
1271
+ }
1272
+ { key sortify }
1273
+ if$
1274
+ }
1275
+ { editor sort.format.names }
1276
+ if$
1277
+ }
1278
+ { author sort.format.names }
1279
+ if$
1280
+ }
1281
+
1282
+ FUNCTION {author.organization.sort}
1283
+ { author empty$
1284
+ { organization empty$
1285
+ { key empty$
1286
+ { "to sort, need author, organization, or key in " cite$ * warning$
1287
+ ""
1288
+ }
1289
+ { key sortify }
1290
+ if$
1291
+ }
1292
+ { "The " #4 organization chop.word sortify }
1293
+ if$
1294
+ }
1295
+ { author sort.format.names }
1296
+ if$
1297
+ }
1298
+
1299
+ FUNCTION {editor.organization.sort}
1300
+ { editor empty$
1301
+ { organization empty$
1302
+ { key empty$
1303
+ { "to sort, need editor, organization, or key in " cite$ * warning$
1304
+ ""
1305
+ }
1306
+ { key sortify }
1307
+ if$
1308
+ }
1309
+ { "The " #4 organization chop.word sortify }
1310
+ if$
1311
+ }
1312
+ { editor sort.format.names }
1313
+ if$
1314
+ }
1315
+
1316
+
1317
+ FUNCTION {presort}
1318
+ { calc.label
1319
+ label sortify
1320
+ " "
1321
+ *
1322
+ type$ "book" =
1323
+ type$ "inbook" =
1324
+ or
1325
+ 'author.editor.sort
1326
+ { type$ "proceedings" =
1327
+ 'editor.organization.sort
1328
+ { type$ "manual" =
1329
+ 'author.organization.sort
1330
+ 'author.sort
1331
+ if$
1332
+ }
1333
+ if$
1334
+ }
1335
+ if$
1336
+ " "
1337
+ *
1338
+ year field.or.null sortify
1339
+ *
1340
+ " "
1341
+ *
1342
+ cite$
1343
+ *
1344
+ #1 entry.max$ substring$
1345
+ 'sort.label :=
1346
+ sort.label *
1347
+ #1 entry.max$ substring$
1348
+ 'sort.key$ :=
1349
+ }
1350
+
1351
+ ITERATE {presort}
1352
+
1353
+ SORT
1354
+
1355
+ STRINGS { longest.label last.label next.extra }
1356
+
1357
+ INTEGERS { longest.label.width last.extra.num number.label }
1358
+
1359
+ FUNCTION {initialize.longest.label}
1360
+ { "" 'longest.label :=
1361
+ #0 int.to.chr$ 'last.label :=
1362
+ "" 'next.extra :=
1363
+ #0 'longest.label.width :=
1364
+ #0 'last.extra.num :=
1365
+ #0 'number.label :=
1366
+ }
1367
+
1368
+ FUNCTION {forward.pass}
1369
+ { last.label label =
1370
+ { last.extra.num #1 + 'last.extra.num :=
1371
+ last.extra.num int.to.chr$ 'extra.label :=
1372
+ }
1373
+ { "a" chr.to.int$ 'last.extra.num :=
1374
+ "" 'extra.label :=
1375
+ label 'last.label :=
1376
+ }
1377
+ if$
1378
+ number.label #1 + 'number.label :=
1379
+ }
1380
+
1381
+ FUNCTION {reverse.pass}
1382
+ { next.extra "b" =
1383
+ { "a" 'extra.label := }
1384
+ 'skip$
1385
+ if$
1386
+ extra.label 'next.extra :=
1387
+ extra.label
1388
+ duplicate$ empty$
1389
+ 'skip$
1390
+ { "{\natexlab{" swap$ * "}}" * }
1391
+ if$
1392
+ 'extra.label :=
1393
+ label extra.label * 'label :=
1394
+ }
1395
+
1396
+ EXECUTE {initialize.longest.label}
1397
+
1398
+ ITERATE {forward.pass}
1399
+
1400
+ REVERSE {reverse.pass}
1401
+
1402
+ FUNCTION {bib.sort.order}
1403
+ { sort.label 'sort.key$ :=
1404
+ }
1405
+
1406
+ ITERATE {bib.sort.order}
1407
+
1408
+ SORT
1409
+
1410
+ FUNCTION {begin.bib}
1411
+ { preamble$ empty$
1412
+ 'skip$
1413
+ { preamble$ write$ newline$ }
1414
+ if$
1415
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
1416
+ write$ newline$
1417
+ "\providecommand{\natexlab}[1]{#1}"
1418
+ write$ newline$
1419
+ "\providecommand{\url}[1]{\texttt{#1}}"
1420
+ write$ newline$
1421
+ "\expandafter\ifx\csname urlstyle\endcsname\relax"
1422
+ write$ newline$
1423
+ " \providecommand{\doi}[1]{doi: #1}\else"
1424
+ write$ newline$
1425
+ " \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
1426
+ write$ newline$
1427
+ }
1428
+
1429
+ EXECUTE {begin.bib}
1430
+
1431
+ EXECUTE {init.state.consts}
1432
+
1433
+ ITERATE {call.type$}
1434
+
1435
+ FUNCTION {end.bib}
1436
+ { newline$
1437
+ "\end{thebibliography}" write$ newline$
1438
+ }
1439
+
1440
+ EXECUTE {end.bib}
latex_templates/Summary/iclr2022_conference.sty ADDED
@@ -0,0 +1,245 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ %%%% ICLR Macros (LaTex)
2
+ %%%% Adapted by Hugo Larochelle from the NIPS stylefile Macros
3
+ %%%% Style File
4
+ %%%% Dec 12, 1990 Rev Aug 14, 1991; Sept, 1995; April, 1997; April, 1999; October 2014
5
+
6
+ % This file can be used with Latex2e whether running in main mode, or
7
+ % 2.09 compatibility mode.
8
+ %
9
+ % If using main mode, you need to include the commands
10
+ % \documentclass{article}
11
+ % \usepackage{iclr14submit_e,times}
12
+ %
13
+
14
+ % Change the overall width of the page. If these parameters are
15
+ % changed, they will require corresponding changes in the
16
+ % maketitle section.
17
+ %
18
+ \usepackage{eso-pic} % used by \AddToShipoutPicture
19
+ \RequirePackage{fancyhdr}
20
+ \RequirePackage{natbib}
21
+
22
+ % modification to natbib citations
23
+ \setcitestyle{authoryear,round,citesep={;},aysep={,},yysep={;}}
24
+
25
+ \renewcommand{\topfraction}{0.95} % let figure take up nearly whole page
26
+ \renewcommand{\textfraction}{0.05} % let figure take up nearly whole page
27
+
28
+ % Define iclrfinal, set to true if iclrfinalcopy is defined
29
+ \newif\ificlrfinal
30
+ \iclrfinalfalse
31
+ \def\iclrfinalcopy{\iclrfinaltrue}
32
+ \font\iclrtenhv = phvb at 8pt
33
+
34
+ % Specify the dimensions of each page
35
+
36
+ \setlength{\paperheight}{11in}
37
+ \setlength{\paperwidth}{8.5in}
38
+
39
+
40
+ \oddsidemargin .5in % Note \oddsidemargin = \evensidemargin
41
+ \evensidemargin .5in
42
+ \marginparwidth 0.07 true in
43
+ %\marginparwidth 0.75 true in
44
+ %\topmargin 0 true pt % Nominal distance from top of page to top of
45
+ %\topmargin 0.125in
46
+ \topmargin -0.625in
47
+ \addtolength{\headsep}{0.25in}
48
+ \textheight 9.0 true in % Height of text (including footnotes & figures)
49
+ \textwidth 5.5 true in % Width of text line.
50
+ \widowpenalty=10000
51
+ \clubpenalty=10000
52
+
53
+ % \thispagestyle{empty} \pagestyle{empty}
54
+ \flushbottom \sloppy
55
+
56
+ % We're never going to need a table of contents, so just flush it to
57
+ % save space --- suggested by drstrip@sandia-2
58
+ \def\addcontentsline#1#2#3{}
59
+
60
+ % Title stuff, taken from deproc.
61
+ \def\maketitle{\par
62
+ \begingroup
63
+ \def\thefootnote{\fnsymbol{footnote}}
64
+ \def\@makefnmark{\hbox to 0pt{$^{\@thefnmark}$\hss}} % for perfect author
65
+ % name centering
66
+ % The footnote-mark was overlapping the footnote-text,
67
+ % added the following to fix this problem (MK)
68
+ \long\def\@makefntext##1{\parindent 1em\noindent
69
+ \hbox to1.8em{\hss $\m@th ^{\@thefnmark}$}##1}
70
+ \@maketitle \@thanks
71
+ \endgroup
72
+ \setcounter{footnote}{0}
73
+ \let\maketitle\relax \let\@maketitle\relax
74
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
75
+
76
+ % The toptitlebar has been raised to top-justify the first page
77
+
78
+ \usepackage{fancyhdr}
79
+ \pagestyle{fancy}
80
+ \fancyhead{}
81
+
82
+ % Title (includes both anonimized and non-anonimized versions)
83
+ \def\@maketitle{\vbox{\hsize\textwidth
84
+ %\linewidth\hsize \vskip 0.1in \toptitlebar \centering
85
+ {\LARGE\sc \@title\par}
86
+ %\bottomtitlebar % \vskip 0.1in % minus
87
+ \ificlrfinal
88
+ \lhead{Published as a conference paper at ICLR 2022}
89
+ \def\And{\end{tabular}\hfil\linebreak[0]\hfil
90
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
91
+ \def\AND{\end{tabular}\hfil\linebreak[4]\hfil
92
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
93
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\@author\end{tabular}%
94
+ \else
95
+ \lhead{Under review as a conference paper at ICLR 2022}
96
+ \def\And{\end{tabular}\hfil\linebreak[0]\hfil
97
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
98
+ \def\AND{\end{tabular}\hfil\linebreak[4]\hfil
99
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
100
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}Anonymous authors\\Paper under double-blind review\end{tabular}%
101
+ \fi
102
+ \vskip 0.3in minus 0.1in}}
103
+
104
+ \renewenvironment{abstract}{\vskip.075in\centerline{\large\sc
105
+ Abstract}\vspace{0.5ex}\begin{quote}}{\par\end{quote}\vskip 1ex}
106
+
107
+ % sections with less space
108
+ \def\section{\@startsection {section}{1}{\z@}{-2.0ex plus
109
+ -0.5ex minus -.2ex}{1.5ex plus 0.3ex
110
+ minus0.2ex}{\large\sc\raggedright}}
111
+
112
+ \def\subsection{\@startsection{subsection}{2}{\z@}{-1.8ex plus
113
+ -0.5ex minus -.2ex}{0.8ex plus .2ex}{\normalsize\sc\raggedright}}
114
+ \def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-1.5ex
115
+ plus -0.5ex minus -.2ex}{0.5ex plus
116
+ .2ex}{\normalsize\sc\raggedright}}
117
+ \def\paragraph{\@startsection{paragraph}{4}{\z@}{1.5ex plus
118
+ 0.5ex minus .2ex}{-1em}{\normalsize\bf}}
119
+ \def\subparagraph{\@startsection{subparagraph}{5}{\z@}{1.5ex plus
120
+ 0.5ex minus .2ex}{-1em}{\normalsize\sc}}
121
+ \def\subsubsubsection{\vskip
122
+ 5pt{\noindent\normalsize\rm\raggedright}}
123
+
124
+
125
+ % Footnotes
126
+ \footnotesep 6.65pt %
127
+ \skip\footins 9pt plus 4pt minus 2pt
128
+ \def\footnoterule{\kern-3pt \hrule width 12pc \kern 2.6pt }
129
+ \setcounter{footnote}{0}
130
+
131
+ % Lists and paragraphs
132
+ \parindent 0pt
133
+ \topsep 4pt plus 1pt minus 2pt
134
+ \partopsep 1pt plus 0.5pt minus 0.5pt
135
+ \itemsep 2pt plus 1pt minus 0.5pt
136
+ \parsep 2pt plus 1pt minus 0.5pt
137
+ \parskip .5pc
138
+
139
+
140
+ %\leftmargin2em
141
+ \leftmargin3pc
142
+ \leftmargini\leftmargin \leftmarginii 2em
143
+ \leftmarginiii 1.5em \leftmarginiv 1.0em \leftmarginv .5em
144
+
145
+ %\labelsep \labelsep 5pt
146
+
147
+ \def\@listi{\leftmargin\leftmargini}
148
+ \def\@listii{\leftmargin\leftmarginii
149
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
150
+ \topsep 2pt plus 1pt minus 0.5pt
151
+ \parsep 1pt plus 0.5pt minus 0.5pt
152
+ \itemsep \parsep}
153
+ \def\@listiii{\leftmargin\leftmarginiii
154
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
155
+ \topsep 1pt plus 0.5pt minus 0.5pt
156
+ \parsep \z@ \partopsep 0.5pt plus 0pt minus 0.5pt
157
+ \itemsep \topsep}
158
+ \def\@listiv{\leftmargin\leftmarginiv
159
+ \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
160
+ \def\@listv{\leftmargin\leftmarginv
161
+ \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
162
+ \def\@listvi{\leftmargin\leftmarginvi
163
+ \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
164
+
165
+ \abovedisplayskip 7pt plus2pt minus5pt%
166
+ \belowdisplayskip \abovedisplayskip
167
+ \abovedisplayshortskip 0pt plus3pt%
168
+ \belowdisplayshortskip 4pt plus3pt minus3pt%
169
+
170
+ % Less leading in most fonts (due to the narrow columns)
171
+ % The choices were between 1-pt and 1.5-pt leading
172
+ %\def\@normalsize{\@setsize\normalsize{11pt}\xpt\@xpt} % got rid of @ (MK)
173
+ \def\normalsize{\@setsize\normalsize{11pt}\xpt\@xpt}
174
+ \def\small{\@setsize\small{10pt}\ixpt\@ixpt}
175
+ \def\footnotesize{\@setsize\footnotesize{10pt}\ixpt\@ixpt}
176
+ \def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
177
+ \def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
178
+ \def\large{\@setsize\large{14pt}\xiipt\@xiipt}
179
+ \def\Large{\@setsize\Large{16pt}\xivpt\@xivpt}
180
+ \def\LARGE{\@setsize\LARGE{20pt}\xviipt\@xviipt}
181
+ \def\huge{\@setsize\huge{23pt}\xxpt\@xxpt}
182
+ \def\Huge{\@setsize\Huge{28pt}\xxvpt\@xxvpt}
183
+
184
+ \def\toptitlebar{\hrule height4pt\vskip .25in\vskip-\parskip}
185
+
186
+ \def\bottomtitlebar{\vskip .29in\vskip-\parskip\hrule height1pt\vskip
187
+ .09in} %
188
+ %Reduced second vskip to compensate for adding the strut in \@author
189
+
190
+
191
+ %% % Vertical Ruler
192
+ %% % This code is, largely, from the CVPR 2010 conference style file
193
+ %% % ----- define vruler
194
+ %% \makeatletter
195
+ %% \newbox\iclrrulerbox
196
+ %% \newcount\iclrrulercount
197
+ %% \newdimen\iclrruleroffset
198
+ %% \newdimen\cv@lineheight
199
+ %% \newdimen\cv@boxheight
200
+ %% \newbox\cv@tmpbox
201
+ %% \newcount\cv@refno
202
+ %% \newcount\cv@tot
203
+ %% % NUMBER with left flushed zeros \fillzeros[<WIDTH>]<NUMBER>
204
+ %% \newcount\cv@tmpc@ \newcount\cv@tmpc
205
+ %% \def\fillzeros[#1]#2{\cv@tmpc@=#2\relax\ifnum\cv@tmpc@<0\cv@tmpc@=-\cv@tmpc@\fi
206
+ %% \cv@tmpc=1 %
207
+ %% \loop\ifnum\cv@tmpc@<10 \else \divide\cv@tmpc@ by 10 \advance\cv@tmpc by 1 \fi
208
+ %% \ifnum\cv@tmpc@=10\relax\cv@tmpc@=11\relax\fi \ifnum\cv@tmpc@>10 \repeat
209
+ %% \ifnum#2<0\advance\cv@tmpc1\relax-\fi
210
+ %% \loop\ifnum\cv@tmpc<#1\relax0\advance\cv@tmpc1\relax\fi \ifnum\cv@tmpc<#1 \repeat
211
+ %% \cv@tmpc@=#2\relax\ifnum\cv@tmpc@<0\cv@tmpc@=-\cv@tmpc@\fi \relax\the\cv@tmpc@}%
212
+ %% % \makevruler[<SCALE>][<INITIAL_COUNT>][<STEP>][<DIGITS>][<HEIGHT>]
213
+ %% \def\makevruler[#1][#2][#3][#4][#5]{\begingroup\offinterlineskip
214
+ %% \textheight=#5\vbadness=10000\vfuzz=120ex\overfullrule=0pt%
215
+ %% \global\setbox\iclrrulerbox=\vbox to \textheight{%
216
+ %% {\parskip=0pt\hfuzz=150em\cv@boxheight=\textheight
217
+ %% \cv@lineheight=#1\global\iclrrulercount=#2%
218
+ %% \cv@tot\cv@boxheight\divide\cv@tot\cv@lineheight\advance\cv@tot2%
219
+ %% \cv@refno1\vskip-\cv@lineheight\vskip1ex%
220
+ %% \loop\setbox\cv@tmpbox=\hbox to0cm{{\iclrtenhv\hfil\fillzeros[#4]\iclrrulercount}}%
221
+ %% \ht\cv@tmpbox\cv@lineheight\dp\cv@tmpbox0pt\box\cv@tmpbox\break
222
+ %% \advance\cv@refno1\global\advance\iclrrulercount#3\relax
223
+ %% \ifnum\cv@refno<\cv@tot\repeat}}\endgroup}%
224
+ %% \makeatother
225
+ %% % ----- end of vruler
226
+
227
+ %% % \makevruler[<SCALE>][<INITIAL_COUNT>][<STEP>][<DIGITS>][<HEIGHT>]
228
+ %% \def\iclrruler#1{\makevruler[12pt][#1][1][3][0.993\textheight]\usebox{\iclrrulerbox}}
229
+ %% \AddToShipoutPicture{%
230
+ %% \ificlrfinal\else
231
+ %% \iclrruleroffset=\textheight
232
+ %% \advance\iclrruleroffset by -3.7pt
233
+ %% \color[rgb]{.7,.7,.7}
234
+ %% \AtTextUpperLeft{%
235
+ %% \put(\LenToUnit{-35pt},\LenToUnit{-\iclrruleroffset}){%left ruler
236
+ %% \iclrruler{\iclrrulercount}}
237
+ %% }
238
+ %% \fi
239
+ %% }
240
+ %%% To add a vertical bar on the side
241
+ %\AddToShipoutPicture{
242
+ %\AtTextLowerLeft{
243
+ %\hspace*{-1.8cm}
244
+ %\colorbox[rgb]{0.7,0.7,0.7}{\small \parbox[b][\textheight]{0.1cm}{}}}
245
+ %}
latex_templates/Summary/introduction.tex ADDED
File without changes