1use crate::prelude::AsLatex;
2
3#[derive(Debug, Clone, PartialEq, Eq, Hash)]
4pub enum Label {
5 Standard(String),
6 Chapter(String),
7 Section(String),
8 Subsection(String),
9 Equation(String),
10 Table(String),
11 Figure(String),
12 Code(String),
13 Item(String),
14 Algorithm(String),
15}
16
17impl AsLatex for Label {
18 fn to_string(&self) -> String {
19 format!(
20 " \\label{{{}}} \n",
21 match &self {
22 Label::Standard(s) => format!("std:{s}"),
23 Label::Equation(s) => format!("eq:{s}"),
24 Label::Table(s) => format!("tab:{s}"),
25 Label::Figure(s) => format!("fig:{s}"),
26 Label::Section(s) => format!("sec:{s}"),
27 Label::Subsection(s) => format!("subsec:{s}"),
28 Label::Code(s) => format!("lst:{s}"),
29 Label::Item(s) => format!("itm:{s}"),
30 Label::Algorithm(s) => format!("alg:{s}"),
31 Label::Chapter(s) => format!("ch:{s}"),
32 }
33 )
34 }
35}
36
37#[derive(Debug, Clone, PartialEq, Eq)]
38pub enum Reference {
39 Standard(String),
40 Chapter(String),
41 Section(String),
42 Subsection(String),
43 Equation(String),
44 Table(String),
45 Figure(String),
46 Code(String),
47 Item(String),
48 Algorithm(String),
49}
50
51impl AsLatex for Reference {
52 fn to_string(&self) -> String {
53 format!(
54 "~\\ref{{{}}} \n",
55 match &self {
56 Reference::Standard(s) => format!("std:{s}"),
57 Reference::Equation(s) => format!("eq:{s}"),
58 Reference::Table(s) => format!("tab:{s}"),
59 Reference::Figure(s) => format!("fig:{s}"),
60 Reference::Section(s) => format!("sec:{s}"),
61 Reference::Subsection(s) => format!("subsec:{s}"),
62 Reference::Code(s) => format!("lst:{s}"),
63 Reference::Item(s) => format!("itm:{s}"),
64 Reference::Algorithm(s) => format!("alg:{s}"),
65 Reference::Chapter(s) => format!("ch:{s}"),
66 }
67 )
68 }
69}