@amermathsoc/texml-to-html 19.0.0 → 20.0.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.
Files changed (179) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/lib/elements/article-metadata-json.js +10 -12
  3. package/lib/elements/email.js +1 -1
  4. package/lib/transformer.js +8 -12
  5. package/package.json +1 -1
  6. package/test/article-alttitle-meta-snapshot.json +2 -2
  7. package/test/article-meta-snapshot.json +8 -5
  8. package/test/article-nometa-meta-snapshot.json +1 -1
  9. package/test/article.xml +2 -1
  10. package/test/element-email.js +1 -1
  11. package/test/snapshots/article--alttitle.html +2 -2
  12. package/test/snapshots/article--nometa.html +1 -1
  13. package/test/snapshots/article.html +9 -6
  14. package/test/snapshots/texml-tests/LGR.html +1 -1
  15. package/test/snapshots/texml-tests/OT1.html +1 -1
  16. package/test/snapshots/texml-tests/OT1ti.html +1 -1
  17. package/test/snapshots/texml-tests/OT1tt.html +1 -1
  18. package/test/snapshots/texml-tests/OT2.html +1 -1
  19. package/test/snapshots/texml-tests/OT4.html +1 -1
  20. package/test/snapshots/texml-tests/OT6.html +1 -1
  21. package/test/snapshots/texml-tests/T1.html +1 -1
  22. package/test/snapshots/texml-tests/T4.html +1 -1
  23. package/test/snapshots/texml-tests/T5.html +1 -1
  24. package/test/snapshots/texml-tests/Ucharcat.html +1 -1
  25. package/test/snapshots/texml-tests/accent.html +1 -1
  26. package/test/snapshots/texml-tests/algorithm.html +1 -1
  27. package/test/snapshots/texml-tests/algorithmic.html +1 -1
  28. package/test/snapshots/texml-tests/algpseudocode.html +1 -1
  29. package/test/snapshots/texml-tests/ams_measure.html +1 -1
  30. package/test/snapshots/texml-tests/amsart.html +1 -1
  31. package/test/snapshots/texml-tests/amsbook.html +3 -10
  32. package/test/snapshots/texml-tests/amsbook.xml +2 -25
  33. package/test/snapshots/texml-tests/amscyr.html +1 -1
  34. package/test/snapshots/texml-tests/amsfonts.html +1 -1
  35. package/test/snapshots/texml-tests/amsrefs.html +3 -1
  36. package/test/snapshots/texml-tests/amsrefs.xml +2 -0
  37. package/test/snapshots/texml-tests/amsthm-swap.html +81 -0
  38. package/test/snapshots/texml-tests/amsthm-swap.xml +59 -0
  39. package/test/snapshots/texml-tests/amsthm.html +1 -1
  40. package/test/snapshots/texml-tests/amsviet.html +1 -1
  41. package/test/snapshots/texml-tests/appendix-book.html +9 -9
  42. package/test/snapshots/texml-tests/appendix-book.xml +10 -10
  43. package/test/snapshots/texml-tests/appendix.html +1 -1
  44. package/test/snapshots/texml-tests/array.html +1 -1
  45. package/test/snapshots/texml-tests/article.html +3 -3
  46. package/test/snapshots/texml-tests/article.xml +10 -2
  47. package/test/snapshots/texml-tests/arxiv.html +56 -0
  48. package/test/snapshots/texml-tests/arxiv.xml +34 -0
  49. package/test/snapshots/texml-tests/arydshln.html +1 -1
  50. package/test/snapshots/texml-tests/{framebox.html → aufm.html} +6 -10
  51. package/test/snapshots/texml-tests/{framebox.xml → aufm.xml} +2 -8
  52. package/test/snapshots/texml-tests/autoref.html +10 -7
  53. package/test/snapshots/texml-tests/autoref.xml +14 -8
  54. package/test/snapshots/texml-tests/babel.html +3 -0
  55. package/test/snapshots/texml-tests/babel.xml +5 -0
  56. package/test/snapshots/texml-tests/begincsname.html +1 -1
  57. package/test/snapshots/texml-tests/boldline.html +1 -1
  58. package/test/snapshots/texml-tests/book-app.html +10 -4
  59. package/test/snapshots/texml-tests/book-app.xml +18 -6
  60. package/test/snapshots/texml-tests/book.html +3 -6
  61. package/test/snapshots/texml-tests/book.xml +4 -14
  62. package/test/snapshots/texml-tests/boxes.html +1 -1
  63. package/test/snapshots/texml-tests/caption.html +40 -0
  64. package/test/snapshots/texml-tests/caption.xml +18 -0
  65. package/test/snapshots/texml-tests/ccicons.html +1 -1
  66. package/test/snapshots/texml-tests/cite.html +1 -1
  67. package/test/snapshots/texml-tests/cite.xml +1 -1
  68. package/test/snapshots/texml-tests/citesort.html +1 -1
  69. package/test/snapshots/texml-tests/cleveref.html +89 -53
  70. package/test/snapshots/texml-tests/cleveref.xml +65 -53
  71. package/test/snapshots/texml-tests/colortbl.html +1 -1
  72. package/test/snapshots/texml-tests/combinetoks.html +1 -1
  73. package/test/snapshots/texml-tests/constants.html +1 -1
  74. package/test/snapshots/texml-tests/csstring.html +1 -1
  75. package/test/snapshots/texml-tests/detokenize.html +1 -1
  76. package/test/snapshots/texml-tests/diacritics.html +1 -1
  77. package/test/snapshots/texml-tests/dimexpr.html +1 -1
  78. package/test/snapshots/texml-tests/drm.xml +2 -2
  79. package/test/snapshots/texml-tests/euscript.html +40 -0
  80. package/test/snapshots/texml-tests/euscript.xml +18 -0
  81. package/test/snapshots/texml-tests/everyeof.html +1 -1
  82. package/test/snapshots/texml-tests/expanded.html +1 -1
  83. package/test/snapshots/texml-tests/expl3.html +38 -0
  84. package/test/snapshots/texml-tests/expl3.xml +16 -0
  85. package/test/snapshots/texml-tests/extarrows.html +42 -0
  86. package/test/snapshots/texml-tests/extarrows.xml +28 -0
  87. package/test/snapshots/texml-tests/footnote.xml +2 -2
  88. package/test/snapshots/texml-tests/framedboxes.html +45 -0
  89. package/test/snapshots/texml-tests/framedboxes.xml +23 -0
  90. package/test/snapshots/texml-tests/glueexpr.html +1 -1
  91. package/test/snapshots/texml-tests/gsm_l.html +25 -17
  92. package/test/snapshots/texml-tests/gsm_l.xml +47 -35
  93. package/test/snapshots/texml-tests/halign.html +1 -1
  94. package/test/snapshots/texml-tests/hello.html +1 -1
  95. package/test/snapshots/texml-tests/hhline.html +1 -1
  96. package/test/snapshots/texml-tests/hline.html +1 -1
  97. package/test/snapshots/texml-tests/hyperams.html +1 -1
  98. package/test/snapshots/texml-tests/i283.html +41 -0
  99. package/test/snapshots/texml-tests/i283.xml +50 -0
  100. package/test/snapshots/texml-tests/ifcondition.html +1 -1
  101. package/test/snapshots/texml-tests/ifcsname.html +1 -1
  102. package/test/snapshots/texml-tests/ifdefined.html +1 -1
  103. package/test/snapshots/texml-tests/ifdim.html +1 -1
  104. package/test/snapshots/texml-tests/ifnum.html +1 -1
  105. package/test/snapshots/texml-tests/ifprimitive.html +1 -1
  106. package/test/snapshots/texml-tests/immediateassigned.html +1 -1
  107. package/test/snapshots/texml-tests/immediateassignment.html +1 -1
  108. package/test/snapshots/texml-tests/index.html +44 -0
  109. package/test/snapshots/texml-tests/index.xml +22 -0
  110. package/test/snapshots/texml-tests/lastbox.html +1 -1
  111. package/test/snapshots/texml-tests/lastkern.html +39 -0
  112. package/test/snapshots/texml-tests/lastkern.xml +17 -0
  113. package/test/snapshots/texml-tests/lastnamedcs.html +1 -1
  114. package/test/snapshots/texml-tests/let.html +1 -1
  115. package/test/snapshots/texml-tests/letcharcode.html +1 -1
  116. package/test/snapshots/texml-tests/ligatures.html +1 -1
  117. package/test/snapshots/texml-tests/listings.html +1 -1
  118. package/test/snapshots/texml-tests/longtable.html +4 -2
  119. package/test/snapshots/texml-tests/longtable.xml +4 -2
  120. package/test/snapshots/texml-tests/makecell.html +1 -1
  121. package/test/snapshots/texml-tests/maketitle.html +28 -9
  122. package/test/snapshots/texml-tests/maketitle.xml +28 -2
  123. package/test/snapshots/texml-tests/manfnt.html +42 -0
  124. package/test/snapshots/texml-tests/manfnt.xml +20 -0
  125. package/test/snapshots/texml-tests/mathscinet.html +1 -1
  126. package/test/snapshots/texml-tests/mathscr.html +40 -0
  127. package/test/snapshots/texml-tests/mathscr.xml +18 -0
  128. package/test/snapshots/texml-tests/meaning.html +1 -1
  129. package/test/snapshots/texml-tests/metadata.html +2 -2
  130. package/test/snapshots/texml-tests/metadata.xml +2 -3
  131. package/test/snapshots/texml-tests/muexpr.html +1 -1
  132. package/test/snapshots/texml-tests/multicolumn.html +1 -1
  133. package/test/snapshots/texml-tests/multirow.html +1 -1
  134. package/test/snapshots/texml-tests/multirowcell.html +1 -1
  135. package/test/snapshots/texml-tests/multline.html +1 -1
  136. package/test/snapshots/texml-tests/nameref.html +1 -1
  137. package/test/snapshots/texml-tests/nameref.xml +1 -1
  138. package/test/snapshots/texml-tests/names.html +119 -0
  139. package/test/snapshots/texml-tests/names.xml +111 -0
  140. package/test/snapshots/texml-tests/natbib.html +27 -0
  141. package/test/snapshots/texml-tests/natbib.xml +46 -0
  142. package/test/snapshots/texml-tests/noexpand.html +1 -1
  143. package/test/snapshots/texml-tests/noindent.html +1 -1
  144. package/test/snapshots/texml-tests/numexpr.html +1 -1
  145. package/test/snapshots/texml-tests/parshape.html +1 -1
  146. package/test/snapshots/texml-tests/part.html +56 -0
  147. package/test/snapshots/texml-tests/part.xml +100 -0
  148. package/test/snapshots/texml-tests/protected.html +1 -1
  149. package/test/snapshots/texml-tests/quote.html +1 -1
  150. package/test/snapshots/texml-tests/ref.html +52 -17
  151. package/test/snapshots/texml-tests/ref.xml +28 -17
  152. package/test/snapshots/texml-tests/refrange.html +1 -1
  153. package/test/snapshots/texml-tests/scantokens.html +1 -1
  154. package/test/snapshots/texml-tests/section.html +1 -1
  155. package/test/snapshots/texml-tests/showonlyrefs.html +1 -1
  156. package/test/snapshots/texml-tests/smash.html +1 -1
  157. package/test/snapshots/texml-tests/strcmp.html +3 -1
  158. package/test/snapshots/texml-tests/strcmp.xml +2 -0
  159. package/test/snapshots/texml-tests/string.html +1 -1
  160. package/test/snapshots/texml-tests/sub_sup.html +1 -1
  161. package/test/snapshots/texml-tests/subcaption.html +1 -1
  162. package/test/snapshots/texml-tests/subfig.html +2 -2
  163. package/test/snapshots/texml-tests/subfig.xml +3 -3
  164. package/test/snapshots/texml-tests/subfigure.html +1 -1
  165. package/test/snapshots/texml-tests/tableofcontents.xml +2 -2
  166. package/test/snapshots/texml-tests/tabular.html +1 -1
  167. package/test/snapshots/texml-tests/tcolorbox.html +1 -1
  168. package/test/snapshots/texml-tests/textequation.html +1 -1
  169. package/test/snapshots/texml-tests/thm-restate.html +1 -1
  170. package/test/snapshots/texml-tests/tracingnodes.html +1 -1
  171. package/test/snapshots/texml-tests/unexpanded.html +1 -1
  172. package/test/snapshots/texml-tests/unless.html +1 -1
  173. package/test/snapshots/texml-tests/upgreek.html +1 -1
  174. package/test/snapshots/texml-tests/url.html +1 -1
  175. package/test/snapshots/texml-tests/verb.html +1 -1
  176. package/test/snapshots/texml-tests/vlist.html +1 -1
  177. package/test/snapshots/texml-tests/xcolor.html +1 -1
  178. package/test/snapshots/texml-tests/xmllabel.html +44 -0
  179. package/test/snapshots/texml-tests/xmllabel.xml +24 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [20.0.0](https://github.com/AmerMathSoc/texml-to-html/compare/v19.0.1...v20.0.0) (2026-01-08)
6
+
7
+
8
+ ### ⚠ BREAKING CHANGES
9
+
10
+ * JSON metadata for related articles has changed (#493).
11
+
12
+ ### Features
13
+
14
+ * revise related-article handling ([3489681](https://github.com/AmerMathSoc/texml-to-html/commit/3489681fd3db9f8941bdfd8a4e4c66d1d0920dba)), closes [#493](https://github.com/AmerMathSoc/texml-to-html/issues/493)
15
+
16
+ ## [19.0.1](https://github.com/AmerMathSoc/texml-to-html/compare/v19.0.0...v19.0.1) (2026-01-07)
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * **email.js:** mailto protocol ([fd4d33b](https://github.com/AmerMathSoc/texml-to-html/commit/fd4d33b86173d9822716f855d07a5d6c360e3d1d)), closes [#496](https://github.com/AmerMathSoc/texml-to-html/issues/496)
22
+
5
23
  ## [19.0.0](https://github.com/AmerMathSoc/texml-to-html/compare/v18.7.0...v19.0.0) (2025-11-26)
6
24
 
7
25
 
@@ -95,13 +95,12 @@ export function generateArticleJson(articleMetaNode) {
95
95
  articleMetaJson.identifiers.amsref = articleMetaNode.querySelector('article-citation')?.textContent.trim();
96
96
 
97
97
  // related articles
98
- articleMetaNode.querySelectorAll('related-article').forEach(relatedArticle => {
99
- const pii = relatedArticle.querySelector('pub-id[pub-id-type="pii"]').textContent;
100
- const link = relatedArticle.querySelector('ext-link');
101
- articleMetaJson.relatedArticles[pii] = {
98
+ articleMetaJson.relatedArticles = articleMetaNode.querySelectorAll('related-article').map(relatedArticle => {
99
+ return {
102
100
  type: relatedArticle.getAttribute('related-article-type'),
103
- url: link.getAttribute('ext-link'),
104
- linkText: link.textContent,
101
+ html: relatedArticle.getAttribute('xml:lang') ?
102
+ `<span lang="${relatedArticle.getAttribute('xml:lang')}">${this.passthroughIntoHTMLString(relatedArticle)}</span>`
103
+ : this.passthroughIntoHTMLString(relatedArticle),
105
104
  };
106
105
  });
107
106
 
@@ -130,11 +129,11 @@ export function generateArticleJson(articleMetaNode) {
130
129
 
131
130
  // journal volume info
132
131
  articleMetaJson.volumeInfo = {
133
- volume: articleMetaNode.querySelector('volume')?.textContent,
134
- issue: articleMetaNode.querySelector('issue')?.textContent,
135
- pageFirst: articleMetaNode.querySelector('fpage')?.textContent,
136
- pageLast: articleMetaNode.querySelector('lpage')?.textContent,
137
- pageRange: articleMetaNode.querySelector('page-range')?.textContent,
132
+ volume: articleMetaNode.querySelector('article-meta > volume')?.textContent,
133
+ issue: articleMetaNode.querySelector('article-meta > issue')?.textContent,
134
+ pageFirst: articleMetaNode.querySelector('article-meta > fpage')?.textContent,
135
+ pageLast: articleMetaNode.querySelector('article-meta > lpage')?.textContent,
136
+ pageRange: articleMetaNode.querySelector('article-meta > page-range')?.textContent,
138
137
  }
139
138
 
140
139
  // categories
@@ -164,4 +163,3 @@ export function generateArticleJson(articleMetaNode) {
164
163
 
165
164
  return JSON.stringify(articleMetaJson, null, 4);
166
165
  };
167
-
@@ -23,6 +23,6 @@
23
23
  export default function (htmlParentNode, xmlnode) {
24
24
  const text = xmlnode.textContent;
25
25
  htmlParentNode.appendChild(
26
- this.createNode('a', text, { href: `mailto://${text}` })
26
+ this.createNode('a', text, { href: `mailto:${text}` })
27
27
  );
28
28
  };
@@ -143,7 +143,14 @@ export class Transformer {
143
143
  'app-group',
144
144
  'book-title-group',
145
145
  'private-char',
146
- 'article-title' // NOTE: maybe map to label (like title)
146
+ 'article-title', // NOTE: maybe map to label (like title)
147
+ 'source',
148
+ 'issn',
149
+ 'volume',
150
+ 'issue',
151
+ 'year',
152
+ 'fpage',
153
+ 'lpage',
147
154
  ].forEach(mapTag.bind(null, this.passThrough));
148
155
  }
149
156
 
@@ -208,17 +215,6 @@ export class Transformer {
208
215
  this.passThrough(span, xmlnode);
209
216
  return span.innerHTML.trim();
210
217
  }
211
-
212
- /**
213
- * Recursion hack for metadata generation
214
- * @param {Node} xmlnode
215
- * @returns {String}
216
- */
217
- recurseTheDomIntoHTMLString = xmlnode => {
218
- const span = this.createNode('span');
219
- this.recurseTheDom(span, xmlnode);
220
- return span.innerHTML.trim();
221
- }
222
218
 
223
219
  createHeading = (section, xmlnode) => { // create heading structure
224
220
  const label = xmlnode.querySelector(':scope>label:not(:empty)');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amermathsoc/texml-to-html",
3
- "version": "19.0.0",
3
+ "version": "20.0.0",
4
4
  "type": "module",
5
5
  "description": "A NodeJS library for converting AMS-style JATS XML to HTML",
6
6
  "scripts": {
@@ -16,7 +16,7 @@
16
16
  "amsref": "",
17
17
  "basename": "journalIdundefined"
18
18
  },
19
- "relatedArticles": {},
19
+ "relatedArticles": [],
20
20
  "publishers": [
21
21
  {
22
22
  "name": "publisher-name",
@@ -27,7 +27,7 @@
27
27
  "contribAs": [
28
28
  {
29
29
  "name": "Given Sur, Jr.",
30
- "bio": "Some biographical info with <a href=\"mailto://email\">email</a>",
30
+ "bio": "Some biographical info with <a href=\"mailto:email\">email</a>",
31
31
  "affiliations": [
32
32
  "aff"
33
33
  ],
@@ -17,13 +17,16 @@
17
17
  "amsref": "",
18
18
  "basename": "journalIdmanuscriptId"
19
19
  },
20
- "relatedArticles": {
21
- "S0894-0347-2023-01025-2": {
20
+ "relatedArticles": [
21
+ {
22
22
  "type": "erratum-forward",
23
- "url": "https://www.ams.org/jams/2023-36-04/S0894-0347-2023-01025-2/",
24
- "linkText": "J. Amer. Math. Soc. 36 (2023), 1305-1308."
23
+ "html": "<a href=\"https://www.ams.org/jams/2023-36-04/S0894-0347-2023-01025-2/\">J. Amer. Math. Soc. 36 (2023), 1305-1308.</a>"
24
+ },
25
+ {
26
+ "type": "original-language",
27
+ "html": "<span lang=\"ru-cyrl\"><span data-ams-doc=\"stringname\">Х. А. Хачатрян</span><ams-x>,</ams-x> <span data-ams-doc=\"stringname\">А. С. Петросян</span><ams-x>,</ams-x> Однопараметрическое семейство неограниченных положительных решений для одного класса нелинейных трехмерных интегральных уравнений с оператором типа Гаммерштейна–Немыцкого<ams-x>,</ams-x> Труды Московского математического общества <ams-x>(</ams-x>0134-8663<ams-x>)</ams-x> 84<ams-x>(</ams-x>1<ams-x>)</ams-x> <ams-x>(</ams-x>2023<ams-x>)</ams-x> 37<ams-x>–</ams-x>53<ams-x>.</ams-x> URL <a href=\"http://mi.mathnet.ru/mmo681\">http://mi.mathnet.ru/mmo681</a></span>"
25
28
  }
26
- },
29
+ ],
27
30
  "publishers": [
28
31
  {
29
32
  "name": "publisher-name",
@@ -7,7 +7,7 @@
7
7
  "uri": {},
8
8
  "basename": "noti20-1Cundefined"
9
9
  },
10
- "relatedArticles": {},
10
+ "relatedArticles": [],
11
11
  "publishers": [],
12
12
  "contributors": {
13
13
  "authors": [
package/test/article.xml CHANGED
@@ -79,8 +79,9 @@
79
79
  <self-uri xlink:href="href" content-type="pdf"/>
80
80
  <related-article related-article-type="erratum-forward">
81
81
  <pub-id pub-id-type="pii">S0894-0347-2023-01025-2</pub-id>
82
- <ext-link ext-link="https://www.ams.org/jams/2023-36-04/S0894-0347-2023-01025-2/">J. Amer. Math. Soc. 36 (2023), 1305-1308.</ext-link>
82
+ <ext-link xlink:href="https://www.ams.org/jams/2023-36-04/S0894-0347-2023-01025-2/">J. Amer. Math. Soc. 36 (2023), 1305-1308.</ext-link>
83
83
  </related-article>
84
+ <related-article hreflang="ru-cyrl" related-article-type="original-language" xlink:href="http://mi.mathnet.ru/mmo681" xml:lang="ru-cyrl"><string-name>Х. А. Хачатрян</string-name><x>,</x> <string-name>А. С. Петросян</string-name><x>,</x> <article-title>Однопараметрическое семейство неограниченных положительных решений для одного класса нелинейных трехмерных интегральных уравнений с оператором типа Гаммерштейна–Немыцкого</article-title><x>,</x> <source>Труды Московского математического общества</source> <x>(</x><issn>0134-8663</issn><x>)</x> <volume>84</volume><x>(</x><issue>1</issue><x>)</x> <x>(</x><year>2023</year><x>)</x> <fpage>37</fpage><x>–</x><lpage>53</lpage><x>.</x> URL <ext-link hreflang="ru-cyrl" xlink:href="http://mi.mathnet.ru/mmo681">http://mi.mathnet.ru/mmo681</ext-link></related-article>
84
85
  <article-citation/>
85
86
  <kwd-group>
86
87
  <kwd>keyword</kwd>
@@ -21,6 +21,6 @@ import tape from 'tape';
21
21
  tape('Template: email', async function(t) {
22
22
  t.plan(1);
23
23
  const document = article;
24
- const email = document.querySelector('a[href="mailto://email"]');
24
+ const email = document.querySelector('a[href="mailto:email"]');
25
25
  t.equal(email.innerHTML, 'email', 'email to anchor with mailto address');
26
26
  });
@@ -16,7 +16,7 @@
16
16
  "basename": "journalIdundefined",
17
17
  "amsref": ""
18
18
  },
19
- "relatedArticles": {},
19
+ "relatedArticles": [],
20
20
  "publishers": [
21
21
  {
22
22
  "name": "publisher-name",
@@ -27,7 +27,7 @@
27
27
  "contribAs": [
28
28
  {
29
29
  "name": "Given Sur, Jr.",
30
- "bio": "Some biographical info with <a href=\"mailto://email\">email</a>",
30
+ "bio": "Some biographical info with <a href=\"mailto:email\">email</a>",
31
31
  "affiliations": [
32
32
  "aff"
33
33
  ],
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": "noti20-1Cundefined"
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {
14
14
  "authors": [
@@ -18,13 +18,16 @@
18
18
  "basename": "journalIdmanuscriptId",
19
19
  "amsref": ""
20
20
  },
21
- "relatedArticles": {
22
- "S0894-0347-2023-01025-2": {
21
+ "relatedArticles": [
22
+ {
23
23
  "type": "erratum-forward",
24
- "url": "https://www.ams.org/jams/2023-36-04/S0894-0347-2023-01025-2/",
25
- "linkText": "J. Amer. Math. Soc. 36 (2023), 1305-1308."
24
+ "html": "<a href=\"https://www.ams.org/jams/2023-36-04/S0894-0347-2023-01025-2/\">J. Amer. Math. Soc. 36 (2023), 1305-1308.</a>"
25
+ },
26
+ {
27
+ "type": "original-language",
28
+ "html": "<span lang=\"ru-cyrl\"><span data-ams-doc=\"stringname\">Х. А. Хачатрян</span><ams-x>,</ams-x> <span data-ams-doc=\"stringname\">А. С. Петросян</span><ams-x>,</ams-x> Однопараметрическое семейство неограниченных положительных решений для одного класса нелинейных трехмерных интегральных уравнений с оператором типа Гаммерштейна–Немыцкого<ams-x>,</ams-x> Труды Московского математического общества <ams-x>(</ams-x>0134-8663<ams-x>)</ams-x> 84<ams-x>(</ams-x>1<ams-x>)</ams-x> <ams-x>(</ams-x>2023<ams-x>)</ams-x> 37<ams-x>–</ams-x>53<ams-x>.</ams-x> URL <a href=\"http://mi.mathnet.ru/mmo681\">http://mi.mathnet.ru/mmo681</a></span>"
26
29
  }
27
- },
30
+ ],
28
31
  "publishers": [
29
32
  {
30
33
  "name": "publisher-name",
@@ -490,7 +493,7 @@
490
493
  </alg-algorithm>
491
494
  </section>
492
495
  <section id="null" data-ams-doc="null" data-ams-doc-level="0">
493
- <p>Email <a href="mailto://email">email</a> in content, not metadata.</p>
496
+ <p>Email <a href="mailto:email">email</a> in content, not metadata.</p>
494
497
  </section>
495
498
  <section id="contentModel" data-ams-doc="null" data-ams-doc-level="0">
496
499
  <section id="contentModel-1" data-ams-doc="null" data-ams-doc-level="5">
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {
14
14
  "authors": [
@@ -1,17 +1,10 @@
1
- <!DOCTYPE html> <html dir="ltr" lang="en"><head><meta charset="utf-8"><meta content="width=device-width, initial-scale=1" name="viewport"><title>AMS Publication</title></head><body>
2
- <section data-ams-doc="titlepage"><script type="application/json">{"book":{"identifiers":{"AMS":{},"crossref":{},"issn":{},"isbn":{},"loc":{},"basename":null},"title":""},"publishers":[],"contributors":{"authors":[{"name":"Jane Doe","bio":"","affiliations":[],"emails":["jane.doe@nowhere"],"mrauth":"MR author id","orcid":"ORCID id","uri":"https://www.ams.org/"},{"name":"John Bull","bio":"","affiliations":[],"emails":["john.bull@nowhere"],"uri":"https://www.ams.org/"}]},"permissions":{},"history":{}}</script></section>
1
+ <!DOCTYPE html> <html dir="ltr" lang="en"><head><meta charset="utf-8"><meta content="width=device-width, initial-scale=1" name="viewport"><title>Sample book</title></head><body>
2
+ <section data-ams-doc="titlepage"><script type="application/json">{"book":{"identifiers":{"AMS":{},"crossref":{},"issn":{},"isbn":{},"loc":{},"basename":null},"title":"Sample book","alttitle":"Sample book"},"publishers":[],"contributors":{"authors":[{"name":"Jane Doe","bio":"","affiliations":[],"emails":["jane.doe@nowhere"],"mrauth":"MR author id","orcid":"ORCID id","uri":"https://www.ams.org/"},{"name":"John Bull","bio":"","affiliations":[],"emails":["john.bull@nowhere"],"uri":"https://www.ams.org/"}]},"permissions":{},"history":{}}</script></section>
3
3
 
4
4
 
5
5
 
6
6
 
7
- <section id="ltxid3" data-ams-doc="section" data-ams-doc-level="1"><h2><span data-ams-doc="label">1<ams-x>.</ams-x></span> <span data-ams-doc="title">Introduction</span></h2>
8
- <section data-ams-byline="Jane Doe and John Bull" data-ams-contributors="{&quot;authors&quot;:[{&quot;name&quot;:&quot;Jane Doe&quot;,&quot;bio&quot;:&quot;&quot;,&quot;affiliations&quot;:[],&quot;emails&quot;:[&quot;jane.doe@nowhere&quot;],&quot;mrauth&quot;:&quot;MR author id&quot;,&quot;orcid&quot;:&quot;ORCID id&quot;,&quot;uri&quot;:&quot;https://www.ams.org/&quot;},{&quot;name&quot;:&quot;John Bull&quot;,&quot;bio&quot;:&quot;&quot;,&quot;affiliations&quot;:[],&quot;emails&quot;:[&quot;john.bull@nowhere&quot;],&quot;uri&quot;:&quot;https://www.ams.org/&quot;}]}" data-ams-doc="sec-meta">
9
-
10
- <section role="doc-abstract" data-ams-doc-level="1"><h2><span data-ams-doc="title">Abstract<ams-x>.</ams-x></span></h2>
11
-
12
- <p>Abstract text goes here.</p>
13
- </section>
14
- </section>
7
+ <section role="doc-introduction" id="ltxid3" data-ams-doc="section" data-ams-doc-level="1"><h2><span data-ams-doc="label">1<ams-x>.</ams-x></span> <span data-ams-doc="title">Introduction</span></h2>
15
8
 
16
9
 
17
10
  <p>Here is some text.</p>
@@ -1,9 +1,9 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
1
+ <?xml version="1.0" encoding="utf-8"?>
2
2
  <!DOCTYPE book PUBLIC "-//NLM//DTD BITS Book Interchange DTD v2.1 20180401//EN" "BITS-book2.dtd">
3
3
  <book xmlns:xlink="http://www.w3.org/1999/xlink">
4
4
  <book-meta>
5
5
  <book-title-group>
6
- <article-title>Sample book</article-title>
6
+ <book-title>Sample book</book-title>
7
7
  </book-title-group>
8
8
  <contrib-group content-type="authors">
9
9
  <contrib contrib-type="author">
@@ -28,29 +28,6 @@
28
28
  <book-part>
29
29
  <body>
30
30
  <sec disp-level="1" id="ltxid3" specific-use="section">
31
- <sec-meta>
32
- <contrib-group content-type="authors">
33
- <contrib contrib-type="author">
34
- <string-name>Jane Doe</string-name>
35
- <contrib-id contrib-id-type="orcid">ORCID id</contrib-id>
36
- <contrib-id contrib-id-type="mrauth">MR author id</contrib-id>
37
- <aff>First author’s address</aff>
38
- <aff specific-use="current">First author’s current address</aff>
39
- <email>jane.doe@nowhere</email>
40
- <uri>https://www.ams.org/</uri>
41
- </contrib>
42
- <contrib contrib-type="author">
43
- <string-name>John Bull</string-name>
44
- <aff>Second author’s address</aff>
45
- <email>john.bull@nowhere</email>
46
- <uri>https://www.ams.org/</uri>
47
- </contrib>
48
- </contrib-group>
49
- <abstract>
50
- <title>Abstract<x>.</x></title>
51
- <p>Abstract text goes here.</p>
52
- </abstract>
53
- </sec-meta>
54
31
  <label>1<x>.</x></label>
55
32
  <title>Introduction</title>
56
33
  <p>Here is some text.</p>
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -45,6 +45,8 @@
45
45
  <p>Eng 2: <cite-group><ams-x>[</ams-x><cite><a role="doc-biblioref" data-ams-ref="bibr" href="#bibr-Enna2">Engb</a></cite><ams-x>]</ams-x></cite-group></p>
46
46
  <p>Eng 3: <cite-group><ams-x>[</ams-x><cite><a role="doc-biblioref" data-ams-ref="bibr" href="#bibr-Enna3">Engc</a></cite><ams-x>]</ams-x></cite-group></p>
47
47
  <p>Eng 4: <cite-group><ams-x>[</ams-x><cite><a role="doc-biblioref" data-ams-ref="bibr" href="#bibr-Enna4">Engd</a></cite><ams-x>]</ams-x></cite-group></p>
48
+ <p>arXiv: <a href="https://arxiv.org/abs/1405.7064"><span data-ams-style="monospace">arXiv:1405.7064</span></a></p>
49
+ <p>arXiv w/ category: <a href="https://arxiv.org/abs/1405.7064"><span data-ams-style="monospace">arXiv:1405.7064 [math.NT]</span></a></p>
48
50
  </section>
49
51
 
50
52
 
@@ -23,6 +23,8 @@
23
23
  <p>Eng 2: <cite-group><x>[</x><xref ref-type="bibr" rid="bibr-Enna2" specific-use="cite">Engb</xref><x>]</x></cite-group></p>
24
24
  <p>Eng 3: <cite-group><x>[</x><xref ref-type="bibr" rid="bibr-Enna3" specific-use="cite">Engc</xref><x>]</x></cite-group></p>
25
25
  <p>Eng 4: <cite-group><x>[</x><xref ref-type="bibr" rid="bibr-Enna4" specific-use="cite">Engd</xref><x>]</x></cite-group></p>
26
+ <p>arXiv: <ext-link xlink:href="https://arxiv.org/abs/1405.7064"><monospace>arXiv:1405.7064</monospace></ext-link></p>
27
+ <p>arXiv w/ category: <ext-link xlink:href="https://arxiv.org/abs/1405.7064"><monospace>arXiv:1405.7064 [math.NT]</monospace></ext-link></p>
26
28
  </sec>
27
29
  </body>
28
30
  <back id="ltxid4">