@dataimago/css 0.1.0-alpha.16 → 0.1.0-alpha.19
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/README.md +22 -0
- package/dist/bin/dataimago-sync.mjs +342 -0
- package/dist/dataviz/dataimago-dataviz.css +42 -0
- package/dist/dataviz/dataimago-dataviz.json +42 -0
- package/dist/dataviz/dataimago-dataviz.tex +21 -0
- package/dist/dataviz/dataimago_dataviz.R +61 -0
- package/dist/latex/dataimago-tokens.sty +122 -0
- package/dist/latex/dataimago.sty +618 -0
- package/dist/outputs.json +26 -0
- package/dist/quarto/components.scss +230 -0
- package/dist/quarto/dataimago-dark.scss +321 -0
- package/dist/quarto/dataimago-light.scss +321 -0
- package/dist/templates/KNOWLEDGE-explorer.md +236 -0
- package/dist/templates/KNOWLEDGE-framework.md +233 -0
- package/dist/templates/KNOWLEDGE-research.md +201 -0
- package/dist/templates/quarto_website/README.md +48 -0
- package/dist/templates/quarto_website/_quarto.yml.template +141 -0
- package/dist/templates/quarto_website/about.qmd.template +36 -0
- package/dist/templates/quarto_website/assets/js/custom-anchors.js +6 -0
- package/dist/templates/quarto_website/assets/js/logo-switch.js +73 -0
- package/dist/templates/quarto_website/assets/js/scroll.js +67 -0
- package/dist/templates/quarto_website/ethics.qmd.template +49 -0
- package/dist/templates/quarto_website/index.qmd.template +71 -0
- package/dist/tokens.css +29 -0
- package/dist/tokens.scss +29 -0
- package/package.json +10 -2
|
@@ -0,0 +1,618 @@
|
|
|
1
|
+
% @dataimago/css@0.1.0-alpha.19 dist/latex/dataimago.sty · sha256:deefadc765fb6c3fb673d7b4e71dcc7d12473f2ee4f0de1160af062b94d7e810 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync
|
|
2
|
+
%%%
|
|
3
|
+
%%% dataimago.sty - LaTeX Style Package for dataimago Design System
|
|
4
|
+
%%%
|
|
5
|
+
%%% A unified LaTeX package providing consistent typography, colors, and layout
|
|
6
|
+
%%% for PDF documents aligned with the dataimago design system.
|
|
7
|
+
%%%
|
|
8
|
+
%%% Copyright (c) 2025 dataimago
|
|
9
|
+
%%% License: MIT (see LICENSE.md)
|
|
10
|
+
%%%
|
|
11
|
+
%%% Version: 0.1.0
|
|
12
|
+
%%% Date: 2025-10-19
|
|
13
|
+
%%%
|
|
14
|
+
%%% USAGE:
|
|
15
|
+
%%% \usepackage{dataimago}
|
|
16
|
+
%%%
|
|
17
|
+
%%% REQUIREMENTS:
|
|
18
|
+
%%% - XeLaTeX or LuaLaTeX (for fontspec and unicode-math)
|
|
19
|
+
%%% - System fonts: Noto Sans, Noto Sans Mono, Noto Sans Math, Josefin Sans
|
|
20
|
+
%%% - memoir document class (for full book/report features)
|
|
21
|
+
%%% - Or article class (basic features only)
|
|
22
|
+
%%%
|
|
23
|
+
%%% FEATURES:
|
|
24
|
+
%%% - dataimago typography (Noto Sans + Josefin Sans)
|
|
25
|
+
%%% - dataimago color tokens (surface, content, border, brand colors)
|
|
26
|
+
%%% - Custom memoir page styles and chapter/section formatting
|
|
27
|
+
%%% - Theorem and definition boxes styled with dataimago tokens
|
|
28
|
+
%%% - Front matter commands for title pages and abstracts
|
|
29
|
+
%%%
|
|
30
|
+
%%% For more information, see README.md
|
|
31
|
+
%%%
|
|
32
|
+
|
|
33
|
+
\NeedsTeXFormat{LaTeX2e}
|
|
34
|
+
\ProvidesPackage{dataimago}[2025/10/19 v0.1.0 dataimago Design System for LaTeX]
|
|
35
|
+
|
|
36
|
+
%%%
|
|
37
|
+
%%% PACKAGE IDENTIFICATION
|
|
38
|
+
%%%
|
|
39
|
+
\typeout{dataimago.sty v0.1.0 - dataimago Design System for LaTeX}
|
|
40
|
+
\typeout{Loading dataimago typography, colors, and layout...}
|
|
41
|
+
|
|
42
|
+
%%%
|
|
43
|
+
%%% REQUIRED PACKAGES
|
|
44
|
+
%%%
|
|
45
|
+
|
|
46
|
+
%% Font and math support (XeLaTeX/LuaLaTeX required)
|
|
47
|
+
\RequirePackage{fontspec}
|
|
48
|
+
\RequirePackage{unicode-math}
|
|
49
|
+
|
|
50
|
+
%% Color support
|
|
51
|
+
\RequirePackage[svgnames]{xcolor}
|
|
52
|
+
% Design-token colours (generated; ships beside this file in @dataimago/css dist/latex/)
|
|
53
|
+
\RequirePackage{dataimago-tokens}
|
|
54
|
+
|
|
55
|
+
%% Core LaTeX packages
|
|
56
|
+
\RequirePackage[obeyspaces,hyphens]{url}
|
|
57
|
+
\RequirePackage{graphicx}
|
|
58
|
+
\RequirePackage{rotating,bm,amsmath,amsfonts,amssymb,indentfirst,lscape}
|
|
59
|
+
\RequirePackage{caption}
|
|
60
|
+
|
|
61
|
+
%% Box and list support
|
|
62
|
+
\RequirePackage{tcolorbox}
|
|
63
|
+
\tcbuselibrary{most,skins,breakable}
|
|
64
|
+
\RequirePackage{enumitem}
|
|
65
|
+
|
|
66
|
+
%% Memoir-specific packages (loaded only if memoir class is detected)
|
|
67
|
+
\@ifclassloaded{memoir}{%
|
|
68
|
+
\RequirePackage{epigraph}
|
|
69
|
+
\RequirePackage{tabularx}
|
|
70
|
+
\typeout{dataimago: memoir class detected - loading enhanced features}
|
|
71
|
+
}{%
|
|
72
|
+
% Article class - load alternative packages
|
|
73
|
+
\RequirePackage{sectsty}
|
|
74
|
+
\RequirePackage{titling}
|
|
75
|
+
\typeout{dataimago: article class detected - loading basic features}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
%%%
|
|
79
|
+
%%% SECTION 1: TYPOGRAPHY - FONTS
|
|
80
|
+
%%%
|
|
81
|
+
%%% dataimago font stack: Noto Sans (body/math) + Josefin Sans (headings)
|
|
82
|
+
%%% Using system fonts for portability across machines
|
|
83
|
+
%%%
|
|
84
|
+
|
|
85
|
+
%% Body Font: Noto Sans
|
|
86
|
+
% Token: font.family.sans = "Noto Sans, system-ui, sans-serif"
|
|
87
|
+
\setmainfont{Noto Sans}[
|
|
88
|
+
Scale=1.0,
|
|
89
|
+
Ligatures=TeX,
|
|
90
|
+
Numbers=OldStyle
|
|
91
|
+
]
|
|
92
|
+
|
|
93
|
+
\setsansfont{Noto Sans}[
|
|
94
|
+
Scale=1.0,
|
|
95
|
+
Ligatures=TeX
|
|
96
|
+
]
|
|
97
|
+
|
|
98
|
+
%% Monospace Font: Noto Sans Mono
|
|
99
|
+
% Token: font.family.mono = "Noto Sans Mono, ..."
|
|
100
|
+
\setmonofont{Noto Sans Mono}[
|
|
101
|
+
Scale=0.95,
|
|
102
|
+
Ligatures=TeX
|
|
103
|
+
]
|
|
104
|
+
|
|
105
|
+
%% Math Font: Noto Sans Math
|
|
106
|
+
% Token: font.family.math = "Noto Sans Math, ..."
|
|
107
|
+
% OpenType MATH table support for proper equation rendering
|
|
108
|
+
\setmathfont{Noto Sans Math}[
|
|
109
|
+
Scale=1.0,
|
|
110
|
+
math-style=ISO,
|
|
111
|
+
bold-style=ISO
|
|
112
|
+
]
|
|
113
|
+
|
|
114
|
+
%% Heading Font: Josefin Sans
|
|
115
|
+
% Token: font.family.display = "Josefin Sans, system-ui, sans-serif"
|
|
116
|
+
% Using system fonts for portability across machines
|
|
117
|
+
% Hierarchical weight variants for clear visual hierarchy
|
|
118
|
+
% Note: Font family names include the weight for non-Regular weights
|
|
119
|
+
|
|
120
|
+
% Bold (700) - Default, for Title, Chapters
|
|
121
|
+
\newfontfamily\HeadingFont[
|
|
122
|
+
Scale=MatchLowercase,
|
|
123
|
+
LetterSpace=0.5,
|
|
124
|
+
BoldFont=Josefin Sans
|
|
125
|
+
]{Josefin Sans}
|
|
126
|
+
\let\HeadingFontBold\HeadingFont % Alias for clarity
|
|
127
|
+
|
|
128
|
+
% SemiBold (600) - For Subtitle
|
|
129
|
+
\newfontfamily\HeadingFontSemiBold[
|
|
130
|
+
Scale=MatchLowercase,
|
|
131
|
+
LetterSpace=0.5,
|
|
132
|
+
BoldFont=Josefin Sans
|
|
133
|
+
]{Josefin Sans SemiBold}
|
|
134
|
+
|
|
135
|
+
% Medium (500) - For Sections
|
|
136
|
+
% Note: Josefin Sans doesn't have Medium weight, using Regular
|
|
137
|
+
\newfontfamily\HeadingFontMedium[
|
|
138
|
+
Scale=MatchLowercase,
|
|
139
|
+
LetterSpace=0.5,
|
|
140
|
+
BoldFont=Josefin Sans
|
|
141
|
+
]{Josefin Sans}
|
|
142
|
+
|
|
143
|
+
% Regular (400) - For Subsections
|
|
144
|
+
\newfontfamily\HeadingFontRegular[
|
|
145
|
+
Scale=MatchLowercase,
|
|
146
|
+
LetterSpace=0.5,
|
|
147
|
+
BoldFont=Josefin Sans
|
|
148
|
+
]{Josefin Sans}
|
|
149
|
+
|
|
150
|
+
% Light (300) - For Subsubsections
|
|
151
|
+
\newfontfamily\HeadingFontLight[
|
|
152
|
+
Scale=MatchLowercase,
|
|
153
|
+
LetterSpace=0.5,
|
|
154
|
+
BoldFont=Josefin Sans
|
|
155
|
+
]{Josefin Sans Light}
|
|
156
|
+
|
|
157
|
+
% ExtraLight (200) - For future use (captions, labels)
|
|
158
|
+
% Note: Using Thin as ExtraLight equivalent
|
|
159
|
+
\newfontfamily\HeadingFontExtraLight[
|
|
160
|
+
Scale=MatchLowercase,
|
|
161
|
+
LetterSpace=0.5,
|
|
162
|
+
BoldFont=Josefin Sans
|
|
163
|
+
]{Josefin Sans Thin}
|
|
164
|
+
|
|
165
|
+
%% Apply Josefin to section headings (article class only)
|
|
166
|
+
\@ifclassloaded{memoir}{%
|
|
167
|
+
% Memoir class - skip sectsty (incompatible with memoir)
|
|
168
|
+
% Section formatting handled in SECTION 3 below
|
|
169
|
+
}{%
|
|
170
|
+
% Article class - use sectsty
|
|
171
|
+
\allsectionsfont{\HeadingFont\color{ContentPrimary}}
|
|
172
|
+
|
|
173
|
+
% Make document title use Josefin
|
|
174
|
+
\pretitle{\begin{center}\HeadingFont\huge\color{ContentPrimary}}
|
|
175
|
+
\posttitle{\par\end{center}\vskip 1em}
|
|
176
|
+
\preauthor{\begin{center}\large\begin{tabular}[t]{c}}
|
|
177
|
+
\postauthor{\end{tabular}\par\end{center}}
|
|
178
|
+
\predate{\begin{center}\normalsize\color{ContentSecondary}}
|
|
179
|
+
\postdate{\par\end{center}\vskip 1.5em}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
%%%
|
|
183
|
+
%%% SECTION 2: COLORS - dataimago Design Tokens
|
|
184
|
+
%%%
|
|
185
|
+
%%% All colors defined using dataimago design token values
|
|
186
|
+
%%%
|
|
187
|
+
|
|
188
|
+
% Every colour below is an ALIAS of a generated design token. The values live
|
|
189
|
+
% in dataimago-tokens.sty, generated from @dataimago/tokens at source and
|
|
190
|
+
% shipped in @dataimago/css dist/latex/ (sub-project A, 2026-10-29). The
|
|
191
|
+
% CamelCase names are kept so existing documents and forks keep compiling; new
|
|
192
|
+
% code may use the di-* names directly. Never put a colour literal here.
|
|
193
|
+
|
|
194
|
+
% Surface tokens (light theme)
|
|
195
|
+
\colorlet{SurfacePage}{di-surface-page}
|
|
196
|
+
\colorlet{SurfaceCode}{di-surface-code}
|
|
197
|
+
\colorlet{SurfaceElevated}{di-surface-elevated}
|
|
198
|
+
|
|
199
|
+
% Content tokens
|
|
200
|
+
\colorlet{ContentPrimary}{di-content-primary}
|
|
201
|
+
\colorlet{ContentSecondary}{di-content-secondary}
|
|
202
|
+
|
|
203
|
+
% Border tokens (alpha composited over surface.page by the generator)
|
|
204
|
+
\colorlet{BorderCode}{di-border-code}
|
|
205
|
+
\colorlet{BorderModerate}{di-border-moderate}
|
|
206
|
+
|
|
207
|
+
% Figure box background - subtle off-white for semi-transparent figure backgrounds
|
|
208
|
+
\colorlet{FigureBoxBg}{white!42!SurfacePage}
|
|
209
|
+
|
|
210
|
+
% Brand roles (mapped to tokens by maintainer decision, 2026-10-29)
|
|
211
|
+
\colorlet{DataimagoPrimary}{di-interactive-primary}
|
|
212
|
+
\colorlet{DataimagoAccent}{di-interactive-accent}
|
|
213
|
+
\colorlet{DataimagoEthical}{di-brand-mark-red}
|
|
214
|
+
|
|
215
|
+
% Functional tokens
|
|
216
|
+
\colorlet{InfoColor}{di-functional-info}
|
|
217
|
+
\colorlet{WarningColor}{di-functional-warning}
|
|
218
|
+
\colorlet{ErrorColor}{di-functional-error}
|
|
219
|
+
\colorlet{SuccessColor}{di-functional-success}
|
|
220
|
+
|
|
221
|
+
% Theorem boxes (maintainer decision, 2026-10-29: elevated surface, subtle edge)
|
|
222
|
+
\colorlet{CornsilkBox}{di-surface-elevated}
|
|
223
|
+
\colorlet{CornsilkBoxBorder}{di-border-subtle}
|
|
224
|
+
|
|
225
|
+
%% Apply page background color (dataimago surface token)
|
|
226
|
+
\pagecolor{SurfacePage}
|
|
227
|
+
|
|
228
|
+
%% Figure border parameters (\fbox)
|
|
229
|
+
% Token: border.width.subtle = 0.4pt (dataimago)
|
|
230
|
+
% Token: spacing.micro.xs = 0.25rem ≈ 3pt (dataimago)
|
|
231
|
+
\setlength{\fboxrule}{0.75pt} % Border line thickness
|
|
232
|
+
\setlength{\fboxsep}{0.5pt} % Padding between border and content
|
|
233
|
+
|
|
234
|
+
%%%
|
|
235
|
+
%%% SECTION 3: MEMOIR CLASS CONFIGURATION
|
|
236
|
+
%%%
|
|
237
|
+
%%% Page styles, chapter/section formatting, and book structure
|
|
238
|
+
%%% (Only loaded if memoir class is detected)
|
|
239
|
+
%%%
|
|
240
|
+
|
|
241
|
+
\@ifclassloaded{memoir}{%
|
|
242
|
+
%% Memoir divisions configuration
|
|
243
|
+
% Enable subsubsection numbering
|
|
244
|
+
\setsecnumdepth{subsubsection}
|
|
245
|
+
\maxsecnumdepth{subsubsection}
|
|
246
|
+
|
|
247
|
+
% Set TOC depth (chapters and sections only)
|
|
248
|
+
\settocdepth{section}
|
|
249
|
+
|
|
250
|
+
%% Page styles using memoir's built-in system
|
|
251
|
+
\makepagestyle{dataimago}
|
|
252
|
+
\makeevenhead{dataimago}{\small\normalfont\color{ContentSecondary}\thepage}{}{\small\normalfont\color{ContentSecondary}\leftmark}
|
|
253
|
+
\makeoddhead{dataimago}{\small\normalfont\color{ContentSecondary}\leftmark}{}{\small\normalfont\color{ContentSecondary}\thepage}
|
|
254
|
+
\makeevenfoot{dataimago}{}{}{}
|
|
255
|
+
\makeoddfoot{dataimago}{}{}{}
|
|
256
|
+
\makeheadrule{dataimago}{\textwidth}{0.4pt}
|
|
257
|
+
|
|
258
|
+
% Apply custom page style
|
|
259
|
+
\pagestyle{dataimago}
|
|
260
|
+
|
|
261
|
+
% Plain style for chapter openings
|
|
262
|
+
\makepagestyle{plain}
|
|
263
|
+
\makeevenfoot{plain}{}{\small\normalfont\thepage}{}
|
|
264
|
+
\makeoddfoot{plain}{}{\small\normalfont\thepage}{}
|
|
265
|
+
|
|
266
|
+
%% Front matter style (no headers, centered page numbers)
|
|
267
|
+
\makepagestyle{frontmatter}
|
|
268
|
+
\makeevenfoot{frontmatter}{}{\small\normalfont\thepage}{}
|
|
269
|
+
\makeoddfoot{frontmatter}{}{\small\normalfont\thepage}{}
|
|
270
|
+
|
|
271
|
+
%% Chapter and section spacing
|
|
272
|
+
\setlength{\beforechapskip}{0pt} % Space before chapter title
|
|
273
|
+
\setlength{\afterchapskip}{40pt} % Space after chapter title
|
|
274
|
+
\setbeforesecskip{-3.5ex plus -1ex minus -.2ex}
|
|
275
|
+
\setaftersecskip{2.3ex plus .2ex}
|
|
276
|
+
\setbeforesubsecskip{-3.25ex plus -1ex minus -.2ex}
|
|
277
|
+
\setaftersubsecskip{1.5ex plus .2ex}
|
|
278
|
+
|
|
279
|
+
%% Increase head height to accommodate headers
|
|
280
|
+
\setlength{\headheight}{18pt}
|
|
281
|
+
|
|
282
|
+
%% TOC Title formatting - use body font (Noto Sans), not heading font
|
|
283
|
+
\renewcommand{\printtoctitle}[1]{\normalfont\Large\bfseries\color{ContentPrimary}#1}
|
|
284
|
+
|
|
285
|
+
%% Customize TOC appearance
|
|
286
|
+
\renewcommand{\cftchapterfont}{\normalfont\bfseries\color{ContentPrimary}}
|
|
287
|
+
\renewcommand{\cftchapterpagefont}{\normalfont\bfseries\color{ContentPrimary}}
|
|
288
|
+
\renewcommand{\cftsectionfont}{\normalfont\color{ContentPrimary}}
|
|
289
|
+
\renewcommand{\cftsectionpagefont}{\normalfont\color{ContentPrimary}}
|
|
290
|
+
|
|
291
|
+
% Add dots to chapter TOC entries
|
|
292
|
+
\renewcommand{\cftchapterleader}{\color{ContentSecondary}\cftdotfill{\cftdotsep}}
|
|
293
|
+
\renewcommand{\cftsectionleader}{\color{ContentSecondary}\cftdotfill{\cftdotsep}}
|
|
294
|
+
|
|
295
|
+
% Adjust TOC spacing
|
|
296
|
+
\setlength{\cftbeforechapterskip}{0.8em}
|
|
297
|
+
\setlength{\cftbeforesectionskip}{0.3em}
|
|
298
|
+
|
|
299
|
+
%% Epigraph styling (for opening quotes)
|
|
300
|
+
\setlength{\epigraphwidth}{0.6\textwidth}
|
|
301
|
+
\setlength{\epigraphrule}{0pt}
|
|
302
|
+
\renewcommand{\textflush}{flushright}
|
|
303
|
+
\renewcommand{\epigraphsize}{\normalsize\itshape}
|
|
304
|
+
|
|
305
|
+
%% Abstract styling for memoir
|
|
306
|
+
\renewcommand{\abstractnamefont}{\Large\normalfont\bfseries\color{ContentPrimary}}
|
|
307
|
+
\renewcommand{\abstracttextfont}{\normalfont\normalsize}
|
|
308
|
+
\setlength{\absleftindent}{0pt}
|
|
309
|
+
\setlength{\absrightindent}{0pt}
|
|
310
|
+
|
|
311
|
+
%% Custom chapter style: dataimago-ell (modified ELL)
|
|
312
|
+
\makechapterstyle{dataimago-ell}{%
|
|
313
|
+
\chapterstyle{default}
|
|
314
|
+
|
|
315
|
+
% Font definitions using dataimago fonts
|
|
316
|
+
\renewcommand*{\chapnamefont}{\normalfont\large\HeadingFontBold\color{ContentSecondary}}
|
|
317
|
+
\renewcommand*{\chapnumfont}{\normalfont\HUGE\HeadingFontBold\color{ContentPrimary}}
|
|
318
|
+
\renewcommand*{\chaptitlefont}{\normalfont\huge\HeadingFontBold\color{ContentPrimary}}
|
|
319
|
+
|
|
320
|
+
% Calculate indent for right-side extension
|
|
321
|
+
\settowidth{\chapindent}{\chapnumfont 111}
|
|
322
|
+
|
|
323
|
+
% Remove default chapter heading elements
|
|
324
|
+
\renewcommand*{\printchaptername}{}
|
|
325
|
+
\renewcommand*{\chapternamenum}{}
|
|
326
|
+
|
|
327
|
+
% Custom chapter number printing (right-aligned)
|
|
328
|
+
\renewcommand*{\printchapternum}{%
|
|
329
|
+
% For numbered chapters - number right-aligned
|
|
330
|
+
\begin{adjustwidth}{0pt}{-0.0\chapindent}
|
|
331
|
+
\raggedleft%
|
|
332
|
+
{\chapnumfont\color{ContentPrimary}\thechapter}%
|
|
333
|
+
\par\vspace{0.3\onelineskip}%
|
|
334
|
+
\end{adjustwidth}%
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
% For unnumbered chapters (e.g., Preface, Acknowledgments)
|
|
338
|
+
\renewcommand\printchapternonum{%
|
|
339
|
+
\vphantom{\chapnumfont 1}%
|
|
340
|
+
\afterchapternum%
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
% Print chapter title (right-aligned above hrule)
|
|
344
|
+
\renewcommand*{\printchaptertitle}[1]{%
|
|
345
|
+
\begin{adjustwidth}{0pt}{-0.0\chapindent}
|
|
346
|
+
% Measure the title height
|
|
347
|
+
\setbox0=\vbox{%
|
|
348
|
+
\raggedleft%
|
|
349
|
+
{\chapnumfont\thechapter}%
|
|
350
|
+
\par\vspace{0.3\onelineskip}%
|
|
351
|
+
{\chaptitlefont\color{ContentPrimary}##1}%
|
|
352
|
+
\par\vspace{0.5\onelineskip}%
|
|
353
|
+
}%
|
|
354
|
+
\raggedleft%
|
|
355
|
+
{\chaptitlefont\color{ContentPrimary}##1}%
|
|
356
|
+
\par\vspace{0.5\onelineskip}%
|
|
357
|
+
% Horizontal rule with vertical rule extending upward at right end
|
|
358
|
+
\noindent\textcolor{BorderModerate}{%
|
|
359
|
+
\rule{\dimexpr\linewidth + 0.4\chapindent\relax}{0.4pt}%
|
|
360
|
+
\llap{\raisebox{0.4pt}[0pt][0pt]{\rule{0.4pt}{\ht0}}}%
|
|
361
|
+
}%
|
|
362
|
+
\end{adjustwidth}%
|
|
363
|
+
\par%
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
% Spacing after chapter title
|
|
367
|
+
\renewcommand*{\afterchaptertitle}{%
|
|
368
|
+
\par\vspace{1.5\onelineskip}%
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
% Apply the custom chapter style
|
|
373
|
+
\chapterstyle{dataimago-ell}
|
|
374
|
+
|
|
375
|
+
%% Chapter mark for headers (appears in page headers)
|
|
376
|
+
\renewcommand{\chaptermark}[1]{%
|
|
377
|
+
\markboth{\thechapter.\ #1}{}}
|
|
378
|
+
|
|
379
|
+
%% Unnumbered chapters still appear in TOC
|
|
380
|
+
\setcounter{tocdepth}{1}
|
|
381
|
+
|
|
382
|
+
%% Section formatting (inline numbering)
|
|
383
|
+
% Numbers in ContentSecondary, text in ContentPrimary
|
|
384
|
+
\setsecheadstyle{%
|
|
385
|
+
\Large\HeadingFontMedium\color{ContentPrimary}%
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
\setsubsecheadstyle{%
|
|
389
|
+
\large\HeadingFontRegular\color{ContentPrimary}%
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
\setsubsubsecheadstyle{%
|
|
393
|
+
\normalsize\HeadingFontLight\color{ContentPrimary}%
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
%% Section numbering format
|
|
397
|
+
\renewcommand{\thesection}{\thechapter.\arabic{section}}
|
|
398
|
+
\renewcommand{\thesubsection}{\thesection.\arabic{subsection}}
|
|
399
|
+
\renewcommand{\thesubsubsection}{\thesubsection.\arabic{subsubsection}}
|
|
400
|
+
|
|
401
|
+
%% TOC formatting for sections (indentation)
|
|
402
|
+
\cftsetindents{section}{1.5em}{2.5em}
|
|
403
|
+
\cftsetindents{subsection}{4.0em}{3.5em}
|
|
404
|
+
\cftsetindents{subsubsection}{7.5em}{4.5em}
|
|
405
|
+
|
|
406
|
+
%% Section number formatting (ContentSecondary color)
|
|
407
|
+
\renewcommand{\@seccntformat}[1]{%
|
|
408
|
+
\normalfont\HeadingFontMedium\textcolor{ContentSecondary}{\csname the#1\endcsname}\enspace
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
}{} % End memoir-specific configuration
|
|
412
|
+
|
|
413
|
+
%%%
|
|
414
|
+
%%% SECTION 4: CUSTOM BOXES AND ENVIRONMENTS
|
|
415
|
+
%%%
|
|
416
|
+
%%% Theorem boxes, definition boxes, and proof environment
|
|
417
|
+
%%%
|
|
418
|
+
|
|
419
|
+
%% Abstract Box suppression (for Quarto integration)
|
|
420
|
+
% Suppress Quarto's automatic abstract rendering by redefining as no-op
|
|
421
|
+
\@ifpackageloaded{comment}{}{%
|
|
422
|
+
\renewenvironment{abstract}{%
|
|
423
|
+
\setbox\z@\vbox\bgroup
|
|
424
|
+
}{%
|
|
425
|
+
\egroup
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
%% Theorem Box (using dataimago surface tokens)
|
|
430
|
+
\newtcolorbox{theorembox}[2][]{
|
|
431
|
+
enhanced,
|
|
432
|
+
breakable,
|
|
433
|
+
colback=SurfaceCode, % Token: color.surface.code
|
|
434
|
+
colframe=BorderCode, % Token: color.border.code
|
|
435
|
+
boxrule=0.6pt,
|
|
436
|
+
arc=3pt, % Token: radius.subtle
|
|
437
|
+
left=10pt,
|
|
438
|
+
right=10pt,
|
|
439
|
+
top=8pt,
|
|
440
|
+
bottom=8pt,
|
|
441
|
+
before skip=12pt,
|
|
442
|
+
after skip=12pt,
|
|
443
|
+
title={#2},
|
|
444
|
+
fonttitle=\HeadingFont\bfseries,
|
|
445
|
+
coltitle=ContentPrimary,
|
|
446
|
+
#1
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
%% Definition Box (lighter variant)
|
|
450
|
+
\newtcolorbox{definitionbox}[2][]{
|
|
451
|
+
enhanced,
|
|
452
|
+
breakable,
|
|
453
|
+
colback=SurfaceElevated, % Token: color.surface.elevated
|
|
454
|
+
colframe=BorderModerate, % Token: color.border.moderate
|
|
455
|
+
boxrule=0.8pt,
|
|
456
|
+
arc=4pt,
|
|
457
|
+
left=10pt,
|
|
458
|
+
right=10pt,
|
|
459
|
+
top=8pt,
|
|
460
|
+
bottom=8pt,
|
|
461
|
+
before skip=12pt,
|
|
462
|
+
after skip=12pt,
|
|
463
|
+
title={#2},
|
|
464
|
+
fonttitle=\HeadingFont\bfseries,
|
|
465
|
+
coltitle=ContentPrimary,
|
|
466
|
+
#1
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
%% Proof Environment (minimalist, dataimago style)
|
|
470
|
+
% Uses Noto Sans (body font), not Josefin Sans (heading font)
|
|
471
|
+
\AtBeginDocument{%
|
|
472
|
+
\renewenvironment{proof}{%
|
|
473
|
+
\noindent{\normalfont\bfseries\color{ContentPrimary}Proof.}\hspace{0.5em}%
|
|
474
|
+
}{\hfill$\blacksquare$}%
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
%%%
|
|
478
|
+
%%% SECTION 5: CAPTION AND LIST FORMATTING
|
|
479
|
+
%%%
|
|
480
|
+
|
|
481
|
+
%% Caption Formatting
|
|
482
|
+
\captionsetup{
|
|
483
|
+
font=small,
|
|
484
|
+
labelfont=bf,
|
|
485
|
+
textfont=normal,
|
|
486
|
+
justification=justified,
|
|
487
|
+
skip=8pt
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
%% List Styling
|
|
491
|
+
\setlist[enumerate]{
|
|
492
|
+
font=\normalfont,
|
|
493
|
+
leftmargin=*,
|
|
494
|
+
itemsep=0.5em,
|
|
495
|
+
parsep=0.25em
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
\setlist[itemize]{
|
|
499
|
+
font=\normalfont,
|
|
500
|
+
leftmargin=*,
|
|
501
|
+
itemsep=0.5em,
|
|
502
|
+
parsep=0.25em
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
%%%
|
|
506
|
+
%%% SECTION 6: CUSTOM COMMANDS
|
|
507
|
+
%%%
|
|
508
|
+
|
|
509
|
+
%% Software/Package names
|
|
510
|
+
\newcommand{\R}{{\textsf{R}\hspace{.3em}}}
|
|
511
|
+
\newcommand{\sgpFlow}{\textsf{{\textit{sgpFlow}\hspace{.2em}}}}
|
|
512
|
+
|
|
513
|
+
%% Section reference command
|
|
514
|
+
\newcommand{\sref}[1]{\hyperref[#1]{\S\ref*{#1}}}
|
|
515
|
+
|
|
516
|
+
%% Abstract name (uses Josefin Sans)
|
|
517
|
+
\renewcommand{\abstractname}{\normalsize\HeadingFont Abstract}
|
|
518
|
+
|
|
519
|
+
%%%
|
|
520
|
+
%%% SECTION 7: FRONT MATTER COMMANDS (Memoir only)
|
|
521
|
+
%%%
|
|
522
|
+
|
|
523
|
+
\@ifclassloaded{memoir}{%
|
|
524
|
+
%% dataimago logo command
|
|
525
|
+
\newcommand{\dataimagoLogo}{%
|
|
526
|
+
% AI Monogram logo
|
|
527
|
+
\href{https://dataimago.ai}{%
|
|
528
|
+
\includegraphics[width=0.75in]{assets/logos/ai_monogram.pdf}%
|
|
529
|
+
}%
|
|
530
|
+
}%
|
|
531
|
+
|
|
532
|
+
%% CC-BY-SA logo command
|
|
533
|
+
\newcommand{\ccbyLogo}{%
|
|
534
|
+
\href{https://github.com/dbetebenner/Betebenner_Braun_Paper_1/blob/main/LICENSE.md}{%
|
|
535
|
+
\IfFileExists{assets/logos/cc-by-sa.png}{%
|
|
536
|
+
\includegraphics[width=0.5in]{assets/logos/cc-by-sa.png}%
|
|
537
|
+
}{%
|
|
538
|
+
\small\color{DataimagoPrimary}CC BY-SA 4.0%
|
|
539
|
+
}%
|
|
540
|
+
}%
|
|
541
|
+
}%
|
|
542
|
+
|
|
543
|
+
%% Version command
|
|
544
|
+
\newcommand{\version}[1]{\def\theversion{#1}}
|
|
545
|
+
\version{v0.0.1} % Default version
|
|
546
|
+
|
|
547
|
+
%% Subtitle command (Quarto integration)
|
|
548
|
+
\providecommand{\subtitle}[1]{\gdef\thesubtitle{#1}}
|
|
549
|
+
\gdef\thesubtitle{}
|
|
550
|
+
|
|
551
|
+
%% Custom title page (right-justified, dataimago style)
|
|
552
|
+
\renewcommand{\maketitle}{%
|
|
553
|
+
% Set title page layout with 0.75in margins on each side
|
|
554
|
+
\settypeblocksize{9.0in}{7in}{*}
|
|
555
|
+
\setlrmargins{0.75in}{*}{1} % 0.75in left, equal right
|
|
556
|
+
\setulmargins{1in}{*}{*}
|
|
557
|
+
\checkandfixthelayout
|
|
558
|
+
|
|
559
|
+
\begin{titlingpage}
|
|
560
|
+
\begin{flushright}
|
|
561
|
+
\vspace*{1.5cm}
|
|
562
|
+
|
|
563
|
+
% Title
|
|
564
|
+
{\HeadingFontBold\color{ContentPrimary}\Huge\thetitle\par}
|
|
565
|
+
\vspace{0.8em}
|
|
566
|
+
|
|
567
|
+
% Subtitle
|
|
568
|
+
\ifx\thesubtitle\@empty
|
|
569
|
+
\else
|
|
570
|
+
{\LARGE\HeadingFontSemiBold\color{ContentSecondary}\thesubtitle\par}
|
|
571
|
+
\fi
|
|
572
|
+
\vspace{2em}
|
|
573
|
+
|
|
574
|
+
% Authors with superscript affiliations
|
|
575
|
+
{\large\normalfont%
|
|
576
|
+
Damian W. Betebenner$^{1}$\\[0.3em]
|
|
577
|
+
Henry I. Braun$^{2}$\par}
|
|
578
|
+
\vspace{1em}
|
|
579
|
+
|
|
580
|
+
% Affiliations
|
|
581
|
+
{\small\color{ContentSecondary}%
|
|
582
|
+
$^{1}$The National Center for the Improvement of Educational Assessment, Dover, NH, USA\\[0.3em]
|
|
583
|
+
$^{2}$Lynch School of Education, Boston College, Chestnut Hill, MA, USA\par}
|
|
584
|
+
|
|
585
|
+
\vspace{1.0in}
|
|
586
|
+
|
|
587
|
+
% Version, date, and license
|
|
588
|
+
{\normalsize\color{ContentSecondary}\theversion\par}
|
|
589
|
+
\vspace{0.2em}
|
|
590
|
+
{\normalsize\color{ContentSecondary}\thedate\par}
|
|
591
|
+
\vspace{0.7em}
|
|
592
|
+
\ccbyLogo
|
|
593
|
+
|
|
594
|
+
\vfill
|
|
595
|
+
|
|
596
|
+
% Bottom right: dataimago logo only
|
|
597
|
+
\dataimagoLogo
|
|
598
|
+
|
|
599
|
+
\end{flushright}
|
|
600
|
+
\end{titlingpage}
|
|
601
|
+
|
|
602
|
+
% Restore body page layout (1in margins)
|
|
603
|
+
\settypeblocksize{9.0in}{6.5in}{*}
|
|
604
|
+
\setlrmargins{1in}{*}{1}
|
|
605
|
+
\setulmargins{1in}{*}{*}
|
|
606
|
+
\checkandfixthelayout
|
|
607
|
+
|
|
608
|
+
\cleardoublepage
|
|
609
|
+
}
|
|
610
|
+
}{} % End memoir front matter commands
|
|
611
|
+
|
|
612
|
+
%%%
|
|
613
|
+
%%% END OF PACKAGE
|
|
614
|
+
%%%
|
|
615
|
+
|
|
616
|
+
\typeout{dataimago.sty loaded successfully!}
|
|
617
|
+
\endinput
|
|
618
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"package": "@dataimago/css",
|
|
3
|
+
"version": "0.1.0-alpha.19",
|
|
4
|
+
"files": {
|
|
5
|
+
"dataviz/dataimago-dataviz.css": "1af7427ac88a12540accb2da04d8442f7801c7d8176ca8d4f15a708e1e0b4cb9",
|
|
6
|
+
"dataviz/dataimago-dataviz.json": "e49da8cd904a941ab1586b48063e1c5d4eba4962e7fb50b045d162fa7c931c83",
|
|
7
|
+
"dataviz/dataimago-dataviz.tex": "f82616e309e08066b077d828152f01479b919cdc5fe48bd1db7c9914cc54123a",
|
|
8
|
+
"dataviz/dataimago_dataviz.R": "5f3cbacb922046ca78f2860b40d09b14676091eed5b1710c4fcc46031fa45246",
|
|
9
|
+
"latex/dataimago-tokens.sty": "fc1a0652b8216d4a98c09a5314aef978ea172c5dff8ad8e7a971ac53cf188b22",
|
|
10
|
+
"latex/dataimago.sty": "08baf49cf2cfd0d720107ccef4921c7bffcc396dd6fec10fb1f64587322ba4af",
|
|
11
|
+
"quarto/components.scss": "bb01822d6be02a6e5e83d66460d34931ad5863cb2c2c63f9df71787f7d0dc892",
|
|
12
|
+
"quarto/dataimago-dark.scss": "61ffc1bcaca9edc03a236085b3073f56a40eff9809728bd777f02121c5e3e74b",
|
|
13
|
+
"quarto/dataimago-light.scss": "0ccbc31c3da002545bf37709fae7e5b220c33f709722c9ec18d987088c9c4ef4",
|
|
14
|
+
"templates/KNOWLEDGE-explorer.md": "b954fa898ccc9960426986b97d10a9785cab12034c96656f5090f06bc94d1f80",
|
|
15
|
+
"templates/KNOWLEDGE-framework.md": "0cf61a6ba79f4601b6ed1d096dbe3c37a4dae75742e112e5fb2271b26e4c439d",
|
|
16
|
+
"templates/KNOWLEDGE-research.md": "64c10fbc9c15f2cea34c1d388793c8309430b1817b8301c2229cba34b9c21e46",
|
|
17
|
+
"templates/quarto_website/README.md": "9d771be3c1f73087ed641ac8117bcd19afc92a4b0397e66cb4210206759f7a17",
|
|
18
|
+
"templates/quarto_website/_quarto.yml.template": "9dee3b591ddcaf63455a35a46212c9ffe80aa5627a8b88bff3d74e604446b55a",
|
|
19
|
+
"templates/quarto_website/about.qmd.template": "b922b7b3ad54c2cd6885825901c02e02d4d2a33e9a7724ce285494b2cc498a6a",
|
|
20
|
+
"templates/quarto_website/assets/js/custom-anchors.js": "afd06bbc94340b5bd98acdfd46c2b01f1dc2bc604931566dc1d37cd1c569622b",
|
|
21
|
+
"templates/quarto_website/assets/js/logo-switch.js": "324b070c527fb47e629bac5bcfcaac7ae955707379b92c2c141c7e02cedc4469",
|
|
22
|
+
"templates/quarto_website/assets/js/scroll.js": "4ce5ac410a29608eb3b2c7313ccbd7d8c458655b714fe9a47a3dd0c626eb648d",
|
|
23
|
+
"templates/quarto_website/ethics.qmd.template": "164d344466811fcfaf3c9a42012c2a53a0a394d8b007ea8be037c77df82149d5",
|
|
24
|
+
"templates/quarto_website/index.qmd.template": "03ef348dcd13c479c01ebd87356e118d387df4173984940374cb0bb83b3661c9"
|
|
25
|
+
}
|
|
26
|
+
}
|