rxiv-maker 1.18.2__py3-none-any.whl → 1.18.4__py3-none-any.whl

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.
rxiv_maker/__version__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  """Version information."""
2
2
 
3
- __version__ = "1.18.2"
3
+ __version__ = "1.18.4"
@@ -375,8 +375,8 @@ class DocxContentProcessor:
375
375
  r"|(__([^_]+)__)" # Underline with double underscores (must come before single underscore)
376
376
  r"|(\*([^*]+)\*)" # Italic with asterisks
377
377
  r"|(_([^_]+)_)" # Italic with underscores
378
- r"|(~([^~]+)~)" # Subscript
379
- r"|(\^([^^]+)\^)" # Superscript
378
+ r"|(~([^~(),;:.!?]+)~)" # Subscript (exclude punctuation to avoid matching "approximately" usage)
379
+ r"|(\^([^^(),;:.!?]+)\^)" # Superscript (same restriction)
380
380
  r"|(`([^`]+)`)" # Code
381
381
  r"|(\$([^\$]+)\$)" # Inline math
382
382
  r"|(\[(\d+(?:[-,]\s*\d+)*)\])" # Citation numbers (supports both ranges [1-3] and lists [1, 2])
@@ -144,7 +144,7 @@ class DocxExporter:
144
144
  # Panel letters must be followed by non-letter (space, punctuation, end of string)
145
145
  markdown_with_numbers = re.sub(
146
146
  rf"@fig:{label}\b(\s+[a-z](?:[,\-][a-z])*(?![a-z]))?",
147
- lambda m, num=num: f"<<XREF:fig>>Fig. {num}{m.group(1) if m.group(1) else ''}<</XREF>>",
147
+ lambda m, num=num: f"<<XREF:fig>>Fig. {num}{m.group(1).strip() if m.group(1) else ''}<</XREF>>",
148
148
  markdown_with_numbers,
149
149
  )
150
150
 
@@ -161,7 +161,7 @@ class DocxExporter:
161
161
  # Negative lookahead prevents matching start of words
162
162
  markdown_with_numbers = re.sub(
163
163
  rf"@sfig:{label}\b(\s+[a-z](?:[,\-][a-z])*(?![a-z]))?",
164
- lambda m, num=num: f"<<XREF:sfig>>Supp. Fig. {num}{m.group(1) if m.group(1) else ''}<</XREF>>",
164
+ lambda m, num=num: f"<<XREF:sfig>>Supp. Fig. {num}{m.group(1).strip() if m.group(1) else ''}<</XREF>>",
165
165
  markdown_with_numbers,
166
166
  )
167
167
 
@@ -230,6 +230,7 @@ class DocxExporter:
230
230
  base_path=self.path_manager.manuscript_path,
231
231
  metadata=metadata,
232
232
  table_map=table_map,
233
+ equation_map=equation_map,
233
234
  figures_at_end=self.figures_at_end,
234
235
  hide_highlighting=self.hide_highlighting,
235
236
  hide_comments=self.hide_comments,
@@ -32,7 +32,7 @@ class DocxWriter:
32
32
  "sfig": WD_COLOR_INDEX.TURQUOISE, # Supplementary figures (turquoise - lighter cyan)
33
33
  "stable": WD_COLOR_INDEX.TURQUOISE, # Supplementary tables (turquoise - lighter cyan)
34
34
  "table": WD_COLOR_INDEX.BLUE, # Main tables
35
- "eq": WD_COLOR_INDEX.VIOLET, # Equations
35
+ "eq": WD_COLOR_INDEX.PINK, # Equations (pink - lighter than violet, easier to read)
36
36
  "snote": WD_COLOR_INDEX.TURQUOISE, # Supplementary notes (turquoise - lighter cyan)
37
37
  "cite": WD_COLOR_INDEX.YELLOW, # Citations (yellow)
38
38
  }
@@ -58,6 +58,7 @@ class DocxWriter:
58
58
  base_path: Optional[Path] = None,
59
59
  metadata: Optional[Dict[str, Any]] = None,
60
60
  table_map: Optional[Dict[str, int]] = None,
61
+ equation_map: Optional[Dict[str, int]] = None,
61
62
  figures_at_end: bool = False,
62
63
  hide_highlighting: bool = False,
63
64
  hide_comments: bool = False,
@@ -72,6 +73,7 @@ class DocxWriter:
72
73
  base_path: Base path for resolving relative figure paths
