@open-press/cli 0.7.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.
@@ -1,12 +1,26 @@
1
- ## Acknowledgment
1
+ ## Conclusions
2
2
 
3
- The preferred American spelling is *acknowledgment* without an "e" after the "g". Avoid stilted constructions like "one of us (R. B. G.) thanks ...". Prefer "R. B. G. thanks ...".
3
+ This template run shows that a simple methodology with consistent evaluation
4
+ accounting can achieve reliable gains without dramatic architectural complexity.
4
5
 
5
- Acknowledge:
6
+ ### Key Takeaways
6
7
 
7
- - Funding sources (with grant numbers if applicable).
8
- - Collaborators who contributed materially but are not listed as authors.
9
- - Anonymous reviewers whose comments improved the paper.
10
- - Institutional or computational resources.
8
+ - Keep preprocessing and metric reporting deterministic.
9
+ - Use a calibrated validation protocol before reporting final headline scores.
10
+ - Reserve model complexity for problems that cannot be solved with better data
11
+ discipline.
11
12
 
12
- Place sponsor acknowledgments in the unnumbered footnote on the first page of the published version. In this draft pack, keep them here until you migrate to a publisher's class file at submission time.
13
+ ### Practical Recommendations
14
+
15
+ Authors are encouraged to replace each placeholder paragraph with real study details,
16
+ including hardware, code provenance, and full reproducibility statements.
17
+
18
+ ### Limitations and Future Work
19
+
20
+ The current draft is synthetic; external generalization remains to be demonstrated.
21
+ Future work should add domain transfer tests and a public benchmark release.
22
+
23
+ ### Acknowledgments
24
+
25
+ We thank the hypothetical reviewers and platform contributors who would have reviewed
26
+ this draft in a real submission round.
@@ -1,27 +1,32 @@
1
1
  ## References
2
2
 
3
- Number citations consecutively within square brackets `[1]`. Sentence punctuation follows the bracket. Refer simply to the reference number, as in `[3]` — do not use `Ref. [3]` or `reference [3]` except at the start of a sentence: "Reference [3] was the first ...".
4
-
5
- Unless there are six authors or more, give all authors' names; do not use `et al.`. Papers not yet published should be cited as *unpublished*; accepted but not yet published as *in press*. Capitalize only the first word in a paper title, except for proper nouns and element symbols.
6
-
7
- For papers published in translation journals, give the English citation first, followed by the original foreign-language citation.
3
+ Please number references consecutively within brackets `[1]`.
4
+ Sentence punctuation follows the bracketed number.
8
5
 
9
6
  ---
10
7
 
11
- [1] G. Eason, B. Noble, and I. N. Sneddon, "On certain integrals of Lipschitz–Hankel type involving products of Bessel functions," *Phil. Trans. Roy. Soc. London*, vol. A247, pp. 529–551, April 1955.
8
+ [1] G. Eason, B. Noble, and I. N. Sneddon, On certain integrals of
9
+ Lipschitz-Hankel type involving products of Bessel functions,” *Phil. Trans. Roy.
10
+ Soc. London*, vol. A247, pp. 529–551, April 1955.
12
11
 
13
- [2] J. Clerk Maxwell, *A Treatise on Electricity and Magnetism*, 3rd ed., vol. 2. Oxford: Clarendon, 1892, pp. 68–73.
12
+ [2] J. Clerk Maxwell, *A Treatise on Electricity and Magnetism*, 3rd ed., vol. 2.
13
+ Oxford: Clarendon, 1892, pp. 68–73.
14
14
 
15
- [3] I. S. Jacobs and C. P. Bean, "Fine particles, thin films and exchange anisotropy," in *Magnetism*, vol. III, G. T. Rado and H. Suhl, Eds. New York: Academic, 1963, pp. 271–350.
15
+ [3] I. S. Jacobs and C. P. Bean, Fine particles, thin films and exchange anisotropy,”
16
+ in *Magnetism*, vol. III, G. T. Rado and H. Suhl, Eds. New York: Academic,
17
+ 1963, pp. 271–350.
16
18
 
