rxiv-maker 1.18.0__tar.gz → 1.18.2__tar.gz

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 (382) hide show
  1. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/CHANGELOG.md +50 -1
  2. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/PKG-INFO +1 -1
  3. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/__version__.py +1 -1
  4. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/converters/table_processor.py +61 -32
  5. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/exporters/docx_writer.py +18 -5
  6. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/processors/template_processor.py +10 -0
  7. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/templates/registry.py +52 -12
  8. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/tex/template.tex +2 -0
  9. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/cli/test_changelog_command.py +8 -2
  10. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/.gitignore +0 -0
  11. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/LICENSE +0 -0
  12. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/README.md +0 -0
  13. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/pyproject.toml +0 -0
  14. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/docs/api/README.md +0 -0
  15. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/docs/api/index.md +0 -0
  16. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/logo/logo-rxiv-maker.afdesign +0 -0
  17. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/logo/logo-rxiv-maker.png +0 -0
  18. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/logo/logo-rxiv-maker.svg +0 -0
  19. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/__init__.py +0 -0
  20. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/__init__.py +0 -0
  21. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/__main__.py +0 -0
  22. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/__init__.py +0 -0
  23. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/arxiv.py +0 -0
  24. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/bibliography.py +0 -0
  25. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/build.py +0 -0
  26. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/cache_management.py +0 -0
  27. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/changelog.py +0 -0
  28. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/check_installation.py +0 -0
  29. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/clean.py +0 -0
  30. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/completion.py +0 -0
  31. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/config.py +0 -0
  32. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/create_repo.py +0 -0
  33. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/docx.py +0 -0
  34. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/figures.py +0 -0
  35. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/get_rxiv_preprint.py +0 -0
  36. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/init.py +0 -0
  37. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/install_deps.py +0 -0
  38. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/repo_init.py +0 -0
  39. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/repos.py +0 -0
  40. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/repos_search.py +0 -0
  41. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/setup.py +0 -0
  42. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/track_changes.py +0 -0
  43. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/upgrade.py +0 -0
  44. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/validate.py +0 -0
  45. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/commands/version.py +0 -0
  46. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/framework/__init__.py +0 -0
  47. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/framework/base.py +0 -0
  48. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/framework/cache_commands.py +0 -0
  49. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/framework/config_commands.py +0 -0
  50. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/framework/content_commands.py +0 -0
  51. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/framework/decorators.py +0 -0
  52. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/framework/utility_commands.py +0 -0
  53. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/framework/workflow_commands.py +0 -0
  54. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/framework.py +0 -0
  55. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/interactive.py +0 -0
  56. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/interactive_prompts.py +0 -0
  57. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/cli/main.py +0 -0
  58. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/config/defaults.py +0 -0
  59. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/config/validator.py +0 -0
  60. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/converters/__init__.py +0 -0
  61. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/converters/citation_processor.py +0 -0
  62. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/converters/code_processor.py +0 -0
  63. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/converters/comment_processor.py +0 -0
  64. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/converters/custom_command_processor.py +0 -0
  65. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/converters/figure_processor.py +0 -0
  66. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/converters/html_processor.py +0 -0
  67. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/converters/list_processor.py +0 -0
  68. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/converters/math_processor.py +0 -0
  69. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/converters/md2tex.py +0 -0
  70. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/converters/python_executor.py +0 -0
  71. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/converters/section_processor.py +0 -0
  72. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/converters/supplementary_note_processor.py +0 -0
  73. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/converters/text_formatters.py +0 -0
  74. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/converters/types.py +0 -0
  75. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/converters/url_processor.py +0 -0
  76. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/cache/__init__.py +0 -0
  77. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/cache/advanced_cache.py +0 -0
  78. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/cache/bibliography_cache.py +0 -0
  79. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/cache/cache_utils.py +0 -0
  80. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/cache/doi_cache.py +0 -0
  81. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/cache/secure_cache_utils.py +0 -0
  82. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/content_processor.py +0 -0
  83. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/environment_bootstrap.py +0 -0
  84. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/environment_manager.py +0 -0
  85. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/error_codes.py +0 -0
  86. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/error_recovery.py +0 -0
  87. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/logging_config.py +0 -0
  88. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/managers/__init__.py +0 -0
  89. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/managers/cache_manager.py +0 -0
  90. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/managers/config_manager.py +0 -0
  91. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/managers/dependency_manager.py +0 -0
  92. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/managers/execution_manager.py +0 -0
  93. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/managers/file_manager.py +0 -0
  94. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/managers/install_manager.py +0 -0
  95. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/managers/state_manager.py +0 -0
  96. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/managers/unified_config_manager.py +0 -0
  97. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/managers/validation_manager.py +0 -0
  98. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/managers/workflow_manager.py +0 -0
  99. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/path_manager.py +0 -0
  100. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/progress_framework.py +0 -0
  101. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/repo_config.py +0 -0
  102. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/repository.py +0 -0
  103. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/session_optimizer.py +0 -0
  104. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/core/validation_framework.py +0 -0
  105. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/data/tips.yaml +0 -0
  106. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/engines/__init__.py +0 -0
  107. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/engines/operations/__init__.py +0 -0
  108. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/engines/operations/add_bibliography.py +0 -0
  109. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/engines/operations/build_manager.py +0 -0
  110. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/engines/operations/cleanup.py +0 -0
  111. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/engines/operations/fix_bibliography.py +0 -0
  112. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/engines/operations/generate_docs.py +0 -0
  113. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/engines/operations/generate_figures.py +0 -0
  114. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/engines/operations/generate_preprint.py +0 -0
  115. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/engines/operations/prepare_arxiv.py +0 -0
  116. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/engines/operations/setup_environment.py +0 -0
  117. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/engines/operations/track_changes.py +0 -0
  118. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/engines/operations/validate.py +0 -0
  119. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/engines/operations/validate_pdf.py +0 -0
  120. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/exporters/__init__.py +0 -0
  121. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/exporters/docx_citation_mapper.py +0 -0
  122. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/exporters/docx_content_processor.py +0 -0
  123. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/exporters/docx_exporter.py +0 -0
  124. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/install/__init__.py +0 -0
  125. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/install/dependency_handlers/__init__.py +0 -0
  126. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/install/dependency_handlers/latex.py +0 -0
  127. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/install/dependency_handlers/r_lang.py +0 -0
  128. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/install/dependency_handlers/system_libs.py +0 -0
  129. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/install/platform_installers/__init__.py +0 -0
  130. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/install/platform_installers/base.py +0 -0
  131. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/install/platform_installers/linux.py +0 -0
  132. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/install/platform_installers/macos.py +0 -0
  133. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/install/platform_installers/windows.py +0 -0
  134. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/install/utils/__init__.py +0 -0
  135. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/install/utils/logging.py +0 -0
  136. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/install/utils/progress.py +0 -0
  137. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/install/utils/verification.py +0 -0
  138. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/manuscript_utils/__init__.py +0 -0
  139. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/manuscript_utils/figure_utils.py +0 -0
  140. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/processors/__init__.py +0 -0
  141. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/processors/author_processor.py +0 -0
  142. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/processors/markdown_preprocessor.py +0 -0
  143. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/processors/yaml_processor.py +0 -0
  144. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/rxiv_maker_cli.py +0 -0
  145. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/scripts/__init__.py +0 -0
  146. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/scripts/custom_doc_generator.py +0 -0
  147. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/scripts/validate_manuscript.py +0 -0
  148. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/services/__init__.py +0 -0
  149. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/services/base.py +0 -0
  150. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/services/build_service.py +0 -0
  151. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/services/configuration_service.py +0 -0
  152. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/services/manuscript_service.py +0 -0
  153. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/services/publication_service.py +0 -0
  154. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/services/validation_service.py +0 -0
  155. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/templates/__init__.py +0 -0
  156. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/templates/manager.py +0 -0
  157. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/tex/python_execution_section.tex +0 -0
  158. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/__init__.py +0 -0
  159. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/accent_character_map.py +0 -0
  160. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/author_affiliation_processor.py +0 -0
  161. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/author_name_formatter.py +0 -0
  162. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/bibliography_checksum.py +0 -0
  163. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/bibliography_parser.py +0 -0
  164. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/bst_generator.py +0 -0
  165. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/changelog_parser.py +0 -0
  166. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/citation_range_formatter.py +0 -0
  167. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/citation_utils.py +0 -0
  168. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/comment_filter.py +0 -0
  169. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/dependency_checker.py +0 -0
  170. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/docx_helpers.py +0 -0
  171. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/doi_resolver.py +0 -0
  172. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/email_encoder.py +0 -0
  173. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/figure_checksum.py +0 -0
  174. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/file_helpers.py +0 -0
  175. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/github.py +0 -0
  176. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/homebrew_checker.py +0 -0
  177. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/install_detector.py +0 -0
  178. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/label_extractor.py +0 -0
  179. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/operation_ids.py +0 -0
  180. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/pdf_splitter.py +0 -0
  181. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/pdf_utils.py +0 -0
  182. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/performance.py +0 -0
  183. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/platform.py +0 -0
  184. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/python_execution_reporter.py +0 -0
  185. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/retry.py +0 -0
  186. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/rich_upgrade_notifier.py +0 -0
  187. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/text_utils.py +0 -0
  188. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/tips.py +0 -0
  189. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/title_sync.py +0 -0
  190. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/unicode_safe.py +0 -0
  191. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/update_checker.py +0 -0
  192. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/utils/url_to_doi.py +0 -0
  193. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/validate.py +0 -0
  194. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/validators/__init__.py +0 -0
  195. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/validators/base_validator.py +0 -0
  196. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/validators/citation_validator.py +0 -0
  197. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/validators/doi/__init__.py +0 -0
  198. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/validators/doi/api_clients.py +0 -0
  199. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/validators/doi/metadata_comparator.py +0 -0
  200. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/validators/doi_validator.py +0 -0
  201. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/validators/figure_validator.py +0 -0
  202. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/validators/latex_error_parser.py +0 -0
  203. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/validators/math_validator.py +0 -0
  204. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/validators/pdf_validator.py +0 -0
  205. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/validators/reference_validator.py +0 -0
  206. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/rxiv_maker/validators/syntax_validator.py +0 -0
  207. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/tex/style/rxiv_maker_style.bst +0 -0
  208. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/src/tex/style/rxiv_maker_style.cls +0 -0
  209. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/__init__.py +0 -0
  210. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/cli/__init__.py +0 -0
  211. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/cli/test_build.py +0 -0
  212. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/cli/test_init_command.py +0 -0
  213. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/cli/test_main.py +0 -0
  214. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/conftest.py +0 -0
  215. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/e2e/__init__.py +0 -0
  216. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/e2e/test_dummy_manuscript_generator.py +0 -0
  217. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/e2e/test_figure_workflow_validation.py +0 -0
  218. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/fixtures/00_CONFIG.yml +0 -0
  219. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/fixtures/01_MAIN.md +0 -0
  220. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/fixtures/03_REFERENCES.bib +0 -0
  221. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/fixtures/FIGURES/Fig1.png +0 -0
  222. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/fixtures/FIGURES/Fig2.png +0 -0
  223. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/fixtures/FIGURES/Fig3.png +0 -0
  224. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/fixtures/README.md +0 -0
  225. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/fixtures/docx_export/sample_manuscript/01_MAIN.md +0 -0
  226. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/fixtures/docx_export/sample_manuscript/02_SUPPLEMENTARY_INFO.md +0 -0
  227. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/fixtures/docx_export/sample_manuscript/03_REFERENCES.bib +0 -0
  228. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/fixtures/docx_export/sample_manuscript/2025__unknown_et_al__rxiv.docx +0 -0
  229. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/fixtures/docx_export/sample_manuscript/sample_manuscript.docx +0 -0
  230. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/__init__.py +0 -0
  231. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_article_generation.py +0 -0
  232. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_bibliography_author_format_docx.py +0 -0
  233. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_binary_distribution.py +0 -0
  234. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_centralized_components.py +0 -0
  235. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_citation_injection.py +0 -0
  236. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_comment_system_integration.py +0 -0
  237. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_docx_export_integration.py +0 -0
  238. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_doi_fallback_integration.py +0 -0
  239. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_doi_validation_integration.py +0 -0
  240. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_example_manuscript.py +0 -0
  241. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_guillaume_fixtures.py +0 -0
  242. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_homebrew_workflow_validation.py +0 -0
  243. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_infrastructure_suite.py +0 -0
  244. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_init_build_workflow.py +0 -0
  245. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_install_verification_integration.py +0 -0
  246. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_latex_dependency_integration.py +0 -0
  247. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_manuscript_directory_integration.py +0 -0
  248. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_manuscript_python_execution_reporting.py +0 -0
  249. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_practical_manuscript_workflows.py +0 -0
  250. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_pypi_package_integration.py +0 -0
  251. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_python_execution_integration.py +0 -0
  252. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_repository_cli_integration.py +0 -0
  253. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_supplementary_formatting.py +0 -0
  254. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_user_reported_issue.py +0 -0
  255. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/integration/test_validation_workflow.py +0 -0
  256. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/regression/README.md +0 -0
  257. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/regression/conftest.py +0 -0
  258. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/regression/test_cli_argument_parsing.py +0 -0
  259. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/regression/test_discord_reported_issues.py +0 -0
  260. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/regression/test_error_message_quality.py +0 -0
  261. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/regression/test_google_colab_integration.py +0 -0
  262. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/regression/test_guillaume_edge_cases.py +0 -0
  263. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/regression/test_guillaume_pr131_rewrite.py +0 -0
  264. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/regression/test_path_resolution.py +0 -0
  265. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/regression/test_widget_author_behavior.py +0 -0
  266. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/regression/test_widget_interactions_playwright.py +0 -0
  267. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/smoke/__init__.py +0 -0
  268. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/smoke/test_basic_functionality.py +0 -0
  269. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/smoke/test_cli_smoke.py +0 -0
  270. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/system/__init__.py +0 -0
  271. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/system/test_ci_matrix.py +0 -0
  272. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/system/test_cli_workflows.py +0 -0
  273. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/system/test_end_to_end.py +0 -0
  274. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/test_homebrew_checker.py +0 -0
  275. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/test_install_detector.py +0 -0
  276. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/__init__.py +0 -0
  277. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/exporters/__init__.py +0 -0
  278. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/exporters/test_docx_citation_mapper.py +0 -0
  279. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/exporters/test_docx_content_processor.py +0 -0
  280. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_add_bibliography.py +0 -0
  281. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_arxiv_command.py +0 -0
  282. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_async_execution_manager.py +0 -0
  283. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_author_name_formatter.py +0 -0
  284. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_author_processor.py +0 -0
  285. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_bst_generator.py +0 -0
  286. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_build_command.py +0 -0
  287. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_build_manager.py +0 -0
  288. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_build_manager_manuscript_path.py +0 -0
  289. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_cache_security.py +0 -0
  290. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_cache_utils.py +0 -0
  291. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_check_installation_command.py +0 -0
  292. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_citation_processor.py +0 -0
  293. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_citation_rendering.py +0 -0
  294. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_citation_style.py +0 -0
  295. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_citation_utils.py +0 -0
  296. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_cli_cleanup_integration.py +0 -0
  297. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_cli_structure.py +0 -0
  298. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_comment_processor.py +0 -0
  299. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_conda_installation_manager.py +0 -0
  300. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_conda_platform_detection.py +0 -0
  301. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_cross_platform_optimizations.py +0 -0
  302. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_custom_command_processor.py +0 -0
  303. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_dependency_manager.py +0 -0
  304. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_dependency_package_names.py +0 -0
  305. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_docx_doi_resolution.py +0 -0
  306. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_docx_helpers.py +0 -0
  307. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_doi_fallback_system.py +0 -0
  308. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_doi_resolver.py +0 -0
  309. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_doi_validator.py +0 -0
  310. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_email_encoder.py +0 -0
  311. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_environment_manager.py +0 -0
  312. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_error_handling_scenarios.py +0 -0
  313. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_execution_manager_comprehensive.py +0 -0
  314. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_figure_generator.py +0 -0
  315. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_figure_processor.py +0 -0
  316. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_figure_processor_error_handling.py +0 -0
  317. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_file_helpers.py +0 -0
  318. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_fix_bibliography.py +0 -0
  319. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_generate_docs.py +0 -0
  320. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_generate_preprint.py +0 -0
  321. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_github.py +0 -0
  322. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_github_actions_integration.py +0 -0
  323. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_importlib_edge_cases.py +0 -0
  324. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_install_platform_installers.py +0 -0
  325. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_install_system_libs.py +0 -0
  326. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_install_verification.py +0 -0
  327. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_interactive_path_change.py +0 -0
  328. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_interactive_validators.py +0 -0
  329. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_latex_dependency_handler.py +0 -0
  330. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_manuscript_figure_utils.py +0 -0
  331. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_manuscript_repository.py +0 -0
  332. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_math_processor.py +0 -0
  333. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_md2tex.py +0 -0
  334. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_mermaid_fallback.py +0 -0
  335. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_path_manager.py +0 -0
  336. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_pdf_validator.py +0 -0
  337. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_platform_comprehensive.py +0 -0
  338. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_platform_detector.py +0 -0
  339. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_processor_suite.py +0 -0
  340. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_python_execution_reporter.py +0 -0
  341. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_python_executor.py +0 -0
  342. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_release_orchestrator.py +0 -0
  343. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_repository_manager.py +0 -0
  344. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_rich_upgrade_notifier.py +0 -0
  345. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_rxiv_setup_command.py +0 -0
  346. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_security_features.py +0 -0
  347. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_security_scanner.py +0 -0
  348. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_setup_environment.py +0 -0
  349. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_style_file_resolution.py +0 -0
  350. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_supplementary_note_processor.py +0 -0
  351. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_table_rotation.py +0 -0
  352. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_template_processor.py +0 -0
  353. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_text_formatters.py +0 -0
  354. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_text_utils.py +0 -0
  355. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_tips.py +0 -0
  356. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_title_sync.py +0 -0
  357. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_title_sync_validation.py +0 -0
  358. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_track_changes.py +0 -0
  359. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_trailing_slash_regression.py +0 -0
  360. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_upgrade_command.py +0 -0
  361. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_url_to_doi.py +0 -0
  362. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_utils.py +0 -0
  363. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_validate_backticks.py +0 -0
  364. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_validate_command_fixed.py +0 -0
  365. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_validate_manuscript.py +0 -0
  366. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_validation_suite.py +0 -0
  367. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_validators.py +0 -0
  368. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/unit/test_yaml_processor.py +0 -0
  369. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/visual/README.md +0 -0
  370. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/visual/figure-positioning/00_CONFIG.yml +0 -0
  371. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/visual/figure-positioning/01_MAIN.md +0 -0
  372. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/visual/figure-positioning/03_REFERENCES.bib +0 -0
  373. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/visual/figure-positioning/FIGURES/Figure__positioning_test.png +0 -0
  374. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/visual/figure-positioning/FIGURES/Figure__positioning_test.py +0 -0
  375. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/visual/figure-positioning/FIGURES/ReadyFig.png +0 -0
  376. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/visual/figure-positioning/FIGURES/ReadyFig.py +0 -0
  377. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/visual/figure-positioning/README.md +0 -0
  378. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/visual/methods-placement/00_CONFIG.yml +0 -0
  379. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/visual/methods-placement/01_MAIN.md +0 -0
  380. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/visual/methods-placement/02_SUPPLEMENTARY_INFO.md +0 -0
  381. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/visual/methods-placement/03_REFERENCES.bib +0 -0
  382. {rxiv_maker-1.18.0 → rxiv_maker-1.18.2}/tests/visual/methods-placement/README.md +0 -0