73
74
  metadata: Document metadata (title, authors, affiliations)
74
75
  table_map: Mapping from table labels to numbers (for supplementary tables)
76
+ equation_map: Mapping from equation labels to numbers
75
77
  figures_at_end: Place main figures at end before SI/bibliography
76
78
  hide_highlighting: Disable colored highlighting on references and citations
77
79
  hide_comments: Exclude all comments (block and inline) from output
@@ -83,6 +85,7 @@ class DocxWriter:
83
85
  self.bibliography = bibliography
84
86
  self.include_footnotes = include_footnotes
85
87
  self.table_map = table_map or {}
88
+ self.equation_map = equation_map or {}
86
89
  self.hide_highlighting = hide_highlighting
87
90
  self.hide_comments = hide_comments
88
91
  doc = Document()
@@ -464,6 +467,9 @@ class DocxWriter:
464
467
  text = run_data["text"]
465
468
  run = paragraph.add_run(text)
466
469
 
470
+ # Always set font size explicitly for consistency (body text is 10pt)
471
+ run.font.size = Pt(10)
472
+
467
473
  # Apply formatting
468
474
  if run_data.get("bold"):
469
475
  run.bold = True
@@ -477,7 +483,7 @@ class DocxWriter:
477
483
  run.font.superscript = True
478
484
  if run_data.get("code"):
479
485
  run.font.name = "Courier New"
480
- run.font.size = Pt(10)
486
+ # Font size already set to Pt(10) above
481
487
  if run_data.get("xref"):
482
488
  # Use color based on xref type (fig, sfig, stable, eq, etc.)
483
489
  xref_type = run_data.get("xref_type", "cite")
@@ -533,6 +539,9 @@ class DocxWriter:
533
539
  text = run_data["text"]
534
540
  run = paragraph.add_run(text)
535
541
 
542
+ # Always set font size explicitly for consistency (body text is 10pt)
543
+ run.font.size = Pt(10)
544
+
536
545
  # Apply formatting
537
546
  if run_data.get("bold"):
538
547
  run.bold = True
@@ -544,15 +553,13 @@ class DocxWriter:
544
553
  run.font.superscript = True
545
554
  if run_data.get("code"):
546
555
  run.font.name = "Courier New"
556
+ # Font size already set to Pt(10) above
547
557
  if run_data.get("xref"):
548
558
  # Use color based on xref type
549
559
  xref_type = run_data.get("xref_type", "cite")
550
560
  self._apply_highlight(run, self.get_xref_color(xref_type))
551
561
  if run_data.get("highlight_yellow"):
552
562
  self._apply_highlight(run, WD_COLOR_INDEX.YELLOW)
553
- run.font.size = Pt(10)
554
- if run_data.get("highlight_yellow"):
555
- self._apply_highlight(run, WD_COLOR_INDEX.YELLOW)
556
563
  elif run_data["type"] == "hyperlink":
557
564
  text = run_data.get("text", "")
558
565
  url = run_data.get("url", "")
@@ -975,7 +982,7 @@ class DocxWriter:
975
982
  run.font.size = Pt(10)
976
983
 
977
984
  def _add_equation(self, doc: Document, section: Dict[str, Any]):
978
- """Add equation to document as native Office Math.
985
+ """Add equation to document as rendered image with numbering.
979
986
 
980
987
  Args:
981
988
  doc: Document object
@@ -984,75 +991,294 @@ class DocxWriter:
984
991
  import re
985
992
 
986
993
  latex_content = section.get("content", "")
987
- _label = section.get("label", "") # Reserved for future use (equation numbering)
994
+ label = section.get("label", "") # e.g., "eq:bernoulli_labeling"
988
995
 
989
996
  if not latex_content:
990
997
  return
991
998
 
999
+ # Get equation number from label
1000
+ equation_number = None
1001
+ if label:
1002
+ # Extract label name (e.g., "eq:bernoulli_labeling" -> "bernoulli_labeling")
1003
+ label_name = label.split(":", 1)[1] if ":" in label else label
1004
+ equation_number = self.equation_map.get(label_name)
1005
+
1006
+ # Create a paragraph for the equation
1007
+ para = doc.add_paragraph()
1008
+ para.alignment = WD_ALIGN_PARAGRAPH.CENTER
1009
+
1010
+ # Try to render equation as image
992
1011
  try:
