mirror of
https://github.com/EDeev/converterbot.git
synced 2026-10-07 20:49:33 +03:00
pip install md2gost → md2gost report.md [-o out.docx] с параметрами шрифта, размера, интервала и нумерации; также python -m md2gost.
47 lines
2.3 KiB
Python
47 lines
2.3 KiB
Python
import argparse
|
||
import sys
|
||
from pathlib import Path
|
||
|
||
from . import __version__
|
||
from .converter import DocumentSettings, MarkdownToDocxConverter
|
||
|
||
|
||
def build_parser():
|
||
parser = argparse.ArgumentParser(
|
||
prog="md2gost",
|
||
description="Конвертирует Markdown в DOCX, оформленный по ГОСТ 7.32-2017: поля, шрифт, интервалы, "
|
||
"нумерация страниц и заголовков, таблицы, списки, сноски, список литературы.",
|
||
)
|
||
parser.add_argument("input", type=Path, help="файл .md")
|
||
parser.add_argument("-o", "--output", type=Path, help="куда сохранить .docx (по умолчанию — рядом с .md)")
|
||
parser.add_argument("--font", default="Times New Roman", help="шрифт (по умолчанию Times New Roman)")
|
||
parser.add_argument("--size", type=int, default=14, help="размер основного текста, пт (по умолчанию 14)")
|
||
parser.add_argument("--spacing", type=float, default=1.5, help="межстрочный интервал (по умолчанию 1.5)")
|
||
parser.add_argument("--no-heading-numbers", action="store_true", help="не нумеровать заголовки")
|
||
parser.add_argument("--no-page-numbers", action="store_true", help="не нумеровать страницы")
|
||
parser.add_argument("--number-title-page", action="store_true", help="ставить номер и на первой странице")
|
||
parser.add_argument("--version", action="version", version=f"%(prog)s {__version__}")
|
||
return parser
|
||
|
||
|
||
def main(argv=None):
|
||
args = build_parser().parse_args(argv)
|
||
if not args.input.is_file():
|
||
print(f"md2gost: файл не найден: {args.input}", file=sys.stderr)
|
||
return 1
|
||
|
||
settings = DocumentSettings()
|
||
settings.font_name = args.font
|
||
settings.font_size = args.size
|
||
settings.line_spacing = args.spacing
|
||
settings.auto_numbering_headings = not args.no_heading_numbers
|
||
settings.page_numbering = not args.no_page_numbers
|
||
settings.exclude_title_page_numbering = not args.number_title_page
|
||
|
||
output = MarkdownToDocxConverter(settings).convert(str(args.input), str(args.output) if args.output else None)
|
||
print(output)
|
||
return 0
|
||
|
||
|
||
if __name__ == "__main__":
|
||
sys.exit(main())
|