This repository provides User Manual for setting up a Docker environment tailored for testing DGTD code.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
2.8 KiB

8 months ago
from dataclasses import dataclass, field
from typing import TYPE_CHECKING, Union
from sphinxcontrib.bibtex.style.referencing import (
BracketStyle,
GroupReferenceStyle,
PersonStyle,
)
from .basic_label import (
BasicLabelParentheticalReferenceStyle,
BasicLabelTextualReferenceStyle,
)
from .extra_author import ExtraAuthorReferenceStyle
from .extra_empty import ExtraEmptyReferenceStyle
from .extra_label import ExtraLabelReferenceStyle
from .extra_year import ExtraYearReferenceStyle
if TYPE_CHECKING:
from pybtex.richtext import BaseText
@dataclass
class LabelReferenceStyle(GroupReferenceStyle):
"""Textual or parenthetical reference by label,
or just by author, label, or year.
"""
#: Bracket style for textual citations (:cite:t: and variations).
bracket_textual: BracketStyle = field(default_factory=BracketStyle)
#: Bracket style for parenthetical citations
#: (:cite:p: and variations).
bracket_parenthetical: BracketStyle = field(default_factory=BracketStyle)
#: Bracket style for author citations
#: (:cite:author: and variations).
bracket_author: BracketStyle = field(default_factory=BracketStyle)
#: Bracket style for label citations
#: (:cite:label: and variations).
bracket_label: BracketStyle = field(default_factory=BracketStyle)
#: Bracket style for year citations
#: (:cite:year: and variations).
bracket_year: BracketStyle = field(default_factory=BracketStyle)
#: Person style.
person: PersonStyle = field(default_factory=PersonStyle)
#: Separator between text and reference for textual citations.
text_reference_sep: Union["BaseText", str] = " "
#: Separator between pre-text and citation.
pre_text_sep: Union["BaseText", str] = " "
#: Separator between citation and post-text.
post_text_sep: Union["BaseText", str] = ", "
def __post_init__(self):
self.styles.extend(
[
BasicLabelParentheticalReferenceStyle(
bracket=self.bracket_parenthetical,
pre_text_sep=self.pre_text_sep,
post_text_sep=self.post_text_sep,
),
BasicLabelTextualReferenceStyle(
bracket=self.bracket_textual,
person=self.person,
text_reference_sep=self.text_reference_sep,
pre_text_sep=self.pre_text_sep,
post_text_sep=self.post_text_sep,
),
ExtraAuthorReferenceStyle(
bracket=self.bracket_author, person=self.person
),
ExtraLabelReferenceStyle(bracket=self.bracket_label),
ExtraYearReferenceStyle(bracket=self.bracket_year),
ExtraEmptyReferenceStyle(),
]
)
super().__post_init__()