@tonguetoquill/collection 0.14.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/quills/af4141/0.1.0/Quill.yaml +3 -3
- package/quills/af4141/0.1.0/example.md +9 -9
- package/quills/af4141/0.1.0/plate.typ +11 -1
- package/quills/classic_resume/0.1.0/Quill.yaml +4 -4
- package/quills/classic_resume/0.1.0/example.md +37 -37
- package/quills/classic_resume/0.1.0/plate.typ +5 -5
- package/quills/cmu_letter/0.1.0/plate.typ +6 -2
- package/quills/daf4392/0.1.0/plate.typ +10 -3
- package/quills/usaf_memo/0.1.0/Quill.yaml +2 -3
- package/quills/usaf_memo/0.1.0/plate.typ +2 -2
- package/quills/usaf_memo/0.2.0/Quill.yaml +13 -10
- package/quills/usaf_memo/0.2.0/plate.typ +2 -2
- package/templates/af4141.md +1 -1
- package/templates/templates.json +0 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tonguetoquill/collection",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/nibsbin/tonguetoquill-collection.git"
|
|
@@ -37,6 +37,6 @@
|
|
|
37
37
|
"dependencies": {},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@quillmark/registry": "^0.12.0",
|
|
40
|
-
"@quillmark/wasm": "^0.
|
|
40
|
+
"@quillmark/wasm": "^0.53.1"
|
|
41
41
|
}
|
|
42
42
|
}
|
|
@@ -41,7 +41,7 @@ cards:
|
|
|
41
41
|
fields:
|
|
42
42
|
date:
|
|
43
43
|
title: Date
|
|
44
|
-
type:
|
|
44
|
+
type: date
|
|
45
45
|
ui:
|
|
46
46
|
group: Record
|
|
47
47
|
description: Date of the action (column A).
|
|
@@ -63,7 +63,7 @@ cards:
|
|
|
63
63
|
|
|
64
64
|
written_grade_date:
|
|
65
65
|
title: Written Grade Date
|
|
66
|
-
type:
|
|
66
|
+
type: date
|
|
67
67
|
ui:
|
|
68
68
|
group: Record
|
|
69
69
|
compact: true
|
|
@@ -79,7 +79,7 @@ cards:
|
|
|
79
79
|
|
|
80
80
|
positional_grade_date:
|
|
81
81
|
title: Positional Grade Date
|
|
82
|
-
type:
|
|
82
|
+
type: date
|
|
83
83
|
ui:
|
|
84
84
|
group: Record
|
|
85
85
|
compact: true
|
|
@@ -30,7 +30,7 @@ commanders_auth: ""
|
|
|
30
30
|
<!-- Example 1: Initial assignment to a unit -->
|
|
31
31
|
---
|
|
32
32
|
CARD: experience
|
|
33
|
-
date:
|
|
33
|
+
date: 2025-01-15
|
|
34
34
|
action: "Assigned to 1 ACCS/DOT as Weapons Director"
|
|
35
35
|
written_grade: ""
|
|
36
36
|
written_grade_date: ""
|
|
@@ -42,10 +42,10 @@ auth_or_remarks: "Initial assignment"
|
|
|
42
42
|
<!-- Example 2: Written upgrade evaluation -->
|
|
43
43
|
---
|
|
44
44
|
CARD: experience
|
|
45
|
-
date:
|
|
45
|
+
date: 2025-03-15
|
|
46
46
|
action: "Completed written upgrade evaluation for 3-Level"
|
|
47
47
|
written_grade: "3"
|
|
48
|
-
written_grade_date:
|
|
48
|
+
written_grade_date: 2025-03-15
|
|
49
49
|
positional_grade: ""
|
|
50
50
|
positional_grade_date: ""
|
|
51
51
|
auth_or_remarks: "Per AFMAN 13-1CRCV1"
|
|
@@ -54,31 +54,31 @@ auth_or_remarks: "Per AFMAN 13-1CRCV1"
|
|
|
54
54
|
<!-- Example 3: Positional (live-environment) upgrade / certification -->
|
|
55
55
|
---
|
|
56
56
|
CARD: experience
|
|
57
|
-
date:
|
|
57
|
+
date: 2025-06-20
|
|
58
58
|
action: "Certified Mission Ready — positional upgrade"
|
|
59
59
|
written_grade: ""
|
|
60
60
|
written_grade_date: ""
|
|
61
61
|
positional_grade: "4"
|
|
62
|
-
positional_grade_date:
|
|
62
|
+
positional_grade_date: 2025-06-20
|
|
63
63
|
auth_or_remarks: "SSgt Jones, T.R."
|
|
64
64
|
---
|
|
65
65
|
|
|
66
66
|
<!-- Example 4: Combined written + positional upgrade (both columns filled) -->
|
|
67
67
|
---
|
|
68
68
|
CARD: experience
|
|
69
|
-
date:
|
|
69
|
+
date: 2025-08-01
|
|
70
70
|
action: "Upgrade evaluation — written and positional"
|
|
71
71
|
written_grade: "4"
|
|
72
|
-
written_grade_date:
|
|
72
|
+
written_grade_date: 2025-08-01
|
|
73
73
|
positional_grade: "4"
|
|
74
|
-
positional_grade_date:
|
|
74
|
+
positional_grade_date: 2025-08-01
|
|
75
75
|
auth_or_remarks: "Verified by unit commander"
|
|
76
76
|
---
|
|
77
77
|
|
|
78
78
|
<!-- Example 5: PCS departure — no grade columns needed -->
|
|
79
79
|
---
|
|
80
80
|
CARD: experience
|
|
81
|
-
date:
|
|
81
|
+
date: 2025-09-01
|
|
82
82
|
action: "PCS to 726 ACS/MOC, Tinker AFB OK"
|
|
83
83
|
written_grade: ""
|
|
84
84
|
written_grade_date: ""
|
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
|
|
4
4
|
#set text(font: ("NimbusRomNo9L", "Times New Roman", "serif"))
|
|
5
5
|
|
|
6
|
+
// `type: date` fields arrive as Typst `datetime`; PDF overlay expects strings.
|
|
7
|
+
#let form-cell(v) = {
|
|
8
|
+
if v == none { "" }
|
|
9
|
+
else if type(v) == datetime {
|
|
10
|
+
v.display("[month padding:none]/[day padding:none]/[year]")
|
|
11
|
+
} else {
|
|
12
|
+
str(v)
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
6
16
|
// Column order within each 7-field row group
|
|
7
17
|
#let col-keys = (
|
|
8
18
|
"date",
|
|
@@ -33,7 +43,7 @@
|
|
|
33
43
|
if card.CARD == "experience" {
|
|
34
44
|
if row < max-rows {
|
|
35
45
|
for (col, key) in col-keys.enumerate() {
|
|
36
|
-
let value = card.at(key, default:
|
|
46
|
+
let value = form-cell(card.at(key, default: none))
|
|
37
47
|
if value != "" {
|
|
38
48
|
let field-name = if row < 16 {
|
|
39
49
|
// Page 1: fields start at index 4, stride 7
|
|
@@ -38,17 +38,17 @@ cards:
|
|
|
38
38
|
title: Section Title
|
|
39
39
|
type: string
|
|
40
40
|
default: Experience
|
|
41
|
-
|
|
41
|
+
heading_left:
|
|
42
42
|
title: Heading Left (e.g., Company/School)
|
|
43
43
|
type: string
|
|
44
44
|
required: true
|
|
45
|
-
|
|
45
|
+
heading_right:
|
|
46
46
|
title: Heading Right (e.g., Location)
|
|
47
47
|
type: string
|
|
48
|
-
|
|
48
|
+
subheading_left:
|
|
49
49
|
title: Subheading Left (e.g., Title/Degree)
|
|
50
50
|
type: string
|
|
51
|
-
|
|
51
|
+
subheading_right:
|
|
52
52
|
title: Subheading Right (e.g., Date)
|
|
53
53
|
type: string
|
|
54
54
|
|
|
@@ -36,10 +36,10 @@ cells:
|
|
|
36
36
|
---
|
|
37
37
|
CARD: experience_section
|
|
38
38
|
title: Work Experience
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
heading_left: Templar Archives Research Division
|
|
40
|
+
heading_right: August 2024 – Present
|
|
41
|
+
subheading_left: Psionic Research Analyst
|
|
42
|
+
subheading_right: Aiur
|
|
43
43
|
---
|
|
44
44
|
|
|
45
45
|
- Analyzed Khala disruption patterns following Amon's corruption, developing countermeasures to protect remaining neural link infrastructure.
|
|
@@ -47,10 +47,10 @@ subheadingRight: Aiur
|
|
|
47
47
|
|
|
48
48
|
---
|
|
49
49
|
CARD: experience_section
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
heading_left: Terran Dominion Ghost Academy
|
|
51
|
+
heading_right: May 2025 – July 2025
|
|
52
|
+
subheading_left: Covert Ops Trainee
|
|
53
|
+
subheading_right: Tarsonis (Remote)
|
|
54
54
|
---
|
|
55
55
|
|
|
56
56
|
- Developed tactical HUD displays for Ghost operatives integrating real-time Zerg hive cluster intelligence.
|
|
@@ -59,10 +59,10 @@ subheadingRight: Tarsonis (Remote)
|
|
|
59
59
|
|
|
60
60
|
---
|
|
61
61
|
CARD: experience_section
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
heading_left: Abathur's Evolution Pit
|
|
63
|
+
heading_right: June 2023 – July 2023
|
|
64
|
+
subheading_left: Biomass Research Intern
|
|
65
|
+
subheading_right: Char
|
|
66
66
|
---
|
|
67
67
|
|
|
68
68
|
- Developed tracking algorithms for Overlord surveillance networks; supported pattern-of-life analysis for Terran outpost elimination.
|
|
@@ -70,10 +70,10 @@ subheadingRight: Char
|
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
CARD: experience_section
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
heading_left: Raynor's Raiders
|
|
74
|
+
heading_right: January 2018 – June 2020
|
|
75
|
+
subheading_left: Combat Engineer
|
|
76
|
+
subheading_right: Mar Sara
|
|
77
77
|
---
|
|
78
78
|
|
|
79
79
|
- Administered Hyperion shipboard systems, SCV maintenance protocols, and bunker defense automation for 30,000+ colonists.
|
|
@@ -84,18 +84,18 @@ subheadingRight: Mar Sara
|
|
|
84
84
|
---
|
|
85
85
|
CARD: experience_section
|
|
86
86
|
title: Education
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
87
|
+
heading_left: Carnegie Mellon University
|
|
88
|
+
heading_right: December 2025
|
|
89
|
+
subheading_left: Master of Information Technology Strategy
|
|
90
|
+
subheading_right: Pittsburgh, PA
|
|
91
91
|
---
|
|
92
92
|
|
|
93
93
|
---
|
|
94
94
|
CARD: experience_section
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
95
|
+
heading_left: United States Air Force Academy
|
|
96
|
+
heading_right: May 2024
|
|
97
|
+
subheading_left: BS, Data Science
|
|
98
|
+
subheading_right: Colorado Springs, CO
|
|
99
99
|
---
|
|
100
100
|
|
|
101
101
|
- Distinguished Graduate (top 10%); Chinese language minor (L2+/R1 on DLPT).
|
|
@@ -104,24 +104,24 @@ subheadingRight: Colorado Springs, CO
|
|
|
104
104
|
|
|
105
105
|
---
|
|
106
106
|
CARD: experience_section
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
heading_left: Western Governors University
|
|
108
|
+
heading_right: April 2022
|
|
109
|
+
subheading_left: BS, Cybersecurity and Information Assurance
|
|
110
|
+
subheading_right: Remote
|
|
111
111
|
---
|
|
112
112
|
|
|
113
113
|
---
|
|
114
114
|
CARD: experience_section
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
115
|
+
heading_left: Community College of the Air Force
|
|
116
|
+
heading_right: February 2019
|
|
117
|
+
subheading_left: AS, Information Systems Technology
|
|
118
|
+
subheading_right: Remote
|
|
119
119
|
---
|
|
120
120
|
|
|
121
121
|
---
|
|
122
122
|
CARD: experience_section
|
|
123
123
|
title: Cyber Competition
|
|
124
|
-
|
|
124
|
+
heading_left: 1st in SANS Academy Cup 2024
|
|
125
125
|
---
|
|
126
126
|
|
|
127
127
|
- Competed as the Delogrand Web Exploit SME, solving SQLi, API, and HTTP packet crafting problems.
|
|
@@ -129,7 +129,7 @@ headingLeft: 1st in SANS Academy Cup 2024
|
|
|
129
129
|
|
|
130
130
|
---
|
|
131
131
|
CARD: experience_section
|
|
132
|
-
|
|
132
|
+
heading_left: 1st in NCX 2023
|
|
133
133
|
---
|
|
134
134
|
|
|
135
135
|
- Developed strategies, defensive scripts, and exploits for the Cyber Combat event.
|
|
@@ -137,7 +137,7 @@ headingLeft: 1st in NCX 2023
|
|
|
137
137
|
|
|
138
138
|
---
|
|
139
139
|
CARD: experience_section
|
|
140
|
-
|
|
140
|
+
heading_left: 1st in SANS Academy Cup 2023
|
|
141
141
|
---
|
|
142
142
|
|
|
143
143
|
- Competed as the Delogrand Web Exploit SME, solving XSS, XXE, SQLi, and HTTP crafting problems.
|
|
@@ -145,14 +145,14 @@ headingLeft: 1st in SANS Academy Cup 2023
|
|
|
145
145
|
|
|
146
146
|
---
|
|
147
147
|
CARD: experience_section
|
|
148
|
-
|
|
148
|
+
heading_left: 1st in RMCS 2023
|
|
149
149
|
---
|
|
150
150
|
|
|
151
151
|
- Competed as the Delogrand Web Exploit SME, solving obfuscated JS, Wasm, XSS, and SQLi problems.
|
|
152
152
|
|
|
153
153
|
---
|
|
154
154
|
CARD: experience_section
|
|
155
|
-
|
|
155
|
+
heading_left: 1st in NCX 2022
|
|
156
156
|
---
|
|
157
157
|
|
|
158
158
|
- Trained and strategized teams for the Cyber Combat event.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#import "@local/quillmark-helper:0.1.0": data
|
|
1
|
+
#import "@local/quillmark-helper:0.1.0": data
|
|
2
2
|
#import "@local/ttq-classic-resume:0.1.0": *
|
|
3
3
|
|
|
4
4
|
#show: resume
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
|
|
16
16
|
if card.CARD == "experience_section" {
|
|
17
17
|
timeline-entry(
|
|
18
|
-
heading-left: card.at("
|
|
19
|
-
heading-right: card.at("
|
|
20
|
-
subheading-left: card.at("
|
|
21
|
-
subheading-right: card.at("
|
|
18
|
+
heading-left: card.at("heading_left", default: ""),
|
|
19
|
+
heading-right: card.at("heading_right", default: ""),
|
|
20
|
+
subheading-left: card.at("subheading_left", default: none),
|
|
21
|
+
subheading-right: card.at("subheading_right", default: none),
|
|
22
22
|
body: card.at("BODY", default: none),
|
|
23
23
|
)
|
|
24
24
|
} else if card.CARD == "skills_section" {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#import "@local/quillmark-helper:0.1.0": data
|
|
1
|
+
#import "@local/quillmark-helper:0.1.0": data
|
|
2
2
|
#import "@local/tonguetoquill-cmu-letter:0.1.0": backmatter, frontmatter, mainmatter
|
|
3
3
|
|
|
4
4
|
#show: frontmatter.with(
|
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
department: data.department,
|
|
7
7
|
address: data.address,
|
|
8
8
|
url: data.url,
|
|
9
|
-
date: if "date" in data
|
|
9
|
+
date: if "date" in data and data.date != none {
|
|
10
|
+
data.date
|
|
11
|
+
} else {
|
|
12
|
+
datetime.today()
|
|
13
|
+
},
|
|
10
14
|
recipient: data.recipient,
|
|
11
15
|
)
|
|
12
16
|
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
#import "@local/quillmark-helper:0.1.0": data
|
|
2
2
|
|
|
3
|
+
// `type: date` fields arrive as Typst `datetime`; overlay text must be plain strings.
|
|
4
|
+
#let show-date(v) = {
|
|
5
|
+
if v == none { "" }
|
|
6
|
+
else if type(v) == datetime { v.display("[month padding:none]/[day padding:none]/[year]") }
|
|
7
|
+
else { str(v) }
|
|
8
|
+
}
|
|
9
|
+
|
|
3
10
|
#set page(width: 8.5in, height: 11in, margin: 0in)
|
|
4
11
|
#set text(font: "Arimo", size: 10pt)
|
|
5
12
|
|
|
@@ -19,7 +26,7 @@
|
|
|
19
26
|
#check(411pt, 67pt, mode == "other")
|
|
20
27
|
|
|
21
28
|
// Fields
|
|
22
|
-
#tf(40pt, 100pt)[#data.at("departure_date", default:
|
|
29
|
+
#tf(40pt, 100pt)[#show-date(data.at("departure_date", default: none))]
|
|
23
30
|
#tf(123pt, 100pt)[#data.at("final_destination", default: "")]
|
|
24
31
|
|
|
25
32
|
// Itinerary Rows (via CARDS)
|
|
@@ -31,7 +38,7 @@
|
|
|
31
38
|
for card in data.CARDS {
|
|
32
39
|
if card.CARD == "itinerary" and row < 10 {
|
|
33
40
|
let dy = dy-start + (row * dy-step)
|
|
34
|
-
tf(80pt, dy)[#card.at("date", default:
|
|
41
|
+
tf(80pt, dy)[#show-date(card.at("date", default: none))]
|
|
35
42
|
tf(135pt, dy)[#card.at("departure_point", default: "")]
|
|
36
43
|
tf(295pt, dy)[#card.at("arrival_point", default: "")]
|
|
37
44
|
tf(450pt, dy)[#card.at("rest_length", default: "")]
|
|
@@ -56,7 +63,7 @@
|
|
|
56
63
|
|
|
57
64
|
// Acknowledgements
|
|
58
65
|
#tf(40pt, 620pt)[#data.at("organization", default: "")]
|
|
59
|
-
#tf(500pt, 620pt)[#data.at("briefed_date", default:
|
|
66
|
+
#tf(500pt, 620pt)[#show-date(data.at("briefed_date", default: none))]
|
|
60
67
|
|
|
61
68
|
#tf(40pt, 650pt)[#data.at("briefee_name", default: "")]
|
|
62
69
|
#tf(270pt, 650pt)[#data.at("briefee_grade", default: "")]
|
|
@@ -80,8 +80,7 @@ main:
|
|
|
80
80
|
|
|
81
81
|
date:
|
|
82
82
|
title: Date of memo (YYYY-MM-DD); defaults to today
|
|
83
|
-
type:
|
|
84
|
-
default: ""
|
|
83
|
+
type: date
|
|
85
84
|
ui:
|
|
86
85
|
group: Additional
|
|
87
86
|
description: YYYY-MM-DD. Leave blank to use today's date.
|
|
@@ -204,7 +203,7 @@ cards:
|
|
|
204
203
|
description: List of office symbols to receive copies of this endorsement.
|
|
205
204
|
date:
|
|
206
205
|
title: Date of endorsement (YYYY-MM-DD)
|
|
207
|
-
type:
|
|
206
|
+
type: date
|
|
208
207
|
ui:
|
|
209
208
|
group: Additional
|
|
210
209
|
description: Date of the endorsement. Leave blank to omit.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#import "@local/quillmark-helper:0.1.0": data
|
|
1
|
+
#import "@local/quillmark-helper:0.1.0": data
|
|
2
2
|
#import "@local/tonguetoquill-usaf-memo:1.0.0": backmatter, frontmatter, indorsement, mainmatter
|
|
3
3
|
|
|
4
4
|
// Frontmatter configuration
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
letterhead_seal: image("assets/dow_seal.jpg"),
|
|
10
10
|
|
|
11
11
|
// Date
|
|
12
|
-
date:
|
|
12
|
+
date: data.at("date", default: none),
|
|
13
13
|
|
|
14
14
|
// Receiver information
|
|
15
15
|
memo_for: data.memo_for,
|
|
@@ -78,14 +78,6 @@ main:
|
|
|
78
78
|
group: Letterhead
|
|
79
79
|
description: Organizational motto at the bottom of the page.
|
|
80
80
|
|
|
81
|
-
date:
|
|
82
|
-
title: Date of memo (YYYY-MM-DD); defaults to today
|
|
83
|
-
type: string
|
|
84
|
-
default: ""
|
|
85
|
-
ui:
|
|
86
|
-
group: Additional
|
|
87
|
-
description: YYYY-MM-DD. Leave blank to use today's date.
|
|
88
|
-
|
|
89
81
|
references:
|
|
90
82
|
title: References for the memo
|
|
91
83
|
type: array
|
|
@@ -135,8 +127,9 @@ main:
|
|
|
135
127
|
- CONFIDENTIAL
|
|
136
128
|
ui:
|
|
137
129
|
group: Additional
|
|
130
|
+
compact: true
|
|
138
131
|
description: Follow AFI 31-401 and applicable DoD guidance for classification markings. Leave blank for unclassified.
|
|
139
|
-
|
|
132
|
+
|
|
140
133
|
font_size:
|
|
141
134
|
title: Font size for the memo text (int pt)
|
|
142
135
|
type: number
|
|
@@ -145,8 +138,18 @@ main:
|
|
|
145
138
|
- 11
|
|
146
139
|
ui:
|
|
147
140
|
group: Additional
|
|
141
|
+
compact: true
|
|
148
142
|
description: Font size for the memo text (pt).
|
|
149
143
|
|
|
144
|
+
date:
|
|
145
|
+
title: Date of memo (YYYY-MM-DD); defaults to today
|
|
146
|
+
type: date
|
|
147
|
+
default: ""
|
|
148
|
+
ui:
|
|
149
|
+
group: Additional
|
|
150
|
+
description: YYYY-MM-DD. Leave blank to use today's date.
|
|
151
|
+
|
|
152
|
+
|
|
150
153
|
cards:
|
|
151
154
|
indorsement:
|
|
152
155
|
title: Routing indorsement
|
|
@@ -214,7 +217,7 @@ cards:
|
|
|
214
217
|
description: List of office symbols to receive copies of this endorsement.
|
|
215
218
|
date:
|
|
216
219
|
title: Date of endorsement (YYYY-MM-DD)
|
|
217
|
-
type:
|
|
220
|
+
type: date
|
|
218
221
|
ui:
|
|
219
222
|
group: Additional
|
|
220
223
|
description: Date of the endorsement. Leave blank to omit.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#import "@local/quillmark-helper:0.1.0": data
|
|
1
|
+
#import "@local/quillmark-helper:0.1.0": data
|
|
2
2
|
#import "@local/tonguetoquill-usaf-memo:2.0.0": backmatter, frontmatter, indorsement, mainmatter
|
|
3
3
|
|
|
4
4
|
// Frontmatter configuration
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
letterhead_seal: image("assets/dow_seal.png"),
|
|
10
10
|
|
|
11
11
|
// Date
|
|
12
|
-
date:
|
|
12
|
+
date: data.at("date", default: none),
|
|
13
13
|
|
|
14
14
|
// Receiver information
|
|
15
15
|
memo_for: data.memo_for,
|
package/templates/af4141.md
CHANGED
package/templates/templates.json
CHANGED
|
@@ -27,13 +27,6 @@
|
|
|
27
27
|
"file": "rebuttal.md",
|
|
28
28
|
"production": true
|
|
29
29
|
},
|
|
30
|
-
{
|
|
31
|
-
"id": "taro-template",
|
|
32
|
-
"name": "Taro Template",
|
|
33
|
-
"description": "Official Taro ice cream template",
|
|
34
|
-
"file": "taro.md",
|
|
35
|
-
"production": false
|
|
36
|
-
},
|
|
37
30
|
{
|
|
38
31
|
"id": "cmu-letter",
|
|
39
32
|
"name": "CMU Letter",
|