993
- logger.debug(f"Converting equation to OMML: {latex_content[:50]}...")
994
-
995
- # Check if equation is complex (has fractions, matrices, etc.)
996
- # These don't convert well to Office Math with basic OMML
997
- complex_patterns = [
998
- r"\\frac", # Fractions
999
- r"\\begin\{matrix", # Matrices
1000
- r"\\begin\{array", # Arrays
1001
- r"\\sqrt\[", # Nth roots
1002
- r"\\int_", # Integrals with limits
1003
- r"\\sum_", # Sums with limits
1004
- r"\\prod_", # Products with limits
1005
- ]
1006
-
1007
- is_complex = any(re.search(pattern, latex_content) for pattern in complex_patterns)
1008
-
1009
- if is_complex:
1010
- # Force fallback for complex equations
1011
- raise ValueError("Complex equation detected - using LaTeX source")
1012
+ equation_img = self._render_equation_to_image(latex_content)
1013
+ if equation_img and equation_img.exists():
1014
+ # Add equation image with two-tier sizing
1015
+ run = para.add_run()
1016
+ import re
1017
+
1018
+ from docx.shared import Inches
1019
+
1020
+ # Detect if equation has fractions or other vertical elements
1021
+ has_fractions = bool(re.search(r"\\frac|\\dfrac", latex_content))
1022
+
1023
+ # Simple two-tier sizing:
1024
+ # - Equations with fractions: 0.32 inches (taller for readability)
1025
+ # - Simple equations without fractions: 0.22 inches (consistent with text)
1026
+ if has_fractions:
1027
+ run.add_picture(str(equation_img), height=Inches(0.32))
1028
+ logger.debug("Equation with fractions: height=0.32in")
1029
+ else:
1030
+ run.add_picture(str(equation_img), height=Inches(0.22))
1031
+ logger.debug("Simple equation: height=0.22in")
1012
1032
 
1013
- # Convert LaTeX to MathML
1014
- mathml_str = latex_to_mathml(latex_content)
1015
- logger.debug(f"MathML generated: {mathml_str[:100]}...")
1033
+ logger.info(f"Equation rendered as image: {equation_img}")
1034
+ else:
1035
+ # Fallback to formatted text
1036
+ logger.warning("Failed to render equation as image, using formatted text")
1037
+ self._render_latex_formatted(para, latex_content)
1038
+ except Exception as e:
1039
+ logger.warning(f"Equation image rendering failed: {e}, using formatted text")
1040
+ self._render_latex_formatted(para, latex_content)
1016
1041
 
1017
- # Parse MathML
1018
- mathml_root = etree.fromstring(mathml_str.encode("utf-8"))
1042
+ # Add equation number on the right side if available
1043
+ if equation_number:
1044
+ # Add tab stop for right alignment
1045
+ from docx.enum.text import WD_TAB_ALIGNMENT
1046
+ from docx.shared import Inches
1019
1047
 
1020
- # Convert MathML to OMML (Office Math Markup Language)
1021
- omml_root = self._mathml_to_omml(mathml_root)
1022
- logger.debug(f"OMML element created: {type(omml_root)}")
1048
+ tab_stops = para.paragraph_format.tab_stops
1049
+ tab_stops.add_tab_stop(Inches(6.5), WD_TAB_ALIGNMENT.RIGHT)
1023
1050
 
1024
- # Create a paragraph for the equation
1025
- para = doc.add_paragraph()
1026
- para.alignment = WD_ALIGN_PARAGRAPH.CENTER
1051
+ # Add tab and equation number
1052
+ num_run = para.add_run(f"\t({equation_number})")
1053
+ num_run.font.size = Pt(11)
1027
1054
 
1028
- # Insert the OMML element into the paragraph
1029
- para._element.append(omml_root)
1030
- logger.info("Equation successfully added to document")
1055
+ logger.info("Equation successfully added to document")
1031
1056
 
1032
- # Note: We don't display the equation label in DOCX since references
1033
- # are already converted to "Eq. X" format with yellow highlighting
1057
+ # Add spacing after equation
1058
+ para.paragraph_format.space_after = Pt(12)
1034
1059
 