17
- [4] K. Elissa, "Title of paper if known," unpublished.
19
+ [4] K. Elissa, Title of paper if known,” unpublished.
18
20
 
19
- [5] R. Nicole, "Title of paper with only first word capitalized," *J. Name Stand. Abbrev.*, in press.
21
+ [5] R. Nicole, Title of paper with only first word capitalized,” *J. Name Stand.
22
+ Abbrev.*, in press.
20
23
 
21
- [6] Y. Yorozu, M. Hirano, K. Oka, and Y. Tagawa, "Electron spectroscopy studies on magneto-optical media and plastic substrate interface," *IEEE Transl. J. Magn. Japan*, vol. 2, pp. 740–741, August 1987.
24
+ [6] Y. Yorozu, M. Hirano, K. Oka, and Y. Tagawa, Electron spectroscopy studies
25
+ on magneto-optical media and plastic substrate interface,” *IEEE Trans. J. Magn.
26
+ Japan*, vol. 2, pp. 740–741, August 1987.
22
27
 
23
- [7] M. Young, *The Technical Writer's Handbook*. Mill Valley, CA: University Science, 1989.
24
-
25
- ---
28
+ [7] M. Young, *The Technical Writer's Handbook*. Mill Valley, CA: University
29
+ Science, 1989.
26
30
 
27
- > **Reminder**: replace the seven placeholder references above with your own bibliography before circulating the draft. They are the IEEE conference template's example citations and have nothing to do with your paper.
31
+ > Open-press is used for iteration. Remove all template placeholder text and replace
32
+ > references before submission.
@@ -1,5 +1,6 @@
1
1
  import { Frame, MdxArea } from "@open-press/core";
2
2
  import type { SectionsPageProps } from "@open-press/core/manuscript";
3
+ import { useEffect, useRef } from "react";
3
4
 
