txt2ebook 0.1.104__tar.gz → 0.1.107__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 (41) hide show
  1. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/PKG-INFO +6 -2
  2. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/README.md +5 -1
  3. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/pyproject.toml +1 -1
  4. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/__init__.py +1 -1
  5. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/formats/tex.py +14 -8
  6. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/txt2ebook.py +11 -1
  7. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/LICENSE.md +0 -0
  8. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/__main__.py +0 -0
  9. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/exceptions.py +0 -0
  10. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/formats/__init__.py +0 -0
  11. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/formats/base.py +0 -0
  12. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/formats/epub.py +0 -0
  13. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/formats/gmi.py +0 -0
  14. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/formats/md.py +0 -0
  15. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/formats/pdf.py +0 -0
  16. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/formats/templates/__init__.py +0 -0
  17. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/formats/templates/epub/__init__.py +0 -0
  18. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/formats/templates/epub/clean.css +0 -0
  19. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/formats/templates/epub/condense.css +0 -0
  20. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/formats/templates/epub/noindent.css +0 -0
  21. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/formats/txt.py +0 -0
  22. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/formats/typ.py +0 -0
  23. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/helpers/__init__.py +0 -0
  24. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/languages/__init__.py +0 -0
  25. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/languages/en.py +0 -0
  26. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/languages/zh_cn.py +0 -0
  27. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/languages/zh_tw.py +0 -0
  28. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/locales/en/LC_MESSAGES/txt2ebook.mo +0 -0
  29. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/locales/en/LC_MESSAGES/txt2ebook.po +0 -0
  30. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/locales/txt2ebook.pot +0 -0
  31. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/locales/zh-cn/LC_MESSAGES/txt2ebook.mo +0 -0
  32. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/locales/zh-cn/LC_MESSAGES/txt2ebook.po +0 -0
  33. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/locales/zh-tw/LC_MESSAGES/txt2ebook.mo +0 -0
  34. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/locales/zh-tw/LC_MESSAGES/txt2ebook.po +0 -0
  35. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/models/__init__.py +0 -0
  36. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/models/book.py +0 -0
  37. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/models/chapter.py +0 -0
  38. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/models/volume.py +0 -0
  39. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/parser.py +0 -0
  40. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/tokenizer.py +0 -0
  41. {txt2ebook-0.1.104 → txt2ebook-0.1.107}/src/txt2ebook/zh_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: txt2ebook
3
- Version: 0.1.104
3
+ Version: 0.1.107
4
4
  Summary: CLI tool to convert txt file to ebook format
5
5
  Home-page: https://github.com/kianmeng/txt2ebook
6
6
  License: AGPL-3.0-or-later
@@ -80,7 +80,7 @@ usage: txt2ebook [-of OUTPUT_FOLDER] [-p] [-f {epub,gmi,md,pdf,tex,txt,typ}]
80
80
  [-tr TRANSLATOR] [-c IMAGE_FILENAME] [-w WIDTH]
81
81
  [-ff FILENAME_FORMAT] [-ps SEPARATOR] [-pz PAGE_SIZE]
82
82
  [-rd REGEX] [-rvc REGEX] [-rv REGEX] [-rc REGEX] [-rt REGEX]
83
- [-ra REGEX] [-rl REGEX] [-rr REGEX REGEX]
83
+ [-ra REGEX] [-rl REGEX] [-rr REGEX REGEX] [-ct]
84
84
  [-et {clean,condense,noindent}] [-vp] [-tp] [-sp] [-ss]
85
85
  [-toc] [-hn] [-fw] [-rw] [-ow] [-op] [-q] [-v] [-y] [-d]
86
86
  [--env] [-h] [-V]
@@ -182,6 +182,10 @@ options:
182
182
  -toc, --table-of-content
183
183
  add table of content
184
184
 
185
+ --format tex:
186
+ -ct, --clean-tex
187
+ purge artifacts generated by TeX (default: 'False')
188
+
185
189
  --language zh-cn / --language zh-tw:
186
190
  -hn, --header-number
187
191
  convert section header from words to numbers
@@ -38,7 +38,7 @@ usage: txt2ebook [-of OUTPUT_FOLDER] [-p] [-f {epub,gmi,md,pdf,tex,txt,typ}]
38
38
  [-tr TRANSLATOR] [-c IMAGE_FILENAME] [-w WIDTH]
39
39
  [-ff FILENAME_FORMAT] [-ps SEPARATOR] [-pz PAGE_SIZE]
40
40
  [-rd REGEX] [-rvc REGEX] [-rv REGEX] [-rc REGEX] [-rt REGEX]
41
- [-ra REGEX] [-rl REGEX] [-rr REGEX REGEX]
41
+ [-ra REGEX] [-rl REGEX] [-rr REGEX REGEX] [-ct]
42
42
  [-et {clean,condense,noindent}] [-vp] [-tp] [-sp] [-ss]