1035
- # Add spacing after equation
1036
- para.paragraph_format.space_after = Pt(12)
1060
+ def _render_equation_to_image(self, latex_content: str) -> Optional[Path]:
1061
+ """Render LaTeX equation to PNG image.
1037
1062
 
1063
+ Args:
1064
+ latex_content: LaTeX equation content
1065
+
1066
+ Returns:
1067
+ Path to generated PNG image, or None if rendering failed
1068
+ """
1069
+ import hashlib
1070
+ import subprocess
1071
+ import tempfile
1072
+ from pathlib import Path
1073
+
1074
+ # Create a hash of the equation content for caching
1075
+ eq_hash = hashlib.md5(latex_content.encode()).hexdigest()[:8]
1076
+
1077
+ # Use temp directory for equation images
1078
+ temp_dir = Path(tempfile.gettempdir()) / "rxiv_equations"
1079
+ temp_dir.mkdir(exist_ok=True)
1080
+
1081
+ output_png = temp_dir / f"eq_{eq_hash}.png"
1082
+
1083
+ # Check if we already rendered this equation
1084
+ if output_png.exists():
1085
+ logger.debug(f"Using cached equation image: {output_png}")
1086
+ return output_png
1087
+
1088
+ # Create LaTeX document for standalone equation
1089
+ latex_template = r"""\documentclass[preview,border=2pt]{standalone}
1090
+ \usepackage{amsmath}
1091
+ \usepackage{amssymb}
1092
+ \usepackage{amsfonts}
1093
+ \begin{document}
1094
+ \begin{math}
1095
+ \displaystyle EQUATION_CONTENT
1096
+ \end{math}
1097
+ \end{document}
1098
+ """
1099
+ latex_doc = latex_template.replace("EQUATION_CONTENT", latex_content)
1100
+
1101
+ # Write to temporary .tex file
1102
+ tex_file = temp_dir / f"eq_{eq_hash}.tex"
1103
+ with open(tex_file, "w") as f:
1104
+ f.write(latex_doc)
1105
+
1106
+ try:
1107
+ # Compile LaTeX to PDF
1108
+ result = subprocess.run(
1109
+ ["pdflatex", "-interaction=nonstopmode", "-output-directory", str(temp_dir), str(tex_file)],
1110
+ capture_output=True,
1111
+ text=True,
1112
+ timeout=10,
1113
+ )
1114
+
1115
+ if result.returncode != 0:
1116
+ logger.warning(f"pdflatex failed for equation: {latex_content[:50]}...")
1117
+ logger.debug(f"pdflatex output: {result.stdout}")
1118
+ return None
1119
+
1120
+ # Convert PDF to PNG using pdftoppm (high resolution for quality)
1121
+ pdf_file = temp_dir / f"eq_{eq_hash}.pdf"
1122
+ if not pdf_file.exists():
1123
+ logger.warning(f"PDF not generated: {pdf_file}")
1124
+ return None
1125
+
1126
+ # Use pdftoppm to convert to PNG at high DPI (300 for quality)
1127
+ result = subprocess.run(
1128
+ ["pdftoppm", "-png", "-singlefile", "-r", "300", str(pdf_file), str(temp_dir / f"eq_{eq_hash}")],
1129
+ capture_output=True,
1130
+ text=True,
1131
+ timeout=10,
1132
+ )
1133
+
1134
+ if result.returncode != 0:
1135
+ logger.warning(f"pdftoppm failed: {result.stderr}")
1136
+ return None
1137
+
1138
+ if output_png.exists():
1139
+ logger.debug(f"Equation rendered to image: {output_png}")
1140
+ return output_png
1141
+ else:
1142
+ logger.warning(f"PNG not generated: {output_png}")
1143
+ return None
1144
+
1145
+ except subprocess.TimeoutExpired:
1146
+ logger.warning("Equation rendering timed out")
1147
+ return None
1148
+ except FileNotFoundError as e:
1149
+ logger.warning(f"LaTeX/pdftoppm not found: {e}")
1150
+ return None
1038
1151
  except Exception as e:
1039
- logger.warning(f"Equation rendering limitation - using LaTeX source: {e}")
1040
- logger.debug(f"LaTeX content: {latex_content}")
1041
- # Fallback: display LaTeX source with note
1042
- # (Complex equations with fractions, matrices, etc. don't convert well to Office Math)
1043
- para = doc.add_paragraph()
1044
- para.alignment = WD_ALIGN_PARAGRAPH.CENTER
1045
-
1046
- # Add note in smaller text
1047
- note_run = para.add_run("[Equation - see PDF for proper rendering]\n")
1048
- note_run.font.size = Pt(9)
1049
- note_run.italic = True
1050
-
1051
- # Add LaTeX source in monospace
1052
- run = para.add_run(latex_content)
1053
- run.font.name = "Courier New"
1054
- run.font.size = Pt(10)
1055
- para.paragraph_format.space_after = Pt(12)
1152
+ logger.warning(f"Equation rendering error: {e}")
1153
+ return None
1154
+ finally:
1155
+ # Clean up intermediate files
1156
+ for ext in [".tex", ".pdf", ".aux", ".log"]:
1157
+ temp_file = temp_dir / f"eq_{eq_hash}{ext}"
1158
+ if temp_file.exists():
1159
+ try:
1160
+ temp_file.unlink()
1161
+ except Exception:
1162
+ pass
1163
+
1164
+ def _render_latex_formatted(self, paragraph, latex_content: str):
1165
+ """Render LaTeX equation with formatted subscripts and superscripts.
1166
+
1167
+ Args:
1168
+ paragraph: Paragraph object to add formatted equation to
1169
+ latex_content: LaTeX equation content
1170
+ """
1171
+ import re
1172
+
1173
+ # LaTeX symbol replacements
1174
+ symbol_map = {
1175
+ r"\\sim": "~",
1176
+ r"\\approx": "≈",
1177
+ r"\\le": "≤",
1178
+ r"\\ge": "≥",
1179
+ r"\\ne": "≠",
1180
+ r"\\times": "×",
1181
+ r"\\pm": "±",
1182
+ r"\\in": "∈",
1183
+ r"\\subset": "⊂",
1184
+ r"\\cap": "∩",
1185
+ r"\\cup": "∪",
1186
+ r"\\mid": "|",
1187
+ r"\\alpha": "α",
1188
+ r"\\beta": "β",
1189
+ r"\\gamma": "γ",
1190
+ r"\\delta": "δ",
1191
+ r"\\epsilon": "ε",
1192
+ r"\\theta": "θ",
1193
+ r"\\lambda": "λ",
1194
+ r"\\sigma": "σ",
1195
+ r"\\mu": "μ",
1196
+ r"\\pi": "π",
1197
+ r"\\sum": "Σ",
1198
+ r"\\prod": "Π",
1199
+ r"\\int": "∫",
1200
+ r"\\infty": "∞",
1201
+ r"\\mathbb\{I\}": "𝕀",
1202
+ r"\\mathbb\{R\}": "ℝ",
1203
+ r"\\mathbb\{N\}": "ℕ",
1204
+ }
1205
+
1206
+ # Replace LaTeX commands with symbols
1207
+ content = latex_content
1208
+ for latex_cmd, symbol in symbol_map.items():
1209
+ content = re.sub(latex_cmd, symbol, content)
1210
+
1211
+ # Remove \text{} wrappers but keep content
1212
+ content = re.sub(r"\\text\{([^}]+)\}", r"\1", content)
1213
+
1214
+ # Remove \left and \right sizing commands
1215
+ content = re.sub(r"\\left|\\right", "", content)
1216
+
1217
+ # Remove \mathbf{} but keep content (for now, just remove formatting)
1218
+ content = re.sub(r"\\mathbf\{([^}]+)\}", r"\1", content)
1219
+
1220
+ # Parse and render with subscripts/superscripts
1221
+ # Pattern: text followed by _{subscript} or ^{superscript}
1222
+ i = 0
1223
+ while i < len(content):
1224
+ if content[i] == "_" and i + 1 < len(content):
1225
+ # Subscript
1226
+ if content[i + 1] == "{":
1227
+ # Find matching brace
1228
+ brace_end = content.find("}", i + 2)
1229
+ if brace_end != -1:
1230
+ sub_text = content[i + 2 : brace_end]
1231
+ run = paragraph.add_run(sub_text)
1232
+ run.font.subscript = True
1233
+ run.font.size = Pt(11)
1234
+ i = brace_end + 1
1235
+ continue
1236
+ else:
1237
+ # Single character subscript
1238
+ run = paragraph.add_run(content[i + 1])
1239
+ run.font.subscript = True
1240
+ run.font.size = Pt(11)
1241
+ i += 2
1242
+ continue
1243
+
1244
+ elif content[i] == "^" and i + 1 < len(content):
1245
+ # Superscript
1246
+ if content[i + 1] == "{":
1247
+ # Find matching brace
1248
+ brace_end = content.find("}", i + 2)
1249
+ if brace_end != -1:
1250
+ sup_text = content[i + 2 : brace_end]
1251
+ run = paragraph.add_run(sup_text)
1252
+ run.font.superscript = True
1253
+ run.font.size = Pt(11)
1254
+ i = brace_end + 1
1255
+ continue
1256
+ else:
1257
+ # Single character superscript
1258
+ run = paragraph.add_run(content[i + 1])
1259
+ run.font.superscript = True
1260
+ run.font.size = Pt(11)
1261
+ i += 2
1262
+ continue
1263
+
1264
+ # Regular text
1265
+ # Collect text until next special character
1266
+ text_chunk = ""
1267
+ while i < len(content) and content[i] not in ["_", "^", "\\"]:
1268
+ text_chunk += content[i]
1269
+ i += 1
1270
+
1271
+ if text_chunk:
1272
+ run = paragraph.add_run(text_chunk)
1273
+ run.font.size = Pt(11)
1274
+ run.font.italic = True # Math content is typically italic
1275
+
1276
+ # Handle backslash commands we didn't replace
1277
+ if i < len(content) and content[i] == "\\":
1278
+ # Skip the backslash and next word
1279
+ i += 1
1280
+ while i < len(content) and content[i].isalpha():
1281
+ i += 1
1056
1282
 