@@ -7,7 +7,56 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ## [1.18.0] - 2025-12-23
10
+ ## [1.18.2] - 2026-01-06
11
+
12
+ ### Fixed
13
+
14
+ - **Table Caption Parser Enhancement**: Improved robustness of table caption detection
15
+ - Flexible whitespace handling: Parser now skips blank lines and HTML comments between tables and captions
16
+ - Cross-reference support: Table captions can now include references to figures, tables, and equations
17
+ - Dynamic line-skipping logic: Intelligently determines how many lines to skip based on actual content
18
+ - Fixes issues where captions separated from tables by comments or extra whitespace were not detected
19
+
20
+ ## [1.18.1] - 2024-12-24
21
+
22
+ ### Added
23
+
24
+ - **Complete Template Sections**: All standard manuscript sections now included by default in `rxiv init`
25
+ - Data Availability: Repository information and DOI guidance
26
+ - Code Availability: GitHub links, software versions, licensing details
27
+ - Author Contributions: Role descriptions with author initials
28
+ - Acknowledgements: Non-author contributors and assistance
29
+ - Funding: Grant information and funding declarations
30
+ - Competing Interests: Conflict of interest statements
31
+ - Ensures manuscripts include all sections required by most journals
32
+
33
+ ### Changed
34
+
35
+ - **Template Standardization**: Consistent section structure across all template types
36
+ - Journal template now includes all standard sections (Data/Code Availability, Author Contributions, Acknowledgements)
37
+ - Preprint template now includes Acknowledgements section
38
+ - All templates use same section ordering for consistency
39
+
40
+ ### Fixed
41
+
42
+ - **Funding Section in PDF**: Funding section now correctly appears in generated PDFs
43
+ - Added `<PY-RPL:FUNDING-BLOCK>` placeholder to LaTeX template
44
+ - Added funding block generation logic to template processor
45
+ - Funding environment was defined in style file but not used in pipeline
46
+ - **DOCX Figure Width**: Figures no longer exceed text line width in DOCX output
47
+ - Changed from hardcoded 6.5" width to dynamic calculation from document dimensions
48
+ - Calculates available width from page width minus left/right margins
49
+ - Ensures figures fit properly regardless of page size or margin settings
50
+ - **Template Clarity**: Removed confusing "References" heading from all templates
51
+ - Eliminates confusion between manual References heading and auto-generated Bibliography section
52
+ - Users no longer see duplicate or conflicting reference-related headings
53
+
54
+ ### Documentation
55
+
56
+ - Template placeholder text provides clear guidance on what content to include in each section
57
+ - Section ordering follows standard scientific manuscript structure
58
+
59
+ ## [1.18.0] - 2024-12-23
11
60
 
