|
|
""" |
|
|
Conference template definitions. |
|
|
|
|
|
Each template contains conference-specific formatting requirements |
|
|
and rules for paper submission quality checking. |
|
|
""" |
|
|
from dataclasses import dataclass, field |
|
|
from typing import List, Dict, Optional |
|
|
from enum import Enum |
|
|
|
|
|
|
|
|
class ConferenceField(Enum): |
|
|
"""Research field categories.""" |
|
|
NLP = "Natural Language Processing" |
|
|
CV = "Computer Vision" |
|
|
ML = "Machine Learning" |
|
|
|
|
|
|
|
|
@dataclass |
|
|
class ConferenceTemplate: |
|
|
""" |
|
|
Template containing conference-specific submission requirements. |
|
|
|
|
|
Attributes: |
|
|
name: Full conference name (e.g., "ACL 2025") |
|
|
short_name: Short identifier (e.g., "acl") |
|
|
field: Research field category |
|
|
page_limit_review: Page limit for review submission (main content only) |
|
|
page_limit_camera: Page limit for camera-ready (main content only) |
|
|
double_blind: Whether the conference uses double-blind review |
|
|
caption_table_above: Whether table captions should be above |
|
|
caption_figure_below: Whether figure captions should be below |
|
|
mandatory_sections: List of required sections (e.g., ["Limitations"]) |
|
|
optional_sections: List of encouraged sections |
|
|
style_package: Name of the LaTeX style package |
|
|
checkers: List of checker names to run for this template |
|
|
extra_rules: Additional conference-specific rules |
|
|
""" |
|
|
name: str |
|
|
short_name: str |
|
|
field: ConferenceField |
|
|
page_limit_review: int |
|
|
page_limit_camera: int |
|
|
double_blind: bool = True |
|
|
caption_table_above: bool = True |
|
|
caption_figure_below: bool = True |
|
|
mandatory_sections: List[str] = field(default_factory=list) |
|
|
optional_sections: List[str] = field(default_factory=list) |
|
|
style_package: str = "" |
|
|
checkers: List[str] = field(default_factory=lambda: [ |
|
|
'caption', 'reference', 'ai_artifacts', 'formatting', 'anonymization' |
|
|
]) |
|
|
extra_rules: Dict[str, str] = field(default_factory=dict) |
|
|
|
|
|
def to_dict(self) -> dict: |
|
|
return { |
|
|
'name': self.name, |
|
|
'short_name': self.short_name, |
|
|
'field': self.field.value, |
|
|
'page_limit_review': self.page_limit_review, |
|
|
'page_limit_camera': self.page_limit_camera, |
|
|
'double_blind': self.double_blind, |
|
|
'mandatory_sections': self.mandatory_sections, |
|
|
'optional_sections': self.optional_sections, |
|
|
'checkers': self.checkers, |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ACL_TEMPLATE = ConferenceTemplate( |
|
|
name="ACL 2025", |
|
|
short_name="acl", |
|
|
field=ConferenceField.NLP, |
|
|
page_limit_review=8, |
|
|
page_limit_camera=9, |
|
|
double_blind=True, |
|
|
mandatory_sections=["Limitations"], |
|
|
optional_sections=["Ethical Considerations"], |
|
|
style_package="acl2025", |
|
|
extra_rules={ |
|
|
"format": "Two-column, A4 paper", |
|
|
"references": "Unlimited pages for references", |
|
|
"appendix": "Allowed after references, two-column format", |
|
|
} |
|
|
) |
|
|
|
|
|
EMNLP_TEMPLATE = ConferenceTemplate( |
|
|
name="EMNLP 2024", |
|
|
short_name="emnlp", |
|
|
field=ConferenceField.NLP, |
|
|
page_limit_review=8, |
|
|
page_limit_camera=9, |
|
|
double_blind=True, |
|
|
mandatory_sections=["Limitations"], |
|
|
optional_sections=["Ethics Statement"], |
|
|
style_package="emnlp2024", |
|
|
extra_rules={ |
|
|
"format": "Two-column, single-spaced", |
|
|
"short_paper": "4 pages for short papers (5 camera-ready)", |
|
|
} |
|
|
) |
|
|
|
|
|
NAACL_TEMPLATE = ConferenceTemplate( |
|
|
name="NAACL 2025", |
|
|
short_name="naacl", |
|
|
field=ConferenceField.NLP, |
|
|
page_limit_review=8, |
|
|
page_limit_camera=9, |
|
|
double_blind=True, |
|
|
mandatory_sections=["Limitations"], |
|
|
optional_sections=["Ethics Statement"], |
|
|
style_package="naacl2025", |
|
|
extra_rules={ |
|
|
"review_system": "ACL Rolling Review (ARR)", |
|
|
"format": "Two-column, A4 paper", |
|
|
} |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CVPR_TEMPLATE = ConferenceTemplate( |
|
|
name="CVPR 2025", |
|
|
short_name="cvpr", |
|
|
field=ConferenceField.CV, |
|
|
page_limit_review=8, |
|
|
page_limit_camera=8, |
|
|
double_blind=True, |
|
|
mandatory_sections=[], |
|
|
optional_sections=[], |
|
|
style_package="cvpr", |
|
|
extra_rules={ |
|
|
"strict_anonymity": "No links to websites that reveal identity", |
|
|
"supplementary": "Separate PDF allowed, no page limit", |
|
|
"references": "No limit on references", |
|
|
} |
|
|
) |
|
|
|
|
|
ICCV_TEMPLATE = ConferenceTemplate( |
|
|
name="ICCV 2025", |
|
|
short_name="iccv", |
|
|
field=ConferenceField.CV, |
|
|
page_limit_review=8, |
|
|
page_limit_camera=8, |
|
|
double_blind=True, |
|
|
mandatory_sections=[], |
|
|
optional_sections=[], |
|
|
style_package="iccv", |
|
|
extra_rules={ |
|
|
"format": "Two-column, 10pt Times font", |
|
|
"supplementary": "Optional PDF for extra material", |
|
|
} |
|
|
) |
|
|
|
|
|
ECCV_TEMPLATE = ConferenceTemplate( |
|
|
name="ECCV 2024", |
|
|
short_name="eccv", |
|
|
field=ConferenceField.CV, |
|
|
page_limit_review=14, |
|
|
page_limit_camera=14, |
|
|
double_blind=True, |
|
|
mandatory_sections=[], |
|
|
optional_sections=[], |
|
|
style_package="eccv", |
|
|
extra_rules={ |
|
|
"format": "Springer LNCS format", |
|
|
"template": "Do not use TIMES font, use default template font", |
|
|
"headings": "Capitalize except articles/prepositions/conjunctions", |
|
|
} |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NEURIPS_TEMPLATE = ConferenceTemplate( |
|
|
name="NeurIPS 2025", |
|
|
short_name="neurips", |
|
|
field=ConferenceField.ML, |
|
|
page_limit_review=9, |
|
|
page_limit_camera=10, |
|
|
double_blind=True, |
|
|
mandatory_sections=["Paper Checklist"], |
|
|
optional_sections=["Broader Impact"], |
|
|
style_package="neurips_2025", |
|
|
extra_rules={ |
|
|
"checklist": "NeurIPS paper checklist is MANDATORY, desk reject without it", |
|
|
"appendix": "Technical appendix after checklist, no page limit", |
|
|
"format": "Single PDF including main content, references, and checklist", |
|
|
} |
|
|
) |
|
|
|
|
|
ICML_TEMPLATE = ConferenceTemplate( |
|
|
name="ICML 2025", |
|
|
short_name="icml", |
|
|
field=ConferenceField.ML, |
|
|
page_limit_review=8, |
|
|
page_limit_camera=9, |
|
|
double_blind=True, |
|
|
mandatory_sections=["Impact Statement"], |
|
|
optional_sections=["Acknowledgments"], |
|
|
style_package="icml2025", |
|
|
extra_rules={ |
|
|
"font": "10 point Times, embedded Type-1 fonts only", |
|
|
"lay_summary": "Plain language summary required for accepted papers", |
|
|
"format": "Use pdflatex for best results", |
|
|
} |
|
|
) |
|
|
|
|
|
ICLR_TEMPLATE = ConferenceTemplate( |
|
|
name="ICLR 2025", |
|
|
short_name="iclr", |
|
|
field=ConferenceField.ML, |
|
|
page_limit_review=10, |
|
|
page_limit_camera=10, |
|
|
double_blind=True, |
|
|
mandatory_sections=[], |
|
|
optional_sections=["Ethics Statement", "Reproducibility Statement"], |
|
|
style_package="iclr2025_conference", |
|
|
extra_rules={ |
|
|
"format": "10pt Times New Roman, 11pt vertical spacing", |
|
|
"submission": "Via OpenReview", |
|
|
"min_pages": "Main text must be between 6 and 10 pages", |
|
|
} |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TEMPLATE_REGISTRY: Dict[str, ConferenceTemplate] = { |
|
|
|
|
|
'acl': ACL_TEMPLATE, |
|
|
'emnlp': EMNLP_TEMPLATE, |
|
|
'naacl': NAACL_TEMPLATE, |
|
|
|
|
|
'cvpr': CVPR_TEMPLATE, |
|
|
'iccv': ICCV_TEMPLATE, |
|
|
'eccv': ECCV_TEMPLATE, |
|
|
|
|
|
'neurips': NEURIPS_TEMPLATE, |
|
|
'icml': ICML_TEMPLATE, |
|
|
'iclr': ICLR_TEMPLATE, |
|
|
} |
|
|
|
|
|
|
|
|
def get_template(name: str) -> Optional[ConferenceTemplate]: |
|
|
"""Get a conference template by short name.""" |
|
|
return TEMPLATE_REGISTRY.get(name.lower()) |
|
|
|
|
|
|
|
|
def get_all_templates() -> Dict[str, ConferenceTemplate]: |
|
|
"""Get all available templates.""" |
|
|
return TEMPLATE_REGISTRY.copy() |
|
|
|
|
|
|
|
|
def get_templates_by_field(field: ConferenceField) -> List[ConferenceTemplate]: |
|
|
"""Get templates filtered by research field.""" |
|
|
return [t for t in TEMPLATE_REGISTRY.values() if t.field == field] |
|
|
|