4
5
  export default function Page({
5
6
  frameKey,
@@ -10,6 +11,25 @@ export default function Page({
10
11
  sectionTitle,
11
12
  sectionTone,
12
13
  }: SectionsPageProps) {
14
+ const pageBodyRef = useRef<HTMLElement | null>(null);
15
+
16
+ const runningHeader =
17
+ "This is a non-peer reviewed Express letter submitted to J SEDI";
18
+ const runningRight = "Your short title goes here";
19
+
20
+ useEffect(() => {
21
+ const area = pageBodyRef.current?.querySelector(".openpress-mdx-area");
22
+ if (!area) return;
23
+
24
+ area.querySelectorAll<HTMLElement>("h2[data-chapter]").forEach((heading) => {
25
+ const chapterValue = heading.getAttribute("data-chapter");
26
+ if (!chapterValue) return;
27
+ if (!/^\d+$/.test(chapterValue)) return;
28
+ const normalized = String(Number.parseInt(chapterValue, 10));
29
+ heading.setAttribute("data-chapter", normalized);
30
+ });
31
+ }, [chainId]);
32
+
13
33
  return (
14
34
  <Frame
15
35
  frameKey={frameKey}
@@ -21,9 +41,12 @@ export default function Page({
21
41
  data-chapter-tone={sectionTone}
22
42
  >
23
43
  <div className="page-frame">
24
- <header className="page-header" aria-hidden="true" />
25
- <main className="page-body">
26
- <MdxArea chainId={chainId} />
44
+ <header className="page-header" aria-hidden="true">
45
+ <span className="running-head-left">{runningHeader}</span>
46
+ <span className="running-head-right">{runningRight}</span>
47
+ </header>
48
+ <main className="page-body" ref={pageBodyRef}>
49
+ <MdxArea chainId={chainId} overflow="extend" />
27
50
  </main>
28
51
  <footer className="page-footer" aria-hidden="true">
29
52
  <span className="footer-left">{sectionTitle}</span>
@@ -1,13 +1,13 @@
1
1
  import { Frame, Press } from "@open-press/core";
2
2
  import type { Manifest } from "@open-press/core";
3
3
  import { mdxSource } from "@open-press/core/mdx";
4
- import { Sections, Toc } from "@open-press/core/manuscript";
4
+ import { Sections } from "@open-press/core/manuscript";
5
5
  import Page from "./components/Page";
6
6
 
7
7
  export const config: Manifest = {
8
- title: "Paper Title",
9
- subtitle: "An academic-paper draft built with open-press",
10
- organization: "Department · Institution",
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",
11
11
  sourceDir: "chapters",
12
12
  mediaDir: "media",
13
13
  themeDir: "theme",
@@ -31,10 +31,6 @@ export const sources = {
31
31
  story: mdxSource({ preset: "section-folders", root: "chapters" }),
32
32
  };
33
33
 
34
- /**
35
- * The cover renders the academic title block: paper title, author grid,
36
- * abstract band, and index terms. Replace the placeholders with your own.
37
- */
38
34
  function Cover() {
39
35
  return (
40
36
  <Frame
@@ -46,74 +42,72 @@ function Cover() {
46
42
  aria-labelledby="paper-title"
47
43
  >
48
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>
49
48
  <h1 id="paper-title" className="paper-title">
50
- Conference Paper Title
49
+ Your article title goes here
50
+ <sup>*</sup>
51
51
  </h1>
52
- <p className="paper-subtitle">
53
- Sub-title (optional). Not captured by indexing services like IEEE Xplore.
52
+ <p className="paper-author-contact-note">
53
+ <span aria-hidden="true">∗</span> Corresponding author:
54
+ firstauthor@university.jp
54
55
  </p>
55
56
 
56
- <ol className="paper-authors" aria-label="Authors">
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>
60
+ </p>
61
+
62
+ <ol className="paper-author-affiliations" aria-label="Author affiliations">
57
63
  <li className="paper-author">
58
- <p className="paper-author-name">First Author Surname</p>
59
- <p className="paper-author-affiliation">dept. of organization</p>
60
- <p className="paper-author-affiliation">name of organization</p>
61
- <p className="paper-author-location">City, Country</p>
62
- <p className="paper-author-contact">email or ORCID</p>
64
+ <p className="paper-author-affiliation">
65
+ 1 Department of Earth Sciences, A University, City, Country
66
+ </p>
63
67
  </li>
64
68
  <li className="paper-author">
65
- <p className="paper-author-name">Second Author Surname</p>
66
- <p className="paper-author-affiliation">dept. of organization</p>
67
- <p className="paper-author-affiliation">name of organization</p>
68
- <p className="paper-author-location">City, Country</p>
69
- <p className="paper-author-contact">email or ORCID</p>
69
+ <p className="paper-author-affiliation">
70
+ 2 School of Earth Sciences, Another University, City, Country
71
+ </p>
70
72
  </li>
71
73
  <li className="paper-author">
72
- <p className="paper-author-name">Third Author Surname</p>
73
- <p className="paper-author-affiliation">dept. of organization</p>
74
- <p className="paper-author-affiliation">name of organization</p>
75
- <p className="paper-author-location">City, Country</p>
76
- <p className="paper-author-contact">email or ORCID</p>
74
+ <p className="paper-author-affiliation">
75
+ 3 Center for Studying Cool Things, University of X, City, Country
76
+ </p>
77
77
  </li>
78
78
  </ol>
79
79
 
80
- <section className="paper-abstract" aria-label="Abstract">
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>
81
86
  <p>
82
- <span className="paper-abstract-label">Abstract</span>—This document
83
- is a model and starting point for an academic paper drafted in
84
- open-press. Replace this abstract with your own — keep it under
85
- 250 words. Do not use abbreviations, symbols, footnotes, or math
86
- in the abstract.
87
+ <span className="paper-section-label">Writing - Original draft:</span>{" "}
88
+ Name Firstauthor.{" "}
89
+ <span className="paper-section-label">
90
+ Writing - Review &amp; Editing:
91
+ </span>{" "}
92
+ Name Firstauthor, Name Secondauthor, Name Thirdauthor.
87
93
  </p>
88
94
  </section>
89
95
 
90
- <section className="paper-index-terms" aria-label="Index terms">
96
+ <section className="paper-abstract" aria-label="Abstract">
91
97
  <p>
92
- <span className="paper-abstract-label">Index Terms</span>—keyword
93
- one, keyword two, keyword three, keyword four
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.
94
101
  </p>
95
102
  </section>
96
- </div>
97
- </Frame>
98
- );
99
- }
100
103
 
101
- function BackCover() {
102
- return (
103
- <Frame
104
- frameKey="back-cover"
105
- role="manuscript.back-cover"
106
- chrome={false}
107
- className="reader-page--back-cover"
108
- data-page-title="Back cover"
109
- >
110
- <div className="paper-back-cover">
111
- <p className="paper-back-kicker">open-press · academic-paper</p>
112
- <p className="paper-back-statement">
113
- Draft built with open-press. When the paper is ready for submission,
114
- port the prose into the publisher's LaTeX class (IEEEtran, acmart,
115
- etc.). open-press is the iteration loop, not the camera-ready output.
116
- </p>
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>
117
111
  </div>
118
112
  </Frame>
119
113
  );
@@ -121,11 +115,9 @@ function BackCover() {
121
115
 
122
116
  export default function AcademicPaperPress() {
123
117
  return (
124
- <Press>
118
+ <Press>
125
119
  <Cover />
126
- <Toc source="story" heading={<h2 id="toc-title" className="toc-heading">Contents</h2>} />
127
120
  <Sections source="story" page={Page} />
128
- <BackCover />
129
121
  </Press>
130
122
  );
131
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(28px, 5cqw, 48px);
387
- --page-margin-top: clamp(28px, 5cqw, 48px);
388
- --page-margin-bottom: clamp(18px, 3cqw, 28px);
389
- --page-header-height: clamp(12px, 1.9cqw, 20px);
390
- --page-footer-height: clamp(18px, 2.6cqw, 26px);
391
- --page-frame-gap: clamp(8px, 1.4cqw, 14px);
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: flex-start;
432
+ align-items: baseline;
433
+ justify-content: space-between;
434
+ gap: var(--openpress-space-3);
433
435
  color: var(--openpress-color-muted);
434
- font-size: clamp(7pt, 1.2cqw, 8pt);
435
- letter-spacing: 0.1em;
436
- opacity: 0.62;
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(7pt, 1.25cqw, 8pt);
468
+ font-size: clamp(8px, 1.2cqw, 9px);
452
469
  color: var(--openpress-color-muted);
453
- letter-spacing: 0.1em;
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.14em;
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: 0.04em;
17
+ letter-spacing: normal;
18
18
  }
19
19
 
20
20
  h2 {
21
- margin: 0 0 var(--openpress-space-4);
21
+ margin: 0 0 var(--openpress-space-3);
22
22
  padding: 0;
23
23
  font-family: var(--openpress-font-serif);
24
- font-size: clamp(5.7pt, 3.4cqw, 17pt);
24
+ font-size: clamp(15px, 2.4cqw, 20px);
25
25
  line-height: 1.45;
26
- font-weight: 300;
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 > h2:first-child {
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 > h2:first-child::before {
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: 1.55em;
52
- font-weight: 300;
53
- color: var(--openpress-color-muted);
46
+ font-size: 0.88em;
47
+ font-weight: 700;
48
+ color: var(--openpress-color-ink);
54
49
  line-height: 1;
55
- letter-spacing: 0.06em;
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.95em;
76
- font-weight: 300;
77
- color: var(--openpress-color-muted);
78
- letter-spacing: 0.08em;
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-3);
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(4.8pt, 2.4cqw, 13pt);
91
- line-height: 1.55;
92
- font-weight: 400;
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: 0.03em;
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-body);
104
- font-size: clamp(4.4pt, 1.9cqw, 11pt);
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.04em;
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(4.2pt, 1.85cqw, 10.5pt);
113
- line-height: 1.85;
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(4.2pt, 1.85cqw, 10.5pt);
210
- line-height: 1.85;
206
+ font-size: clamp(10px, 1.75cqw, 11px);
207
+ line-height: 1.65;
211
208
  }
212
209
 
213
210
  ol {