12
61
  ### Added
13
62
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rxiv-maker
3
- Version: 1.18.0
3
+ Version: 1.18.2
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
@@ -1,3 +1,3 @@
1
1
  """Version information."""
2
2
 
3
- __version__ = "1.18.0"
3
+ __version__ = "1.18.2"
@@ -139,9 +139,9 @@ def convert_tables_to_latex(
139
139
  result_lines.pop() # Remove caption line
140
140
 
141
141
  # Check for new format table caption after the table
142
- new_format_caption, table_id, rotation_angle = _parse_table_caption(lines, i)
143
- if new_format_caption:
144
- i += 2 # Skip blank line and caption line
142
+ new_format_caption, table_id, rotation_angle, lines_to_skip = _parse_table_caption(lines, i)
143
+ if new_format_caption and lines_to_skip:
144
+ i += lines_to_skip # Skip blank lines, comments, and caption line
145
145
 
146
146
  # Generate LaTeX table with the processed caption
147
147
  latex_table = generate_latex_table(
@@ -844,39 +844,68 @@ def _is_table_row(line: str) -> bool:
844
844
  return "|" in line and line.startswith("|") and line.endswith("|")
845
845
 
846
846
 
847
- def _parse_table_caption(lines: list[str], i: int) -> tuple[str | None, str | None, int | None]:
848
- """Parse table caption in new format after table."""
847
+ def _parse_table_caption(lines: list[str], i: int) -> tuple[str | None, str | None, int | None, int | None]:
848
+ """Parse table caption in new format after table.
849
+
850
+ Returns:
851
+ tuple of (caption, table_id, rotation_angle, lines_to_skip)
852
+ lines_to_skip indicates how many lines after position i should be skipped
853
+ """
849
854
  new_format_caption = None
850
855
  table_id = None
851
856
  rotation_angle = None
857
+ lines_to_skip = None
852
858
 
853
- if (
854
- i < len(lines)
855
- and lines[i].strip() == ""
856
- and i + 1 < len(lines)
857
- and re.match(r"^\{#[a-zA-Z0-9_:-]+.*\}\s*\*\*.*\*\*", lines[i + 1].strip())
858
- ):
859
- # Found new format caption, parse it
860
- caption_line = lines[i + 1].strip()
861
-
862
- # Parse caption with optional attributes like rotate=90
863
- caption_match = re.match(r"^\{#([a-zA-Z0-9_:-]+)([^}]*)\}\s*(.+)$", caption_line)
864
- if caption_match:
865
- table_id = caption_match.group(1)
866
- attributes_str = caption_match.group(2).strip()
867
- caption_text = caption_match.group(3)
868
-
869
- # Extract rotation attribute if present
870
- if attributes_str:
871
- rotation_match = re.search(r"rotate=(\d+)", attributes_str)
872
- if rotation_match:
873
- rotation_angle = int(rotation_match.group(1))
874
-
875
- # Process caption text to handle markdown formatting
876
- new_format_caption = re.sub(r"\*\*([^*]+)\*\*", r"\\textbf{\1}", caption_text)
877
- new_format_caption = re.sub(r"\*([^*]+)\*", r"\\textit{\1}", new_format_caption)
878
-
879
- return new_format_caption, table_id, rotation_angle
859
+ # Look ahead for caption, skipping blank lines and HTML comments
860
+ # Search up to 5 lines ahead to be flexible
861
+ search_limit = min(i + 5, len(lines))
862
+
863
+ for offset in range(search_limit - i):
864
+ check_line = lines[i + offset].strip()
865
+
866
+ # Skip blank lines and HTML comments
867
+ if check_line == "" or (check_line.startswith("<!--") and check_line.endswith("-->")):
868
+ continue
869
+
870
+ # Check if this is a new-format caption
871
+ if re.match(r"^\{#[a-zA-Z0-9_:-]+.*\}\s*\*\*.*\*\*", check_line):
872
+ caption_line = check_line
873
+
874
+ # Parse caption with optional attributes like rotate=90
875
+ caption_match = re.match(r"^\{#([a-zA-Z0-9_:-]+)([^}]*)\}\s*(.+)$", caption_line)
876
+ if caption_match:
877
+ table_id = caption_match.group(1)
878
+ attributes_str = caption_match.group(2).strip()
879
+ caption_text = caption_match.group(3)
880
+
881
+ # Extract rotation attribute if present
882
+ if attributes_str:
883
+ rotation_match = re.search(r"rotate=(\d+)", attributes_str)
884
+ if rotation_match:
885
+ rotation_angle = int(rotation_match.group(1))
886
+
887
+ # Process caption text to handle markdown formatting
888
+ new_format_caption = re.sub(r"\*\*([^*]+)\*\*", r"\\textbf{\1}", caption_text)
889
+ new_format_caption = re.sub(r"\*([^*]+)\*", r"\\textit{\1}", new_format_caption)
890
+
891
+ # Convert cross-references (figures, tables, equations) in caption
892
+ from .figure_processor import (
893
+ convert_equation_references_to_latex,
894
+ convert_figure_references_to_latex,
895
+ )
896
+
897
+ new_format_caption = convert_figure_references_to_latex(new_format_caption)
898
+ new_format_caption = convert_table_references_to_latex(new_format_caption)
899
+ new_format_caption = convert_equation_references_to_latex(new_format_caption)
900
+
901
+ # Return how many lines to skip (all lines from i to caption, inclusive)
902
+ lines_to_skip = offset + 1
903
+ break
904
+ else:
905
+ # Found a non-blank, non-comment, non-caption line - stop searching
906
+ break
907
+
908
+ return new_format_caption, table_id, rotation_angle, lines_to_skip
880
909
 
881
910
 
882
911
  def _split_table_row_respecting_backticks(row: str) -> list[str]:
@@ -12,7 +12,7 @@ from docx import Document
12
12
  from docx.enum.text import WD_ALIGN_PARAGRAPH, WD_COLOR_INDEX
13
13
  from docx.oxml import OxmlElement
14
14
  from docx.oxml.ns import qn
15
- from docx.shared import Inches, Pt, RGBColor
15
+ from docx.shared import Pt, RGBColor
16
16
  from latex2mathml.converter import convert as latex_to_mathml
17
17
  from lxml import etree
18
18
 
@@ -689,9 +689,22 @@ class DocxWriter:
689
689
  img_width, img_height = img.size
690
690
  aspect_ratio = img_width / img_height
691
691
 
692
- # Page dimensions with margins (Letter size: 8.5 x 11 inches, 1 inch margins)
693
- max_width = Inches(6.5) # 8.5 - 2*1
694
- max_height = Inches(9) # 11 - 2*1
692
+ # Calculate available width from document section settings
693
+ # Get the current section to read actual page dimensions and margins
694
+ section = doc.sections[-1] # Use the most recent section
695
+
696
+ # Page width minus left and right margins
697
+ available_width = section.page_width - section.left_margin - section.right_margin
698
+
699
+ # Page height minus top and bottom margins
700
+ available_height = section.page_height - section.top_margin - section.bottom_margin
701
+
702
+ # Convert available width to Inches for comparison
703
+ max_width = available_width
704
+ max_height = available_height
705
+
706
+ # Calculate aspect ratio thresholds
707
+ page_aspect_ratio = available_width / available_height
695
708
 
696
709
  # Add figure centered
697
710
  # Note: add_picture() creates a paragraph automatically, but we need to add it explicitly
@@ -700,7 +713,7 @@ class DocxWriter:
700
713
  fig_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
701
714
 
702
715
  # Calculate optimal size maintaining aspect ratio
703
- if aspect_ratio > (6.5 / 9): # Wide image - constrain by width
716
+ if aspect_ratio > page_aspect_ratio: # Wide image - constrain by width
704
717
  run = fig_para.add_run()
705
718
  run.add_picture(img_source, width=max_width)
706
719
  else: # Tall image - constrain by height
@@ -639,6 +639,16 @@ def process_template_replacements(template_content, yaml_metadata, article_md, o
639
639
  acknowledgements_block = ""
640
640
  template_content = template_content.replace("<PY-RPL:ACKNOWLEDGEMENTS-BLOCK>", acknowledgements_block)
641
641
 
642
+ # Funding
643
+ funding = content_sections.get("funding", "").strip()
644
+ if funding:
645
+ funding_block = f"""\\begin{{funding}}
646
+ {funding}
647
+ \\end{{funding}}"""
648
+ else:
649
+ funding_block = ""
650
+ template_content = template_content.replace("<PY-RPL:FUNDING-BLOCK>", funding_block)
651
+
642
652
  # Competing Interests
643
653
  competing_interests = content_sections.get("competing_interests", "").strip()
644
654
  if competing_interests:
@@ -190,9 +190,29 @@ Interpret your results in the context of existing literature and theory. Discuss
190
190
 
191
191
  Summarize your key findings and their significance. Reinforce the main contributions of your work and their broader impact on the field. Keep this section concise but impactful, leaving readers with a clear understanding of what your research has accomplished and why it matters.
192
192
 
193
- ## References
193
+ ## Data Availability
194
194
 
195
- Citations are automatically formatted from 03_REFERENCES.bib. Reference works using citation keys like [@smith2023] for single citations or [@smith2023; @johnson2022] for multiple citations.
195
+ Describe where the data supporting the findings of this study are available. Include repository names, accession numbers, DOIs, or URLs. If data are available upon request, state this clearly with contact information.
196
+
197
+ ## Code Availability
198
+
199
+ Provide information about the availability of code, software, or algorithms used in this study. Include repository URLs (e.g., GitHub), software package names with version numbers, and any licensing information.
200
+
201
+ ## Author Contributions
202
+
203
+ Describe the specific contributions of each author to the work. Use initials to identify authors and describe their roles (e.g., "A.B. and C.D. designed the study. A.B. performed experiments. C.D. analyzed data. All authors contributed to writing the manuscript.").
204
+
205
+ ## Acknowledgements
206
+
207
+ Acknowledge individuals, groups, or organizations that contributed to the work but do not meet authorship criteria. This may include technical assistance, discussions, or provision of materials.
208
+
209
+ ## Funding
210
+
211
+ Provide information about funding sources, grant numbers, and supporting organizations. If no external funding was received, state "This research received no external funding."
212
+
213
+ ## Competing Interests
214
+
215
+ The authors declare no competing interests.
196
216
  """
197
217
 
198
218
  def _get_default_supplementary_template(self) -> str:
@@ -353,10 +373,6 @@ Organize your content with additional sections as needed.
353
373
  ## Conclusions
354
374
 
355
375
  Summarize your conclusions.
356
-
357
- ## References
358
-
359
- Add citations using [@ref_key].
360
376
  """
361
377
 
362
378
  def _get_minimal_supplementary_template(self) -> str:
@@ -436,9 +452,29 @@ Suggest future research directions.
436
452
 
437
453
  Summarize key conclusions.
438
454
 
439
- ## References
455
+ ## Data Availability
456
+
457
+ Describe where the data supporting the findings of this study are available. Include repository names, accession numbers, DOIs, or URLs. If data are available upon request, state this clearly with contact information.
458
+
459
+ ## Code Availability
440
460
 
441
- [@ref]
461
+ Provide information about the availability of code, software, or algorithms used in this study. Include repository URLs (e.g., GitHub), software package names with version numbers, and any licensing information.
462
+
463
+ ## Author Contributions
464
+
465
+ Describe the specific contributions of each author to the work. Use initials to identify authors and describe their roles (e.g., "A.B. and C.D. designed the study. A.B. performed experiments. C.D. analyzed data. All authors contributed to writing the manuscript.").
466
+
467
+ ## Acknowledgements
468
+
469
+ Acknowledge individuals, groups, or organizations that contributed to the work but do not meet authorship criteria. This may include technical assistance, discussions, or provision of materials.
470
+
471
+ ## Funding
472
+
473
+ Provide information about funding sources, grant numbers, and supporting organizations. If no external funding was received, state "This research received no external funding."
474
+
475
+ ## Competing Interests
476
+
477
+ The authors declare no competing interests.
442
478
  """
443
479
 
444
480
  # Preprint template methods
@@ -485,13 +521,17 @@ Links to data repositories, code, and protocols for reproducibility.
485
521
 
486
522
  Detailed author contribution statements.
487
523
 
488
- ## Competing Interests
524
+ ## Acknowledgements
489
525
 
490
- Declaration of competing interests.
526
+ Acknowledge individuals, groups, or organizations that contributed to the work but do not meet authorship criteria. This may include technical assistance, discussions, or provision of materials.
491
527
 
492
- ## References
528
+ ## Funding
493
529
 
494
- [@ref]
530
+ Provide information about funding sources, grant numbers, and supporting organizations. If no external funding was received, state "This research received no external funding."
531
+
532
+ ## Competing Interests
533
+
534
+ Declaration of competing interests.
495
535
  """
496
536
 
497
537
 
@@ -48,6 +48,8 @@
48
48
 
49
49
  <PY-RPL:ACKNOWLEDGEMENTS-BLOCK>
50
50
 
51
+ <PY-RPL:FUNDING-BLOCK>
52
+
51
53
  <PY-RPL:COMPETING-INTERESTS-BLOCK>
52
54
 
53
55
  \begin{exauthor}
@@ -27,6 +27,12 @@ def sample_changelog():
27
27
  # Include current version to match __version__
28
28
  return """# Changelog
29
29
 
30
+ ## [v1.18.2] - 2026-01-06
31
+
32
+ ### Fixed
33
+ - Table caption parser enhancement with flexible whitespace handling
34
+ - Cross-reference support in table captions
35
+
30
36
  ## [v1.18.0] - 2025-12-23
31
37
 
32
38
  ### Added
@@ -144,7 +150,7 @@ class TestChangelogCommand:
144
150
  """Test --breaking-only flag."""
145
151
  mock_fetch.return_value = sample_changelog
146
152
 
147
- result = runner.invoke(changelog, ["--recent", "7", "--breaking-only"])
153
+ result = runner.invoke(changelog, ["--recent", "8", "--breaking-only"])
148
154
 
149
155
  assert result.exit_code == 0
150
156
  # Should show v1.12.0 which has breaking changes
@@ -199,7 +205,7 @@ class TestChangelogCommand:
199
205
  mock_fetch.return_value = sample_changelog
200
206
 
201
207
  # Use the latest version to ensure no versions after it
202
- result = runner.invoke(changelog, ["--since", "v1.18.0"])
208
+ result = runner.invoke(changelog, ["--since", "v1.18.2"])
203
209
 
204
210
  assert result.exit_code == 0
205
211
  output = strip_ansi(result.output)
File without changes
File without changes
File without changes
File without changes