1057
1283
  def _mathml_to_omml(self, mathml_elem):
1058
1284
  """Convert MathML to OMML (Office Math Markup Language).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rxiv-maker
3
- Version: 1.18.2
3
+ Version: 1.18.4
4
4
  Summary: Write scientific preprints in Markdown. Generate publication-ready PDFs efficiently.
5
5
  Project-URL: Homepage, https://github.com/HenriquesLab/rxiv-maker
6
6
  Project-URL: Documentation, https://github.com/HenriquesLab/rxiv-maker#readme
@@ -107,16 +107,22 @@ Rxiv-Maker converts enhanced Markdown into professional PDFs with automated figu
107
107
  <summary>🍎 <strong>macOS</strong> (Recommended - includes LaTeX automatically)</summary>
108
108
 
109
109
  ```bash
110
- brew tap henriqueslab/formulas
111
- brew install rxiv-maker
112
- rxiv check-installation
110
+ brew install henriqueslab/formulas/rxiv-maker
113
111
  ```
114
112
 
115
- **Upgrade:**
113
+ **Updating:**
116
114
  ```bash
115
+ brew update
117
116
  brew upgrade rxiv-maker
118
117
  ```
119
118
 
119
+ **Verify installation (optional):**
120
+ ```bash
121
+ rxiv check-installation # Verify LaTeX and dependencies
122
+ ```
123
+
124
+ **Benefits:** Simple one-command installation, automatic dependency management (Python 3.13, LaTeX, git, gh), easy updates
125
+
120
126
  > **📖 [Homebrew Formula](https://github.com/HenriquesLab/homebrew-formulas)** - Includes Python, LaTeX (MacTeX), and all dependencies
121
127
 
122
128
  </details>
@@ -1,5 +1,5 @@
1
1
  rxiv_maker/__init__.py,sha256=p04JYC5ZhP6dLXkoWVlKNyiRvsDE1a4C88f9q4xO3tA,3268
2
- rxiv_maker/__version__.py,sha256=r1DNB3JWDHXSSJtFwhx61DHqp-syX6loJLs-YmN6FEQ,51
2
+ rxiv_maker/__version__.py,sha256=22c3XroKkBFqzb5Di5nc0cgd1neLZx9btfk3C7NilG4,51
3
3
  rxiv_maker/rxiv_maker_cli.py,sha256=9Lu_mhFPXwx5jzAR6StCNxwCm_fkmP5qiOYdNuh_AwI,120
4
4
  rxiv_maker/validate.py,sha256=AIzgP59KbCQJqC9WIGfUdVv0xI6ud9g1fFznQkaGz5Q,9373
5
5
  rxiv_maker/cli/__init__.py,sha256=Jw0DTFUSofN-02xpVrt1UUzRcgH5NNd-GPNidhmNwpU,77
@@ -105,9 +105,9 @@ rxiv_maker/engines/operations/validate.py,sha256=OVmtRVtG-r1hoA8IqYaNC-ijN1a5ixM
105
105
  rxiv_maker/engines/operations/validate_pdf.py,sha256=qyrtL752Uap3i6ntQheY570soVjFZRJe8ANrw5AvHFs,5899
106
106
  rxiv_maker/exporters/__init__.py,sha256=NcTD1SDb8tTgsHhCS1A7TVEZncyWbDRTa6sJIdLqcsE,350
107
107
  rxiv_maker/exporters/docx_citation_mapper.py,sha256=oSy1LglLvxlmhO18bzl3EInA2PleE8nXqEgQIIRVzwE,5170
108
- rxiv_maker/exporters/docx_content_processor.py,sha256=FoOaF9BoEpZEF3HG3pzFZFgYbYKwbgRNwkOyURZ8XtI,27895
109
- rxiv_maker/exporters/docx_exporter.py,sha256=7HYgQSGE_7xl3PTMSPKXIW6yHg-b3MU9ASXG-rKVSXo,21456
110
- rxiv_maker/exporters/docx_writer.py,sha256=JvNVprMqdvvDGf65ESsEqf7-A33G1D9Kd0Zi2Q4gmbw,57145
108
+ rxiv_maker/exporters/docx_content_processor.py,sha256=CbP4ud6biVMhqcXLZFP9LDakp4flCuOU2YXrGhcpl70,27992
109
+ rxiv_maker/exporters/docx_exporter.py,sha256=A3-4B7sdJlF3WAtu5jSXfjYi94pq4uxPWQBghAr9300,21511
110
+ rxiv_maker/exporters/docx_writer.py,sha256=nu6Acle7ZAScQ0So1tiVAgWMJhgsc5L9_jLtIY48duQ,65490
111
111
  rxiv_maker/install/__init__.py,sha256=kAB6P-12IKg_K1MQ-uzeC5IR11O2cNxj0t_2JMhooZs,590
112
112
  rxiv_maker/install/dependency_handlers/__init__.py,sha256=NN9dP1usXpYgLpSw0uEnJ6ugX2zefihVjdyDdm1k-cE,231
113
113
  rxiv_maker/install/dependency_handlers/latex.py,sha256=xopSJxYkg3D63rH7RoVLN-Ykl87AZqhlUrrG3m6LoWo,3304
@@ -194,8 +194,8 @@ rxiv_maker/validators/doi/metadata_comparator.py,sha256=euqHhKP5sHQAdZbdoAahUn6Y
194
194
  rxiv_maker/tex/template.tex,sha256=_tPtxrurn3sKTt9Kfa44lPdPyT44vHbDUOGqldU9r2s,1378
195
195
  rxiv_maker/tex/style/rxiv_maker_style.bst,sha256=jbVqrJgAm6F88cow5vtZuPBwwmlcYykclTm8RvZIo6Y,24281
196
196
  rxiv_maker/tex/style/rxiv_maker_style.cls,sha256=6VDmZE0uvYWog6rcYi2K_NIM9-Pgjx9AFdRg_sTheK0,24374
197
- rxiv_maker-1.18.2.dist-info/METADATA,sha256=OqROaCqeuMSX45OfafGdLjR5Q_Y-XxaC__NboFz_z54,18222
198
- rxiv_maker-1.18.2.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
199
- rxiv_maker-1.18.2.dist-info/entry_points.txt,sha256=ghCN0hI9A1GlG7QY5F6E-xYPflA8CyS4B6bTQ1YLop0,97
200
- rxiv_maker-1.18.2.dist-info/licenses/LICENSE,sha256=GSZFoPIhWDNJEtSHTQ5dnELN38zFwRiQO2antBezGQk,1093
201
- rxiv_maker-1.18.2.dist-info/RECORD,,
197
+ rxiv_maker-1.18.4.dist-info/METADATA,sha256=k5MqXx3R4y8-uuXXm6dc3nkTMBAzDzre78bTy_yewtQ,18432
198
+ rxiv_maker-1.18.4.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
199
+ rxiv_maker-1.18.4.dist-info/entry_points.txt,sha256=ghCN0hI9A1GlG7QY5F6E-xYPflA8CyS4B6bTQ1YLop0,97
200
+ rxiv_maker-1.18.4.dist-info/licenses/LICENSE,sha256=GSZFoPIhWDNJEtSHTQ5dnELN38zFwRiQO2antBezGQk,1093
201
+ rxiv_maker-1.18.4.dist-info/RECORD,,