@open-press/cli 0.6.0 → 0.7.1
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 +1 -1
- package/template/core/AGENTS.md +126 -0
- package/template/core/CHANGELOG.md +87 -1
- package/template/core/README.md +9 -5
- package/template/core/engine/cli.mjs +2 -5
- package/template/core/engine/commands/_shared.mjs +4 -4
- package/template/core/engine/commands/deploy.mjs +1 -1
- package/template/core/engine/commands/inspect.mjs +3 -3
- package/template/core/engine/commands/replace.mjs +1 -1
- package/template/core/engine/commands/search.mjs +1 -1
- package/template/core/engine/commands/upgrade.mjs +47 -5
- package/template/core/engine/commands/validate.mjs +2 -2
- package/template/core/engine/document-export.mjs +1 -1
- package/template/core/engine/{chrome-pdf.mjs → output/chrome-pdf.mjs} +1 -2
- package/template/core/engine/{deploy-sync.mjs → output/deploy-sync.mjs} +2 -2
- package/template/core/engine/{fonts.mjs → output/fonts.mjs} +1 -1
- package/template/core/engine/{public-assets.mjs → output/public-assets.mjs} +2 -2
- package/template/core/engine/{static-server.mjs → output/static-server.mjs} +2 -2
- package/template/core/engine/react/caption-numbering.mjs +73 -0
- package/template/core/engine/react/comment-marker.mjs +54 -10
- package/template/core/engine/react/document-entry.mjs +124 -64
- package/template/core/engine/react/document-export.mjs +266 -310
- package/template/core/engine/react/mdx-compile.mjs +214 -3
- package/template/core/engine/react/measurement-css.mjs +3 -3
- package/template/core/engine/react/pagination/allocator.mjs +122 -0
- package/template/core/engine/react/pagination/regions.mjs +81 -0
- package/template/core/engine/react/pagination.mjs +9 -121
- package/template/core/engine/react/pipeline/allocate.mjs +248 -0
- package/template/core/engine/react/pipeline/final-render.mjs +94 -0
- package/template/core/engine/react/pipeline/frame-measurement.mjs +300 -0
- package/template/core/engine/react/pipeline/press-tree.mjs +135 -0
- package/template/core/engine/react/project-asset-endpoint.mjs +2 -2
- package/template/core/engine/react/{chapter-css.mjs → section-css.mjs} +12 -9
- package/template/core/engine/react/sources/heading-numbering.mjs +132 -0
- package/template/core/engine/react/sources/mdx-resolver.mjs +441 -0
- package/template/core/engine/react/{workspace-discovery.mjs → style-discovery.mjs} +29 -40
- package/template/core/engine/{config.mjs → runtime/config.mjs} +15 -0
- package/template/core/engine/{file-utils.mjs → runtime/file-utils.mjs} +1 -1
- package/template/core/engine/{inspection.mjs → runtime/inspection.mjs} +3 -4
- package/template/core/engine/{source-text-tools.mjs → runtime/source-text-tools.mjs} +24 -7
- package/template/core/engine/runtime/source-workspace.mjs +186 -0
- package/template/core/engine/{validation.mjs → runtime/validation.mjs} +19 -17
- package/template/core/package.json +5 -2
- package/template/core/src/openpress/anchorMap.ts +27 -0
- package/template/core/src/openpress/core/Frame.tsx +80 -0
- package/template/core/src/openpress/core/FrameContext.tsx +19 -0
- package/template/core/src/openpress/core/MdxArea.tsx +35 -0
- package/template/core/src/openpress/core/Press.tsx +34 -0
- package/template/core/src/openpress/core/index.tsx +34 -15
- package/template/core/src/openpress/core/primitives.tsx +23 -0
- package/template/core/src/openpress/core/types.ts +131 -19
- package/template/core/src/openpress/core/useSource.ts +28 -0
- package/template/core/src/openpress/manuscript/index.tsx +196 -0
- package/template/core/src/openpress/mdx/index.ts +88 -0
- package/template/core/src/openpress/numbering/index.ts +294 -0
- package/template/core/src/openpress/publicPage.tsx +4 -186
- package/template/core/src/openpress/reactDocumentMetadata.ts +2 -16
- package/template/core/src/openpress/types.ts +0 -16
- package/template/core/src/openpress/workbench.tsx +2 -36
- package/template/core/src/styles/openpress/responsive.css +0 -14
- package/template/core/tsconfig.json +4 -1
- package/template/core/vite.config.ts +10 -3
- package/template/packs/academic-paper/document/chapters/01-introduction/content/01-introduction.mdx +26 -12
- package/template/packs/academic-paper/document/chapters/02-methods/content/01-methods.mdx +37 -17
- package/template/packs/academic-paper/document/chapters/03-results-and-discussion/content/01-results.mdx +34 -16
- package/template/packs/academic-paper/document/chapters/04-acknowledgment/content/01-acknowledgment.mdx +22 -8
- package/template/packs/academic-paper/document/chapters/05-references/content/01-references.mdx +20 -15
- package/template/packs/academic-paper/document/components/Page.tsx +48 -15
- package/template/packs/academic-paper/document/design.md +2 -2
- package/template/packs/academic-paper/document/index.tsx +96 -80
- package/template/packs/academic-paper/document/media/figure-placeholder.svg +9 -0
- package/template/packs/academic-paper/document/theme/base/page-contract.css +30 -13
- package/template/packs/academic-paper/document/theme/base/typography.css +30 -33
- package/template/packs/academic-paper/document/theme/page-surfaces/cover.css +74 -47
- package/template/packs/academic-paper/document/theme/page-surfaces/toc.css +19 -9
- package/template/packs/claude-document/document/components/Page.tsx +24 -14
- package/template/packs/claude-document/document/design.md +2 -2
- package/template/packs/claude-document/document/index.tsx +67 -62
- package/template/packs/claude-document/document/theme/page-surfaces/toc.css +19 -7
- package/template/packs/editorial-monograph/document/components/Page.tsx +24 -14
- package/template/packs/editorial-monograph/document/design.md +2 -2
- package/template/packs/editorial-monograph/document/index.tsx +71 -47
- package/template/packs/editorial-monograph/document/theme/page-surfaces/toc.css +19 -9
- package/template/core/engine/commands/migrate-to-react.mjs +0 -27
- package/template/core/engine/page-renderer.mjs +0 -217
- package/template/core/engine/react/migrate-to-react.mjs +0 -355
- package/template/core/engine/source-workspace.mjs +0 -76
- package/template/core/src/openpress/core/basePages.tsx +0 -87
- package/template/core/src/openpress/pagination.ts +0 -845
- package/template/packs/claude-document/document/chapters/01-document-shape/chapter.tsx +0 -30
- package/template/packs/claude-document/document/chapters/02-review-loop/chapter.tsx +0 -30
- /package/template/core/engine/{chrome-pdf.d.mts → output/chrome-pdf.d.mts} +0 -0
- /package/template/core/engine/{katex-assets.mjs → output/katex-assets.mjs} +0 -0
- /package/template/core/engine/{page-block.mjs → output/page-block.mjs} +0 -0
- /package/template/core/engine/{pdf-media.mjs → output/pdf-media.mjs} +0 -0
- /package/template/core/engine/{config.d.mts → runtime/config.d.mts} +0 -0
- /package/template/core/engine/{issue-report.mjs → runtime/issue-report.mjs} +0 -0
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import { Frame, Press } from "@open-press/core";
|
|
2
|
+
import type { Manifest } from "@open-press/core";
|
|
3
|
+
import { mdxSource } from "@open-press/core/mdx";
|
|
4
|
+
import { Sections } from "@open-press/core/manuscript";
|
|
5
|
+
import Page from "./components/Page";
|
|
3
6
|
|
|
4
7
|
export const config: Manifest = {
|
|
5
|
-
title: "
|
|
6
|
-
subtitle: "
|
|
7
|
-
organization: "
|
|
8
|
+
title: "Your article title goes here",
|
|
9
|
+
subtitle: "This is a non-peer reviewed Express letter submitted to J SEDI",
|
|
10
|
+
organization: "open-press · academic-paper",
|
|
8
11
|
sourceDir: "chapters",
|
|
9
12
|
mediaDir: "media",
|
|
10
13
|
themeDir: "theme",
|
|
@@ -24,84 +27,97 @@ export const config: Manifest = {
|
|
|
24
27
|
},
|
|
25
28
|
};
|
|
26
29
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
*/
|
|
31
|
-
export const cover = (
|
|
32
|
-
<BaseCoverPage data-page-title="Title page" aria-labelledby="paper-title">
|
|
33
|
-
<div className="paper-cover">
|
|
34
|
-
<h1 id="paper-title" className="paper-title">
|
|
35
|
-
Conference Paper Title
|
|
36
|
-
</h1>
|
|
37
|
-
<p className="paper-subtitle">
|
|
38
|
-
Sub-title (optional). Not captured by indexing services like IEEE Xplore.
|
|
39
|
-
</p>
|
|
40
|
-
|
|
41
|
-
<ol className="paper-authors" aria-label="Authors">
|
|
42
|
-
<li className="paper-author">
|
|
43
|
-
<p className="paper-author-name">First Author Surname</p>
|
|
44
|
-
<p className="paper-author-affiliation">dept. of organization</p>
|
|
45
|
-
<p className="paper-author-affiliation">name of organization</p>
|
|
46
|
-
<p className="paper-author-location">City, Country</p>
|
|
47
|
-
<p className="paper-author-contact">email or ORCID</p>
|
|
48
|
-
</li>
|
|
49
|
-
<li className="paper-author">
|
|
50
|
-
<p className="paper-author-name">Second Author Surname</p>
|
|
51
|
-
<p className="paper-author-affiliation">dept. of organization</p>
|
|
52
|
-
<p className="paper-author-affiliation">name of organization</p>
|
|
53
|
-
<p className="paper-author-location">City, Country</p>
|
|
54
|
-
<p className="paper-author-contact">email or ORCID</p>
|
|
55
|
-
</li>
|
|
56
|
-
<li className="paper-author">
|
|
57
|
-
<p className="paper-author-name">Third Author Surname</p>
|
|
58
|
-
<p className="paper-author-affiliation">dept. of organization</p>
|
|
59
|
-
<p className="paper-author-affiliation">name of organization</p>
|
|
60
|
-
<p className="paper-author-location">City, Country</p>
|
|
61
|
-
<p className="paper-author-contact">email or ORCID</p>
|
|
62
|
-
</li>
|
|
63
|
-
</ol>
|
|
30
|
+
export const sources = {
|
|
31
|
+
story: mdxSource({ preset: "section-folders", root: "chapters" }),
|
|
32
|
+
};
|
|
64
33
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
34
|
+
function Cover() {
|
|
35
|
+
return (
|
|
36
|
+
<Frame
|
|
37
|
+
frameKey="cover"
|
|
38
|
+
role="manuscript.cover"
|
|
39
|
+
chrome={false}
|
|
40
|
+
className="reader-page--cover"
|
|
41
|
+
data-page-title="Title page"
|
|
42
|
+
aria-labelledby="paper-title"
|
|
43
|
+
>
|
|
44
|
+
<div className="paper-cover">
|
|
45
|
+
<p className="paper-cover-date">May 18, 2026 – This is a non-peer reviewed Express letter submitted to J SEDI</p>
|
|
46
|
+
<p className="paper-cover-lead">This is a non-peer reviewed Express letter submitted to J SEDI</p>
|
|
47
|
+
<p className="paper-cover-short-title">Your short title goes here</p>
|
|
48
|
+
<h1 id="paper-title" className="paper-title">
|
|
49
|
+
Your article title goes here
|
|
50
|
+
<sup>*</sup>
|
|
51
|
+
</h1>
|
|
52
|
+
<p className="paper-author-contact-note">
|
|
53
|
+
<span aria-hidden="true">∗</span> Corresponding author:
|
|
54
|
+
firstauthor@university.jp
|
|
72
55
|
</p>
|
|
73
|
-
</section>
|
|
74
56
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
<
|
|
78
|
-
one, keyword two, keyword three, keyword four
|
|
57
|
+
<p className="paper-author-line" aria-label="Authors">
|
|
58
|
+
Name Firstauthor<sup>1</sup>, Name Secondauthor<sup>2</sup>, Name
|
|
59
|
+
Thirdauthor<sup>1,3</sup>
|
|
79
60
|
</p>
|
|
80
|
-
</section>
|
|
81
|
-
</div>
|
|
82
|
-
</BaseCoverPage>
|
|
83
|
-
);
|
|
84
61
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
62
|
+
<ol className="paper-author-affiliations" aria-label="Author affiliations">
|
|
63
|
+
<li className="paper-author">
|
|
64
|
+
<p className="paper-author-affiliation">
|
|
65
|
+
1 Department of Earth Sciences, A University, City, Country
|
|
66
|
+
</p>
|
|
67
|
+
</li>
|
|
68
|
+
<li className="paper-author">
|
|
69
|
+
<p className="paper-author-affiliation">
|
|
70
|
+
2 School of Earth Sciences, Another University, City, Country
|
|
71
|
+
</p>
|
|
72
|
+
</li>
|
|
73
|
+
<li className="paper-author">
|
|
74
|
+
<p className="paper-author-affiliation">
|
|
75
|
+
3 Center for Studying Cool Things, University of X, City, Country
|
|
76
|
+
</p>
|
|
77
|
+
</li>
|
|
78
|
+
</ol>
|
|
79
|
+
|
|
80
|
+
<section className="paper-contributions" aria-label="Author contributions">
|
|
81
|
+
<p>
|
|
82
|
+
<span className="paper-section-label">Author contributions:</span>{" "}
|
|
83
|
+
Conceptualization: Name Firstauthor, Name Thirdauthor. Formal
|
|
84
|
+
Analysis: Name Firstauthor, Name Secondauthor.
|
|
85
|
+
</p>
|
|
86
|
+
<p>
|
|
87
|
+
<span className="paper-section-label">Writing - Original draft:</span>{" "}
|
|
88
|
+
Name Firstauthor.{" "}
|
|
89
|
+
<span className="paper-section-label">
|
|
90
|
+
Writing - Review & Editing:
|
|
91
|
+
</span>{" "}
|
|
92
|
+
Name Firstauthor, Name Secondauthor, Name Thirdauthor.
|
|
93
|
+
</p>
|
|
94
|
+
</section>
|
|
95
|
+
|
|
96
|
+
<section className="paper-abstract" aria-label="Abstract">
|
|
97
|
+
<p>
|
|
98
|
+
<span className="paper-abstract-label">Abstract</span> The text for the
|
|
99
|
+
first abstract goes here. This should be in English, no longer than
|
|
100
|
+
200 words, and should not include references.
|
|
101
|
+
</p>
|
|
102
|
+
</section>
|
|
103
|
+
|
|
104
|
+
<section className="paper-nontechnical-summary" aria-label="Non-technical summary">
|
|
105
|
+
<p>
|
|
106
|
+
<span className="paper-abstract-label">Non-technical summary</span> The
|
|
107
|
+
text for the non-technical summary goes here. Again, no longer than
|
|
108
|
+
200 words, no reference.
|
|
109
|
+
</p>
|
|
110
|
+
</section>
|
|
111
|
+
</div>
|
|
112
|
+
</Frame>
|
|
113
|
+
);
|
|
114
|
+
}
|
|
95
115
|
|
|
96
|
-
export
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
<
|
|
100
|
-
<
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
</p>
|
|
105
|
-
</div>
|
|
106
|
-
</BaseBackCoverPage>
|
|
107
|
-
);
|
|
116
|
+
export default function AcademicPaperPress() {
|
|
117
|
+
return (
|
|
118
|
+
<Press>
|
|
119
|
+
<Cover />
|
|
120
|
+
<Sections source="story" page={Page} />
|
|
121
|
+
</Press>
|
|
122
|
+
);
|
|
123
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="900" height="540" viewBox="0 0 900 540" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">Figure placeholder</title>
|
|
3
|
+
<desc id="desc">Simple figure placeholder graphic with gray border and label</desc>
|
|
4
|
+
<rect width="100%" height="100%" fill="#f3f4f6"/>
|
|
5
|
+
<rect x="24" y="24" width="852" height="492" fill="none" stroke="#9ca3af" stroke-width="4" stroke-dasharray="18 12" rx="8" />
|
|
6
|
+
<text x="50%" y="50%" fill="#4b5563" font-size="44" font-family="Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif" text-anchor="middle" dominant-baseline="middle">
|
|
7
|
+
Example Figure Placeholder
|
|
8
|
+
</text>
|
|
9
|
+
</svg>
|
|
@@ -383,12 +383,12 @@ button:focus-visible {
|
|
|
383
383
|
position: relative;
|
|
384
384
|
width: var(--reader-page-width, var(--openpress-page-width));
|
|
385
385
|
height: calc(var(--reader-page-width, var(--openpress-page-width)) * var(--openpress-page-height) / var(--openpress-page-width));
|
|
386
|
-
--page-margin-x: clamp(
|
|
387
|
-
--page-margin-top: clamp(
|
|
388
|
-
--page-margin-bottom: clamp(
|
|
389
|
-
--page-header-height: clamp(
|
|
390
|
-
--page-footer-height: clamp(
|
|
391
|
-
--page-frame-gap: clamp(
|
|
386
|
+
--page-margin-x: clamp(20px, 3.8cqw, 34px);
|
|
387
|
+
--page-margin-top: clamp(18px, 3.5cqw, 30px);
|
|
388
|
+
--page-margin-bottom: clamp(14px, 2.4cqw, 24px);
|
|
389
|
+
--page-header-height: clamp(10px, 1.6cqw, 16px);
|
|
390
|
+
--page-footer-height: clamp(16px, 2.2cqw, 22px);
|
|
391
|
+
--page-frame-gap: clamp(5px, 1.1cqw, 11px);
|
|
392
392
|
overflow: hidden;
|
|
393
393
|
color: var(--openpress-color-ink);
|
|
394
394
|
background: var(--openpress-color-document);
|
|
@@ -429,12 +429,29 @@ button:focus-visible {
|
|
|
429
429
|
|
|
430
430
|
.page-header {
|
|
431
431
|
display: flex;
|
|
432
|
-
align-items:
|
|
432
|
+
align-items: baseline;
|
|
433
|
+
justify-content: space-between;
|
|
434
|
+
gap: var(--openpress-space-3);
|
|
433
435
|
color: var(--openpress-color-muted);
|
|
434
|
-
font-
|
|
435
|
-
|
|
436
|
-
|
|
436
|
+
font-family: var(--openpress-font-body);
|
|
437
|
+
font-size: clamp(8px, 1.2cqw, 9px);
|
|
438
|
+
letter-spacing: normal;
|
|
439
|
+
opacity: 0.82;
|
|
437
440
|
pointer-events: none;
|
|
441
|
+
line-height: 1.2;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
.running-head-left,
|
|
445
|
+
.running-head-right {
|
|
446
|
+
min-width: 0;
|
|
447
|
+
overflow: hidden;
|
|
448
|
+
text-overflow: ellipsis;
|
|
449
|
+
white-space: nowrap;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
.running-head-right {
|
|
453
|
+
max-width: 45%;
|
|
454
|
+
text-align: right;
|
|
438
455
|
}
|
|
439
456
|
|
|
440
457
|
.page-body {
|
|
@@ -448,9 +465,9 @@ button:focus-visible {
|
|
|
448
465
|
justify-content: space-between;
|
|
449
466
|
align-items: baseline;
|
|
450
467
|
gap: 12px;
|
|
451
|
-
font-size: clamp(
|
|
468
|
+
font-size: clamp(8px, 1.2cqw, 9px);
|
|
452
469
|
color: var(--openpress-color-muted);
|
|
453
|
-
letter-spacing:
|
|
470
|
+
letter-spacing: normal;
|
|
454
471
|
opacity: 0.7;
|
|
455
472
|
pointer-events: none;
|
|
456
473
|
}
|
|
@@ -465,7 +482,7 @@ button:focus-visible {
|
|
|
465
482
|
|
|
466
483
|
.page-footer .footer-right {
|
|
467
484
|
font-variant-numeric: tabular-nums;
|
|
468
|
-
letter-spacing: 0.
|
|
485
|
+
letter-spacing: 0.02em;
|
|
469
486
|
flex-shrink: 0;
|
|
470
487
|
}
|
|
471
488
|
|
|
@@ -14,50 +14,45 @@ h3,
|
|
|
14
14
|
h4 {
|
|
15
15
|
break-after: avoid;
|
|
16
16
|
color: var(--openpress-color-ink);
|
|
17
|
-
letter-spacing:
|
|
17
|
+
letter-spacing: normal;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
h2 {
|
|
21
|
-
margin: 0 0 var(--openpress-space-
|
|
21
|
+
margin: 0 0 var(--openpress-space-3);
|
|
22
22
|
padding: 0;
|
|
23
23
|
font-family: var(--openpress-font-serif);
|
|
24
|
-
font-size: clamp(
|
|
24
|
+
font-size: clamp(15px, 2.4cqw, 20px);
|
|
25
25
|
line-height: 1.45;
|
|
26
|
-
font-weight:
|
|
26
|
+
font-weight: 700;
|
|
27
27
|
border: 0;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
h2::before {
|
|
31
|
-
content:
|
|
32
|
-
display: block;
|
|
33
|
-
width: 36px;
|
|
34
|
-
height: 1px;
|
|
35
|
-
background: var(--openpress-color-ink);
|
|
36
|
-
margin-bottom: var(--openpress-space-4);
|
|
31
|
+
content: none;
|
|
37
32
|
}
|
|
38
33
|
|
|
39
|
-
.reader-page--content .page-body
|
|
34
|
+
.reader-page--content .page-body .openpress-mdx-area h2 {
|
|
40
35
|
display: flex;
|
|
41
36
|
align-items: baseline;
|
|
42
37
|
gap: 0.55em;
|
|
43
38
|
margin: 0 0 var(--openpress-space-4);
|
|
44
39
|
}
|
|
45
40
|
|
|
46
|
-
.reader-page--content .page-body
|
|
41
|
+
.reader-page--content .page-body .openpress-mdx-area h2::before {
|
|
47
42
|
content: attr(data-chapter);
|
|
48
43
|
display: inline-block;
|
|
49
44
|
flex-shrink: 0;
|
|
50
45
|
font-family: var(--openpress-font-serif);
|
|
51
|
-
font-size:
|
|
52
|
-
font-weight:
|
|
53
|
-
color: var(--openpress-color-
|
|
46
|
+
font-size: 0.88em;
|
|
47
|
+
font-weight: 700;
|
|
48
|
+
color: var(--openpress-color-ink);
|
|
54
49
|
line-height: 1;
|
|
55
|
-
letter-spacing:
|
|
50
|
+
letter-spacing: normal;
|
|
56
51
|
width: auto;
|
|
57
52
|
min-width: 0;
|
|
58
53
|
height: auto;
|
|
59
54
|
background: transparent;
|
|
60
|
-
padding: 0;
|
|
55
|
+
padding-right: 0.22em;
|
|
61
56
|
margin: 0;
|
|
62
57
|
border: 0;
|
|
63
58
|
}
|
|
@@ -72,26 +67,26 @@ h2::before {
|
|
|
72
67
|
content: attr(data-section);
|
|
73
68
|
flex-shrink: 0;
|
|
74
69
|
font-family: var(--openpress-font-serif);
|
|
75
|
-
font-size: 0.
|
|
76
|
-
font-weight:
|
|
77
|
-
color: var(--openpress-color-
|
|
78
|
-
letter-spacing:
|
|
70
|
+
font-size: 0.98em;
|
|
71
|
+
font-weight: 500;
|
|
72
|
+
color: var(--openpress-color-ink);
|
|
73
|
+
letter-spacing: normal;
|
|
79
74
|
line-height: inherit;
|
|
80
75
|
}
|
|
81
76
|
|
|
82
77
|
h2 + p,
|
|
83
78
|
h2 + h3 {
|
|
84
|
-
margin-top: var(--openpress-space-
|
|
79
|
+
margin-top: var(--openpress-space-2);
|
|
85
80
|
}
|
|
86
81
|
|
|
87
82
|
h3 {
|
|
88
83
|
margin: var(--openpress-space-3) 0 var(--openpress-space-2);
|
|
89
84
|
font-family: var(--openpress-font-serif);
|
|
90
|
-
font-size: clamp(
|
|
91
|
-
line-height: 1.
|
|
92
|
-
font-weight:
|
|
85
|
+
font-size: clamp(12px, 2cqw, 16px);
|
|
86
|
+
line-height: 1.5;
|
|
87
|
+
font-weight: 500;
|
|
93
88
|
color: var(--openpress-color-ink);
|
|
94
|
-
letter-spacing:
|
|
89
|
+
letter-spacing: normal;
|
|
95
90
|
}
|
|
96
91
|
|
|
97
92
|
.reader-page--content .page-body > h3:first-child {
|
|
@@ -100,17 +95,19 @@ h3 {
|
|
|
100
95
|
|
|
101
96
|
h4 {
|
|
102
97
|
margin: var(--openpress-space-3) 0 var(--openpress-space-1);
|
|
103
|
-
font-family: var(--openpress-font-
|
|
104
|
-
font-size: clamp(
|
|
98
|
+
font-family: var(--openpress-font-serif);
|
|
99
|
+
font-size: clamp(10px, 1.75cqw, 14px);
|
|
105
100
|
font-weight: 500;
|
|
106
101
|
color: var(--openpress-color-muted);
|
|
107
|
-
letter-spacing: 0.
|
|
102
|
+
letter-spacing: 0.01em;
|
|
108
103
|
}
|
|
109
104
|
|
|
110
105
|
p {
|
|
111
106
|
margin: 0 0 var(--openpress-space-2);
|
|
112
|
-
font-size: clamp(
|
|
113
|
-
line-height: 1.
|
|
107
|
+
font-size: clamp(10px, 1.8cqw, 11px);
|
|
108
|
+
line-height: 1.65;
|
|
109
|
+
text-align: justify;
|
|
110
|
+
text-justify: inter-word;
|
|
114
111
|
}
|
|
115
112
|
|
|
116
113
|
.reader-page--content p,
|
|
@@ -206,8 +203,8 @@ ol,
|
|
|
206
203
|
ul {
|
|
207
204
|
margin: 0 0 var(--openpress-space-3);
|
|
208
205
|
padding-left: 7mm;
|
|
209
|
-
font-size: clamp(
|
|
210
|
-
line-height: 1.
|
|
206
|
+
font-size: clamp(10px, 1.75cqw, 11px);
|
|
207
|
+
line-height: 1.65;
|
|
211
208
|
}
|
|
212
209
|
|
|
213
210
|
ol {
|
|
@@ -146,99 +146,126 @@
|
|
|
146
146
|
color: var(--openpress-color-ink);
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
/* ─ academic-paper title block
|
|
150
|
-
/* IEEE-style title page: large serif title, optional subtitle, 3-column */
|
|
151
|
-
/* author grid, abstract band, index terms band. Single-column body picks */
|
|
152
|
-
/* up after this surface. Two-column body arrives with the v0.8 paged.js */
|
|
153
|
-
/* migration. */
|
|
149
|
+
/* ─ academic-paper title block for the journal-style template ───────────── */
|
|
154
150
|
|
|
155
151
|
.paper-cover {
|
|
156
152
|
display: flex;
|
|
157
153
|
flex-direction: column;
|
|
158
|
-
gap: clamp(
|
|
159
|
-
padding-block: clamp(
|
|
154
|
+
gap: clamp(11px, 2.2cqw, 20px);
|
|
155
|
+
padding-block: clamp(18px, 2.5cqw, 30px) 0;
|
|
160
156
|
font-family: var(--openpress-font-serif);
|
|
161
157
|
color: var(--openpress-color-ink);
|
|
162
158
|
}
|
|
163
159
|
|
|
160
|
+
.paper-cover-lead,
|
|
161
|
+
.paper-cover-short-title {
|
|
162
|
+
margin: 0;
|
|
163
|
+
text-align: center;
|
|
164
|
+
color: var(--openpress-color-muted);
|
|
165
|
+
font-family: var(--openpress-font-body);
|
|
166
|
+
font-size: clamp(8.5pt, 1.55cqw, 9.5pt);
|
|
167
|
+
letter-spacing: 0.01em;
|
|
168
|
+
line-height: 1.3;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.paper-cover-date {
|
|
172
|
+
margin: 0;
|
|
173
|
+
text-align: center;
|
|
174
|
+
color: var(--openpress-color-muted);
|
|
175
|
+
font-family: var(--openpress-font-body);
|
|
176
|
+
font-size: clamp(7.8pt, 1.3cqw, 8.7pt);
|
|
177
|
+
letter-spacing: 0;
|
|
178
|
+
line-height: 1.25;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.paper-cover-lead {
|
|
182
|
+
margin-top: 2mm;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.paper-cover-short-title {
|
|
186
|
+
margin-bottom: clamp(6px, 1.2cqw, 10px);
|
|
187
|
+
}
|
|
188
|
+
|
|
164
189
|
.paper-title {
|
|
165
190
|
font-family: var(--openpress-font-serif);
|
|
166
|
-
font-size: clamp(
|
|
191
|
+
font-size: clamp(32px, 4.9cqw, 45px);
|
|
167
192
|
line-height: 1.2;
|
|
168
193
|
font-weight: 400;
|
|
169
194
|
text-align: center;
|
|
170
195
|
margin: 0;
|
|
171
|
-
letter-spacing: 0;
|
|
196
|
+
letter-spacing: -0.01em;
|
|
172
197
|
}
|
|
173
198
|
|
|
174
|
-
.paper-
|
|
175
|
-
font-size: clamp(11px, 1.4cqw, 12px);
|
|
176
|
-
font-style: italic;
|
|
199
|
+
.paper-author-contact-note {
|
|
177
200
|
text-align: center;
|
|
201
|
+
margin: 0;
|
|
202
|
+
font-size: clamp(8.5pt, 1.45cqw, 9.5pt);
|
|
178
203
|
color: var(--openpress-color-muted);
|
|
204
|
+
line-height: 1.35;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.paper-author-line {
|
|
179
208
|
margin: 0;
|
|
209
|
+
text-align: center;
|
|
210
|
+
font-size: clamp(11px, 2cqw, 13px);
|
|
211
|
+
line-height: 1.45;
|
|
212
|
+
font-weight: 500;
|
|
180
213
|
}
|
|
181
214
|
|
|
182
|
-
.paper-
|
|
215
|
+
.paper-author-affiliations {
|
|
216
|
+
margin: 0;
|
|
183
217
|
list-style: none;
|
|
184
218
|
padding: 0;
|
|
185
|
-
margin: clamp(8px, 1.6cqw, 16px) 0 0;
|
|
186
|
-
display: grid;
|
|
187
|
-
grid-template-columns: repeat(3, 1fr);
|
|
188
|
-
gap: clamp(10px, 1.4cqw, 16px) clamp(8px, 1.2cqw, 14px);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
.paper-author {
|
|
192
219
|
display: flex;
|
|
193
220
|
flex-direction: column;
|
|
194
|
-
|
|
221
|
+
gap: 1mm;
|
|
195
222
|
text-align: center;
|
|
196
|
-
font-size: clamp(10.5px, 1.3cqw, 11.5px);
|
|
197
|
-
line-height: 1.35;
|
|
198
|
-
gap: 0;
|
|
199
223
|
}
|
|
200
224
|
|
|
201
|
-
.paper-author
|
|
202
|
-
|
|
203
|
-
|
|
225
|
+
.paper-author {
|
|
226
|
+
display: flex;
|
|
227
|
+
flex-direction: column;
|
|
204
228
|
}
|
|
205
229
|
|
|
206
230
|
.paper-author-affiliation {
|
|
207
|
-
font-style: italic;
|
|
208
|
-
margin: 0;
|
|
209
|
-
color: var(--openpress-color-ink);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
.paper-author-location,
|
|
213
|
-
.paper-author-contact {
|
|
214
231
|
margin: 0;
|
|
215
232
|
color: var(--openpress-color-ink);
|
|
233
|
+
font-family: var(--openpress-font-body);
|
|
234
|
+
font-size: clamp(9px, 1.6cqw, 10px);
|
|
235
|
+
line-height: 1.42;
|
|
216
236
|
}
|
|
217
237
|
|
|
218
238
|
.paper-abstract,
|
|
219
|
-
.paper-
|
|
239
|
+
.paper-nontechnical-summary,
|
|
240
|
+
.paper-contributions,
|
|
241
|
+
.paper-abstract > p,
|
|
242
|
+
.paper-nontechnical-summary > p,
|
|
243
|
+
.paper-contributions > p {
|
|
220
244
|
margin-top: clamp(8px, 1.6cqw, 14px);
|
|
221
|
-
font-
|
|
245
|
+
font-family: var(--openpress-font-body);
|
|
246
|
+
font-size: clamp(10px, 1.7cqw, 11px);
|
|
222
247
|
line-height: 1.45;
|
|
248
|
+
text-align: justify;
|
|
249
|
+
text-justify: inter-word;
|
|
223
250
|
}
|
|
224
251
|
|
|
225
|
-
.paper-abstract p,
|
|
226
|
-
.paper-
|
|
252
|
+
.paper-abstract > p,
|
|
253
|
+
.paper-nontechnical-summary > p,
|
|
254
|
+
.paper-contributions > p {
|
|
227
255
|
margin: 0;
|
|
228
|
-
text-indent:
|
|
229
|
-
font-style: italic;
|
|
256
|
+
text-indent: 0.9em;
|
|
230
257
|
}
|
|
231
258
|
|
|
232
259
|
.paper-abstract-label {
|
|
233
|
-
|
|
234
|
-
font-weight:
|
|
260
|
+
display: inline-block;
|
|
261
|
+
font-weight: 500;
|
|
262
|
+
text-transform: none;
|
|
235
263
|
}
|
|
236
264
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
max-width: none;
|
|
265
|
+
.paper-section-label {
|
|
266
|
+
font-family: var(--openpress-font-serif);
|
|
267
|
+
font-size: 0.95em;
|
|
268
|
+
font-weight: 500;
|
|
242
269
|
}
|
|
243
270
|
|
|
244
271
|
/* ─ academic-paper back cover ───────────────────────────────────────────── */
|
|
@@ -1,12 +1,26 @@
|
|
|
1
1
|
/* page-surfaces / toc
|
|
2
|
-
* Table-of-contents page surface
|
|
3
|
-
*
|
|
2
|
+
* Table-of-contents page surface rendered by the manuscript <Toc> helper.
|
|
3
|
+
* Entries flow through the generated toc:<sourceId> chain and TocArea.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
.reader-page--toc {
|
|
7
7
|
padding: 0;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
+
.reader-page--toc .page-frame {
|
|
11
|
+
grid-template-rows: auto minmax(0, 1fr);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.reader-page--toc .toc-header {
|
|
15
|
+
display: block;
|
|
16
|
+
overflow: visible;
|
|
17
|
+
opacity: 1;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.reader-page--toc .openpress-toc-area {
|
|
21
|
+
height: 100%;
|
|
22
|
+
}
|
|
23
|
+
|
|
10
24
|
.reader-page--toc h2 {
|
|
11
25
|
margin-top: 0;
|
|
12
26
|
font-family: var(--openpress-font-serif);
|
|
@@ -18,13 +32,7 @@
|
|
|
18
32
|
}
|
|
19
33
|
|
|
20
34
|
.reader-page--toc h2.toc-heading--continuation {
|
|
21
|
-
|
|
22
|
-
color: var(--openpress-color-muted);
|
|
23
|
-
font-family: var(--openpress-font-mono);
|
|
24
|
-
font-size: calc(8.5pt - var(--openpress-type-step-down));
|
|
25
|
-
font-weight: 400;
|
|
26
|
-
letter-spacing: 0.08em;
|
|
27
|
-
text-align: right;
|
|
35
|
+
display: none;
|
|
28
36
|
}
|
|
29
37
|
|
|
30
38
|
.toc-list {
|
|
@@ -51,6 +59,7 @@
|
|
|
51
59
|
align-items: baseline;
|
|
52
60
|
color: var(--openpress-color-ink);
|
|
53
61
|
text-decoration: none;
|
|
62
|
+
font-family: var(--openpress-font-serif);
|
|
54
63
|
padding: 1.6mm 0;
|
|
55
64
|
font-weight: 400;
|
|
56
65
|
line-height: 1.38;
|
|
@@ -117,6 +126,7 @@
|
|
|
117
126
|
gap: 3mm;
|
|
118
127
|
align-items: baseline;
|
|
119
128
|
color: var(--openpress-color-ink);
|
|
129
|
+
font-family: var(--openpress-font-serif);
|
|
120
130
|
}
|
|
121
131
|
|
|
122
132
|
.toc-title::after {
|