43
43
  [-toc] [-hn] [-fw] [-rw] [-ow] [-op] [-q] [-v] [-y] [-d]
44
44
  [--env] [-h] [-V]
@@ -140,6 +140,10 @@ options:
140
140
  -toc, --table-of-content
141
141
  add table of content
142
142
 
143
+ --format tex:
144
+ -ct, --clean-tex
145
+ purge artifacts generated by TeX (default: 'False')
146
+
143
147
  --language zh-cn / --language zh-tw:
144
148
  -hn, --header-number
145
149
  convert section header from words to numbers
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "txt2ebook"
3
- version = "0.1.104"
3
+ version = "0.1.107"
4
4
  description = "CLI tool to convert txt file to ebook format"
5
5
  authors = ["Kian-Meng Ang <kianmeng@cpan.org>"]
6
6
  license = "AGPL-3.0-or-later"
@@ -22,7 +22,7 @@ import sys
22
22
 
23
23
  logger = logging.getLogger(__name__)
24
24
 
25
- __version__ = "0.1.104"
25
+ __version__ = "0.1.107"
26
26
 
27
27
 
28
28
  def setup_logger(config: argparse.Namespace) -> None:
@@ -42,8 +42,13 @@ logger = logging.getLogger(__name__)
42
42
  class TexWriter(BaseWriter):
43
43
  """Module for writing ebook in LaTeX (tex) format."""
44
44
 
45
+ def __post_init__(self):
46
+ """Post init code."""
47
+ self.index_keywords = self.config.index_keyword + self.book.index
48
+ logger.debug("Index keywords: %s", self.index_keywords)
49
+
45
50
  def write(self) -> None:
46
- """Generate Tex files."""
51
+ """Generate TeX / PDF files."""
47
52
  new_filename = self._output_filename(".tex")
48
53
  new_filename.parent.mkdir(parents=True, exist_ok=True)
49
54
 
@@ -53,6 +58,7 @@ class TexWriter(BaseWriter):
53
58
 
54
59
  doc.packages.append(Pkg("geometry", options=["a6paper"]))
55
60
  doc.packages.append(Pkg("makeidx"))
61
+ doc.packages.append(Pkg("xcolor"))
56
62
  doc.packages.append(
57
63
  Pkg(
58
64
  "idxlayout",
@@ -122,21 +128,21 @@ class TexWriter(BaseWriter):
122
128
 
123
129
  filename = str(new_filename.parent / new_filename.stem)
124
130
  pdf_filename = Path(filename).with_suffix(".pdf")
125
- doc.generate_pdf(filename, compiler="latexmk", clean_tex=False)
131
+ doc.generate_pdf(
132
+ filename, compiler="latexmk", clean_tex=self.config.clean_tex
133
+ )
134
+ logger.info("Generate PDF file: %s", pdf_filename.resolve())
126
135
 
127
136
  if self.config.open:
128
137
  self._open_file(pdf_filename)
129
138
 
130
139
  def _process_paragraph(self, paragraph) -> str:
131
140
  par = paragraph.strip()
132
- for keyword in self.config.index_keyword:
133
- par = par.replace(
134
- keyword, rf"\index{{{keyword}}}\underline{{{keyword}}}"
135
- )
136
141
 
137
- for keyword in self.book.index:
142
+ for keyword in self.index_keywords:
138
143
  par = par.replace(
139
- keyword, rf"\index{{{keyword}}}\underline{{{keyword}}}"
144
+ keyword,
145
+ rf"\color{{red}}\index{{{keyword}}}{keyword}\color{{black}}",
140
146
  )
141
147
 
142
148
  return par
@@ -109,6 +109,7 @@ def build_parser(
109
109
  epub = parser.add_argument_group("--format epub")
110
110
  pdf = parser.add_argument_group("--format pdf")
111
111
  txt = parser.add_argument_group("--format txt")
112
+ tex = parser.add_argument_group("--format tex")
112
113
  zhlang = parser.add_argument_group("--language zh-cn / --language zh-tw")
113
114
 
114
115
  if "--env" not in args:
@@ -343,6 +344,15 @@ def build_parser(
343
344
  metavar="REGEX",
344
345
  )
345
346
 
347
+ tex.add_argument(
348
+ "-ct",
349
+ "--clean-tex",
350
+ default=False,
351
+ action="store_true",
352
+ dest="clean_tex",
353
+ help="purge artifacts generated by TeX (default: '%(default)s')",
354
+ )
355
+
346
356
  epub.add_argument(
347
357
  "-et",
348
358
  "--epub-template",
@@ -526,6 +536,6 @@ def main(args: Optional[Sequence[str]] = None):
526
536
  except Exception as error:
527
537
  logger.error(
528
538
  getattr(error, "message", str(error)),
529
- exc_info=getattr(config, "debug", True),
539
+ exc_info=("-d" in args or "--debug" in args),
530
540
  )
531
541
  raise SystemExit(1) from None
File without changes