` the same way `
` is treated.
-- Mobi: add `mobi7-forcing` switch to `kindlegen` command, #374 by @holyspiritomb
+- Mobi: add `mobi7-forcing` switch to `kindlegen` command, #374 by @holyspiritomb
-- Octopus MDict: ignore directories with `same_dir_data_files`, #362
+- Octopus MDict: ignore directories with `same_dir_data_files`, #362
-- StarDict reader: handle definitions with mixed types/formats
+- StarDict reader: handle definitions with mixed types/formats
-- Dictfile: strip whitespaces from word and defi before going through entry filters
+- Dictfile: strip whitespaces from word and defi before going through entry filters
-- BGL: strip whitespaces from word and defi before going through entry filters
+- BGL: strip whitespaces from word and defi before going through entry filters
-- Improvement in `glos.write`: avoid printing exception for invalid encoding
+- Improvement in `glos.write`: avoid printing exception for invalid encoding
-- Remove empty logs in `glos.convert`
+- Remove empty logs in `glos.convert`
-- StarDict reader: fix validating `sametypesequence`, and add test
+- StarDict reader: fix validating `sametypesequence`, and add test
-- `glos.convert`: Allow an existing empty directory as output path
+- `glos.convert`: Allow an existing empty directory as output path
-- `TextGlossaryReader`: replace `nextPair` method with `nextBlock` which returns resource files as third item
+- `TextGlossaryReader`: replace `nextPair` method with `nextBlock` which returns resource files as third item
-- ui_cmd_interactive: allow converting several times before exiting
+- ui_cmd_interactive: allow converting several times before exiting
-- Change title tag for Greek from `` to ``
+- Change title tag for Greek from `` to ``
-- Update language data set (`langs.json`)
+- Update language data set (`langs.json`\)
-- `ui/main.py`: print 1-line error instead of full exception on `ImportError`
+- `ui/main.py`: print 1-line error instead of full exception on `ImportError`
-- `ui/main.py`: Windows: try Tkinter before Gtk
+- `ui/main.py`: Windows: try Tkinter before Gtk
-- `ebook_base.py`: avoid `shutil.move` on Windows, #368
+- `ebook_base.py`: avoid `shutil.move` on Windows, #368
-- `TextGlossaryReader`: fix loading info and some refactoring, #370 36b9cd83d4c79b32e34bf64c3101cb89093b2a4e
+- `TextGlossaryReader`: fix loading info and some refactoring, #370 36b9cd83d4c79b32e34bf64c3101cb89093b2a4e
-- `Entry`: Allow `word` to be `tuple` in `Entry(word=...)`
+- `Entry`: Allow `word` to be `tuple` in `Entry(word=...)`
-- `glos.iterInfo()` return `Iterator` rather than `Iterable`
+- `glos.iterInfo()` return `Iterator` rather than `Iterable`
-- Zim: change dependency to `libzim>=1.0`, and some comments
+- Zim: change dependency to `libzim>=1.0`, and some comments
-- Mobi: work with kindlegen executable in `PATH` directories, #401
+- Mobi: work with kindlegen executable in `PATH` directories, #401
-- ui: limit the length of option comments in Format Options dialog
+- ui: limit the length of option comments in Format Options dialog
-- ui_gtk: improvement: show (last) critical error on status bar
+- ui_gtk: improvement: show (last) critical error on status bar
-- ui_gtk: set intial focus
+- ui_gtk: set intial focus
-- ui_gtk: improvements in About tab
+- ui_gtk: improvements in About tab
-- ui_tk: revert most `ttk` widgets to `tk` because the theme doesn't match
+- ui_tk: revert most `ttk` widgets to `tk` because the theme doesn't match
-- Add SVG icon, #414 by @proletarius101
+- Add SVG icon, #414 by @proletarius101
-- Prevent exception/traceback on Ctrl+C
+- Prevent exception/traceback on Ctrl+C
-- Optimize progress bar
+- Optimize progress bar
-- Aard2 slob: show info log before and after `slobWriter.finalize()`, #437
+- Aard2 slob: show info log before and after `slobWriter.finalize()`, #437
-## Removed features
+Removed features
+----------------
-- Remove read support for Wiktiomary Dump, #48
+- Remove read support for Wiktiomary Dump, #48
-- Remove support for Sdictionary Binary and Source
+- Remove support for Sdictionary Binary and Source
-## Octopus MDict MDX: features and improvements
+Octopus MDict MDX: features and improvements
+--------------------------------------------
-- Support MDict V3 fomrat by updating `readmdict`, #385 by @xiaoqiangwang
+- Support MDict V3 fomrat by updating `readmdict`, #385 by @xiaoqiangwang
-- Fix files created without UUID in header, #387 by @xiaoqiangwang
+- Fix files created without UUID in header, #387 by @xiaoqiangwang
- - MdxBuilder 4.0 RC2 and before creates files without UUID header
+ - MdxBuilder 4.0 RC2 and before creates files without UUID header
-- Decode mdict title & description if they're bytes, #393 by @tomtung
+- Decode mdict title & description if they're bytes, #393 by @tomtung
-- `readmdict`: Skip zlib decompress exceptions, #384
+- `readmdict`: Skip zlib decompress exceptions, #384
-- `readmdict`: Use `__name__` as logger name, and add 2 debug logs, #384
+- `readmdict`: Use `__name__` as logger name, and add 2 debug logs, #384
-- `readmdict`: improve exception msg for xxhash, #385
+- `readmdict`: improve exception msg for xxhash, #385
-## XDXF: fixes / imrovements, issue #376
+XDXF: fixes / imrovements, issue #376
+-------------------------------------
-- Support ``
-- Support embedded tags in ``
-- Fix ignoring ``
-- Fix extra newlines
-- Get rid of warning for ``
-- Fix/improve newline and space issues
-- Fix and improve tests
-- Update url for format description
-- Support any tag/string in ``, #396
-- Support reading compressed files directly (`.xdxf.gz`, `.xdxf.bz2`, `.xdxf.lzma`)
-- Allow using XSL using `--write-options=xsl=True`
-- Update XSL
-- Other improvements in XDXF to HTML transformation
+- Support ``
+- Support embedded tags in ``
+- Fix ignoring ``
+- Fix extra newlines
+- Get rid of warning for ``
+- Fix/improve newline and space issues
+- Fix and improve tests
+- Update url for format description
+- Support any tag/string in ``, #396
+- Support reading compressed files directly (`.xdxf.gz`, `.xdxf.bz2`, `.xdxf.lzma`\)
+- Allow using XSL using `--write-options=xsl=True`
+- Update XSL
+- Other improvements in XDXF to HTML transformation
-## AppleDict Binary: features, bug fixes, improvements, refactoring
+AppleDict Binary: features, bug fixes, improvements, refactoring
+----------------------------------------------------------------
-- Fix css name on `html_full=True`
+- Fix css name on `html_full=True`
-- Fix using `self._encoding` when should use `utf-8`
+- Fix using `self._encoding` when should use `utf-8`
-- Fix internal links, #343
+- Fix internal links, #343
- - Remove `x-dictionary:d:` prefix from `href`
- - First fix for `x-dictionary:r:`: use title if present
- - Add `bword://` prefix to `href` (unless it points to http/https)
- - Read entry IDs on open and fix links with `x-dictionary:r:`
+ - Remove `x-dictionary:d:` prefix from `href`
+ - First fix for `x-dictionary:r:`: use title if present
+ - Add `bword://` prefix to `href` (unless it points to http/https)
+ - Read entry IDs on open and fix links with `x-dictionary:r:`
-- Add plistlib to dependencies
+- Add plistlib to dependencies
-- Add tests
+- Add tests
-- Replace `` with ``
+- Replace `
` with ``
-- Fix bad exception formatting
+- Fix bad exception formatting
-- Fixes from PR #436
+- Fixes from PR #436
-- Support morphology (alternates): #434 by @soshial
+- Support morphology (alternates): #434 by @soshial
-- Support different AppleDict offsets, #417 by @soshial
+- Support different AppleDict offsets, #417 by @soshial
-- Extract AppleDict meta-info (langs, title, author), #418 by @soshial
+- Extract AppleDict meta-info (langs, title, author), #418 by @soshial
-- Progress Bar on `open()` / loading `KeyText.data`
+- Progress Bar on `open()` / loading `KeyText.data`
-- Improve memory usage of loading `KeyText.data`
+- Improve memory usage of loading `KeyText.data`
-- Replace `appledict_bin.py` with `appledict_bin` directory and more refactoring
+- Replace `appledict_bin.py` with `appledict_bin` directory and more refactoring
-## Glossary class (`glossary.py`)
+Glossary class (`glossary.py`\)
+-------------------------------
-- Lots of refactoring in `glossary.py`
+- Lots of refactoring in `glossary.py`
- - Improve the design and readability
- - Reduce complexity of methods
- - Move some code into new classes that `Glossary` inherits from
- - Improve error messages
+ - Improve the design and readability
+ - Reduce complexity of methods
+ - Move some code into new classes that `Glossary` inherits from
+ - Improve error messages
-- Introduce `glossary_v2.py`, and maintain API backward-compatibility for `glossary.py` (as far as documented)
+- Introduce `glossary_v2.py`, and maintain API backward-compatibility for `glossary.py` (as far as documented)
- - See [README.md](../../README.md#using-pyglossary-as-a-python-library) for sample code.
+ - See [README.md](../../README.md#using-pyglossary-as-a-python-library) for sample code.
-## Refactoring
+Refactoring
+-----------
-- Fix style errors using `ruff` based on [pyproject.toml](../../pyproject.toml) configuration
+- Fix style errors using `ruff` based on [pyproject.toml](../../pyproject.toml) configuration
-- Remove all usages of pyglossary.plugins.formats_common
+- Remove all usages of pyglossary.plugins.formats_common
-- Use `str.startswith(tuple)` and `str.endswith(tuple)`
+- Use `str.startswith(tuple)` and `str.endswith(tuple)`
-- Reduce complexity of `Glossary` methods
+- Reduce complexity of `Glossary` methods
-- Rename entry filter `strip` to `trim_whitespaces`
+- Rename entry filter `strip` to `trim_whitespaces`
-- Some refactoring in StarDict reader
+- Some refactoring in StarDict reader
-- Use [f-string equal syntax](https://github.com/python/cpython/issues/80998) added in Python 3.8
+- Use [f-string equal syntax](https://github.com/python/cpython/issues/80998) added in Python 3.8
-- Use `str.removeprefix` and `str.removesuffix` added in Python 3.9
+- Use `str.removeprefix` and `str.removesuffix` added in Python 3.9
-- `langs/writing_system.py`:
+- `langs/writing_system.py`:
- - Change `iso` field to list
- - Add new scripts
- - Add `getAllWritingSystemsFromText`
- - More refactoring
+ - Change `iso` field to list
+ - Add new scripts
+ - Add `getAllWritingSystemsFromText`
+ - More refactoring
-- Split up `TextGlossaryReader.loadInfo` method
+- Split up `TextGlossaryReader.loadInfo` method
-- `plugin_manager.py`: make some methods private
+- `plugin_manager.py`: make some methods private
-## Documentation
+Documentation
+-------------
-- Update plugins' documentation
+- Update plugins' documentation
-- Glossary: add comments about `entryFilters`
+- Glossary: add comments about `entryFilters`
-- Update `config.rst`
+- Update `config.rst`
-- Update `doc/entry-filters.md`
+- Update `doc/entry-filters.md`
-- Update `README.md`
+- Update `README.md`
-- Update `doc/sort-key.md`
+- Update `doc/sort-key.md`
-- Update `doc/pyicu.md`
+- Update `doc/pyicu.md`
-- Update `plugins/testformat.py`
+- Update `plugins/testformat.py`
-- Add types for arguments and result of all functions/methods
+- Add types for arguments and result of all functions/methods
-- Add types for r/w options in reader/writer classes
+- Add types for r/w options in reader/writer classes
-- Fix a few incorrect type annotations
+- Fix a few incorrect type annotations
-- `README.md`: Add document for adding data entries, #412
+- `README.md`: Add document for adding data entries, #412
-- `README.md`: Fix -> nixos command, #400 by @srghma
+- `README.md`: Fix -> nixos command, #400 by @srghma
-- Update [bgl_info.md](../babylon/bgl_info.md) and move it from `pyglossary/plugins/babylon_bgl/` to `doc/babylon/`
+- Update [bgl_info.md](../babylon/bgl_info.md) and move it from `pyglossary/plugins/babylon_bgl/` to `doc/babylon/`
-## Testing
+Testing
+-------
-- Add test for DSL -> Tabfile conversion
+- Add test for DSL -> Tabfile conversion
-- `dsl_test.py`: fix method names not starting with `test_`
+- `dsl_test.py`: fix method names not starting with `test_`
-- StarDict reader: better testing for handling definitions with mixed types
+- StarDict reader: better testing for handling definitions with mixed types
-- StarDict writer: much better testing, coverage of `stardict.py`: from %62 to %83
+- StarDict writer: much better testing, coverage of `stardict.py`: from %62 to %83
-- Refactoring and improvements in tests of Glossary, along with new tests
+- Refactoring and improvements in tests of Glossary, along with new tests
-- Add test for dictunformat -> Tabfile
+- Add test for dictunformat -> Tabfile
-- AppleDict (source) tests: validate plist file contents
+- AppleDict (source) tests: validate plist file contents
-- Allow forking and branching `pyglossary-test` repo
+- Allow forking and branching `pyglossary-test` repo
- - See [tests/glossary_v2_test.py](../../tests/glossary_v2_test.py#L28)
+ - See [tests/glossary_v2_test.py](../../tests/glossary_v2_test.py#L28)
-- Fix some failing tests on Windows
+- Fix some failing tests on Windows
-- Slob: test `file_size_approx`
+- Slob: test `file_size_approx`
-- Test Tabfile -> SQL conversion
+- Test Tabfile -> SQL conversion
-- Test StarDict error/warning for sortKeyName with and without locale
+- Test StarDict error/warning for sortKeyName with and without locale
-- Print useful messages for unhandled warnings
+- Print useful messages for unhandled warnings
-- Improve logs
+- Improve logs
-- Add `showDiff=False` arg to `compareTextFiles` and `convert`
+- Add `showDiff=False` arg to `compareTextFiles` and `convert`
-## Packaging
+Packaging
+---------
-- Update and refactor `Dockerfile` and `run-with-docker.sh`
+- Update and refactor `Dockerfile` and `run-with-docker.sh`
- - `Dockerfile`: change `WORKDIR` to `/root/home` which is mapped to host's home dir
- - `run-with-docker.sh`: create `confDir` before docker build (to check the owner later)
- - `run-with-docker.sh`: accept version (image tag) as argument
- - Use host's (non-root) user in docker run
- - Map host user's `$HOME` to docker's user home
- - Re-use existing docker image with same tag
+ - `Dockerfile`: change `WORKDIR` to `/root/home` which is mapped to host's home dir
+ - `run-with-docker.sh`: create `confDir` before docker build (to check the owner later)
+ - `run-with-docker.sh`: accept version (image tag) as argument
+ - Use host's (non-root) user in docker run
+ - Map host user's `$HOME` to docker's user home
+ - Re-use existing docker image with same tag
-- Update `setup.py`
+- Update `setup.py`
diff --git a/doc/releases/4.6.1.md b/doc/releases/4.6.1.md
index 8716c5325..8155f3ce9 100644
--- a/doc/releases/4.6.1.md
+++ b/doc/releases/4.6.1.md
@@ -1,52 +1,59 @@
-# Changes since [4.6.0](./4.6.0.md)
+Changes since [4.6.0](./4.6.0.md)
+=================================
-## Bug fixes
+Bug fixes
+---------
-- Fix a bug causing broken installation if `~/.local/lib` is a symbolic link
+- Fix a bug causing broken installation if `~/.local/lib` is a symbolic link
- - or `site-packages` or any of its parents are a symbolic link
+ - or `site-packages` or any of its parents are a symbolic link
-- Fix incompatibilty with Python 3.9 (despite documentation)
+- Fix incompatibilty with Python 3.9 (despite documentation)
-- Fix `scripts/entry-filters-doc.py`, `scripts/plugin-doc.py` and `doc/entry-filters.md`
+- Fix `scripts/entry-filters-doc.py`, `scripts/plugin-doc.py` and `doc/entry-filters.md`
-- AppleDict: Fix typos in Chinese language module
+- AppleDict: Fix typos in Chinese language module
-## Features:
+Features:
+---------
-- Use environment variable `VERBOSITY` as default (a number from 0 to 5)
+- Use environment variable `VERBOSITY` as default (a number from 0 to 5)
-## Improvements
+Improvements
+------------
-- AppleDict Binary: set `html_full=True` by default
+- AppleDict Binary: set `html_full=True` by default
-- Update `wcwidth` to `0.2.6`
+- Update `wcwidth` to `0.2.6`
-## Refactoring
+Refactoring
+-----------
-- Add `glos.stripFullHtml(errorHandler)` and use it in 3 plugins
+- Add `glos.stripFullHtml(errorHandler)` and use it in 3 plugins
- - Add entry filter `StripFullHtml` and change `entry.stripFullHtml()` to return error
+ - Add entry filter `StripFullHtml` and change `entry.stripFullHtml()` to return error
-- Refactor `entryFiltersRules`
+- Refactor `entryFiltersRules`
-- Remove empty plugin gettext_mo.py
+- Remove empty plugin gettext_mo.py
-- Remove `glos.titleElement` from `glossary_v2.Glossary`
+- Remove `glos.titleElement` from `glossary_v2.Glossary`
- - Add to `glossary.Glossary` for compatibility
- - `glossary.Glossary` is a wrapper (child class) on top on `glossary_v2.Glossary`
+ - Add to `glossary.Glossary` for compatibility
+ - `glossary.Glossary` is a wrapper (child class) on top on `glossary_v2.Glossary`
-## Documentation
+Documentation
+-------------
-- Update `doc/entry-filters.md` to list some entry filters that were enabled conditionally (besides config)
+- Update `doc/entry-filters.md` to list some entry filters that were enabled conditionally (besides config)
-- Remove `sdict.md` and `sdict_source.md` (removed plugins)
+- Remove `sdict.md` and `sdict_source.md` (removed plugins)
-## Type checking
+Type checking
+-------------
-- Add missing method in `GlossaryType` class
-- Fix `mypy` errors on most of code base and some of plugins
-- Use builtin types `list, dict, tuple, set` for type annotations
-- Replace `Optional[X]` with `X or None`
- - will not effect runtime, but type checking now only works with Python 3.10+
+- Add missing method in `GlossaryType` class
+- Fix `mypy` errors on most of code base and some of plugins
+- Use builtin types `list, dict, tuple, set` for type annotations
+- Replace `Optional[X]` with `X or None`
+ - will not effect runtime, but type checking now only works with Python 3.10+
diff --git a/doc/sort-key.md b/doc/sort-key.md
index 2569af69e..062e0de66 100644
--- a/doc/sort-key.md
+++ b/doc/sort-key.md
@@ -1,26 +1,29 @@
-# Sort Key
+Sort Key
+========
-## Supported `sortKey` names / `--sort-key` argument values
+Supported `sortKey` names / `--sort-key` argument values
+--------------------------------------------------------
| Name/Value | Description | Default for formats | Supports locale |
-| ---------------------- | ------------------------- | ------------------------------------------------- | :-------------: |
-| `headword` | Headword | | Yes |
-| `headword_lower` | Lowercase Headword | All other formats (given `--sort`) | Yes |
-| `headword_bytes_lower` | ASCII-Lowercase Headword | | No |
-| `stardict` | StarDict | [StarDict](./p/stardict.md) | No |
-| `ebook` | E-Book (prefix length: 2) | [EPUB-2](./p/epub2.md), [Mobipocket](./p/mobi.md) | No |
-| `ebook_length3` | E-Book (prefix length: 3) | | No |
-| `dicformids` | DictionaryForMIDs | [DictionaryForMIDs](./p/dicformids.md) | No |
-| `random` | Random | | Yes |
+|------------------------|---------------------------|---------------------------------------------------|:---------------:|
+| `headword` | Headword | | Yes |
+| `headword_lower` | Lowercase Headword | All other formats (given `--sort`\) | Yes |
+| `headword_bytes_lower` | ASCII-Lowercase Headword | | No |
+| `stardict` | StarDict | [StarDict](./p/stardict.md) | No |
+| `ebook` | E-Book (prefix length: 2) | [EPUB-2](./p/epub2.md), [Mobipocket](./p/mobi.md) | No |
+| `ebook_length3` | E-Book (prefix length: 3) | | No |
+| `dicformids` | DictionaryForMIDs | [DictionaryForMIDs](./p/dicformids.md) | No |
+| `random` | Random | | Yes |
-## Sort Locale
+Sort Locale
+-----------
You can pass an [ICU Locale name/identifier](https://unicode-org.github.io/icu/userguide/locale/) as part of `sortKey` / `--sort-key` value, after a `:` symbol. For example:
-- `--sort-key=:fa_IR.UTF-8`: Persian (then case-insensitive Latin)
-- `--sort-key=headword:fa_IR.UTF-8`: Persian (then case-sensitive Latin)
-- `--sort-key=headword:es`: case-sensitive Spanish
-- `--sort-key=headword_lower:es`: case-insensitive Spanish
-- `--sort-key=:es`: Spanish (case-insensitive by default)
-- `--sort-key=:latn-arab`: first Latin, then Arabic
-- `--sort-key=:fa-u-kr-latn-arab`: first Latin, then Persian
+- `--sort-key=:fa_IR.UTF-8`: Persian (then case-insensitive Latin)
+- `--sort-key=headword:fa_IR.UTF-8`: Persian (then case-sensitive Latin)
+- `--sort-key=headword:es`: case-sensitive Spanish
+- `--sort-key=headword_lower:es`: case-insensitive Spanish
+- `--sort-key=:es`: Spanish (case-insensitive by default)
+- `--sort-key=:latn-arab`: first Latin, then Arabic
+- `--sort-key=:fa-u-kr-latn-arab`: first Latin, then Persian
diff --git a/doc/stardict/stardict_sametypesequence.md b/doc/stardict/stardict_sametypesequence.md
index 6817cb2fe..014a65481 100644
--- a/doc/stardict/stardict_sametypesequence.md
+++ b/doc/stardict/stardict_sametypesequence.md
@@ -1,17 +1,13 @@
-To convert to a StarDict dictionary with the `sametypesequence` option, use
-`sametypesequence=[type of definitions]` write option.
+To convert to a StarDict dictionary with the `sametypesequence` option, use `sametypesequence=[type of definitions]` write option.
-If the sametypesequence option is set, it tells StarDict that each
-word's data in the .dict file will have the same sequence of datatypes.
-Suppose a dictionary contains phonetic information
-and a meaning for each word. The sametypesequence option for this
-dictionary would be:
+If the sametypesequence option is set, it tells StarDict that each word's data in the .dict file will have the same sequence of datatypes. Suppose a dictionary contains phonetic information and a meaning for each word. The sametypesequence option for this dictionary would be:
```
sametypesequence=tm
```
-# Examples:
+Examples:
+=========
Definitions type is plain text:
@@ -25,115 +21,96 @@ Definitions type is HTML:
pyglossary mydic.txt mydic.ifo --write-options=sametypesequence=h
```
-# Type identifiers
+Type identifiers
+================
-Here are the single-character type identifiers that may be used with
-the "sametypesequence" option in the .idx file, or may appear in the
-dict file itself if the "sametypesequence" option is not used.
+Here are the single-character type identifiers that may be used with the "sametypesequence" option in the .idx file, or may appear in the dict file itself if the "sametypesequence" option is not used.
-Lower-case characters signify that a field's size is determined by a
-terminating `\0`, while upper-case characters indicate that the data
-begins with a network byte-ordered guint32 that gives the length of
-the following data's size (NOT the whole size which is 4 bytes bigger).
+Lower-case characters signify that a field's size is determined by a terminating `\0`, while upper-case characters indicate that the data begins with a network byte-ordered guint32 that gives the length of the following data's size (NOT the whole size which is 4 bytes bigger).
-## `m`
+`m`
+---
-Word's pure text meaning.
-The data should be a utf-8 string ending with `\0`.
+Word's pure text meaning. The data should be a utf-8 string ending with `\0`.
-## `l`
+`l`
+---
-Word's pure text meaning.
-The data is NOT a utf-8 string, but is instead a string in locale
-encoding, ending with `\0`. Sometimes using this type will save disk
-space, but its use is discouraged. This is only a idea.
+Word's pure text meaning.
The data is NOT a utf-8 string, but is instead a string in locale encoding, ending with `\0`. Sometimes using this type will save disk space, but its use is discouraged. This is only a idea.
-## `g`
+`g`
+---
-A utf-8 string which is marked up with the Pango text markup language.
-For more information about this markup language, See the
-[Pango Reference Manual](http://library.gnome.org/devel/pango/stable/PangoMarkupFormat.html).
-You might have it installed locally \[here\](file:///usr/share/gtk-doc/html/pango/PangoMarkupFormat.html)
+A utf-8 string which is marked up with the Pango text markup language.
For more information about this markup language, See the [Pango Reference Manual](http://library.gnome.org/devel/pango/stable/PangoMarkupFormat.html).
You might have it installed locally \[here\](file:///usr/share/gtk-doc/html/pango/PangoMarkupFormat.html)
-## `t`
+`t`
+---
-English phonetic string.
-The data should be a utf-8 string ending with `\0`.
+English phonetic string.
The data should be a utf-8 string ending with `\0`.
-Here are some utf-8 phonetic characters:
-`ΞΈΚΕΚ§Γ°ΚΓ¦Δ±ΚΚΙΙΙΙΙΙΛΛΛΛαΉαΉαΈ·`
-`Γ¦ΙΙΚΣΡΕvΞΈΓ°ΚΚΙΛΙ‘ΛΛΛ`
+Here are some utf-8 phonetic characters:
`ΞΈΚΕΚ§Γ°ΚΓ¦Δ±ΚΚΙΙΙΙΙΙΛΛΛΛαΉαΉαΈ·`
`Γ¦ΙΙΚΣΡΕvΞΈΓ°ΚΚΙΛΙ‘ΛΛΛ`
-## `x`
+`x`
+---
-A utf-8 string which is marked up with the [xdxf language](https://github.com/soshial/xdxf_makedict).
-StarDict has these extensions:
+A utf-8 string which is marked up with the [xdxf language](https://github.com/soshial/xdxf_makedict).
StarDict has these extensions:
-- `` can have "type" attribute, it can be "image", "sound", "video"
- and "attach".
-- `` can have "k" attribute.
+- `` can have "type" attribute, it can be "image", "sound", "video" and "attach".
+- `` can have "k" attribute.
-## `y`
+`y`
+---
-Chinese YinBiao or Japanese KANA.
-The data should be a utf-8 string ending with `\0`.
+Chinese YinBiao or Japanese KANA.
The data should be a utf-8 string ending with `\0`.
-## `k`
+`k`
+---
-[KingSoft](https://en.wikipedia.org/wiki/Kingsoft) [PowerWord](https://en.wikipedia.org/wiki/PowerWord)'s data.
-The data is a utf-8 string ending with `\0`. And it's in XML format.
+[KingSoft](https://en.wikipedia.org/wiki/Kingsoft) [PowerWord](https://en.wikipedia.org/wiki/PowerWord)'s data. The data is a utf-8 string ending with `\0`. And it's in XML format.
-## `w`
+`w`
+---
[MediaWiki markup language](https://www.mediawiki.org/wiki/Help:Formatting).
-## `h`
+`h`
+---
Html codes.
-## `n`
+`n`
+---
WordNet data.
-## `r`
+`r`
+---
-Resource file list.
-The content can be:
+Resource file list.
The content can be:
-- `img:pic/example.jpg` Image file
-- `snd:apple.wav` Sound file
-- `vdo:film.avi` Video file
-- `att:file.bin` Attachment file
+- `img:pic/example.jpg` Image file
+- `snd:apple.wav` Sound file
+- `vdo:film.avi` Video file
+- `att:file.bin` Attachment file
-More than one line is supported as a list of available files.
-StarDict will find the files in the Resource Storage.
-The image will be shown, the sound file will have a play button.
-You can "save as" the attachment file and so on.
-The file list must be a utf-8 string ending with `\0`.
-Use `\n` for separating new lines.
-Use `/` character as directory separator.
+More than one line is supported as a list of available files.
StarDict will find the files in the Resource Storage.
The image will be shown, the sound file will have a play button.
You can "save as" the attachment file and so on.
The file list must be a utf-8 string ending with `\0`.
Use `\n` for separating new lines.
Use `/` character as directory separator.
-## `W`
+`W`
+---
-`.wav` audio file.
-The data begins with a network byte-ordered guint32 to identify the wav
-file's size, immediately followed by the file's content.
-This is only a idea, it is better to use `r` Resource file list in most
-case.
+`.wav` audio file.
The data begins with a network byte-ordered guint32 to identify the wav file's size, immediately followed by the file's content. This is only a idea, it is better to use `r` Resource file list in most case.
-## `P`
+`P`
+---
-Picture file.
-The data begins with a network byte-ordered guint32 to identify the picture
-file's size, immediately followed by the file's content.
-This feature is implemented, as stardict-advertisement-plugin needs it.
-Anyway, it is better to use `r` Resource file list in most case.
+Picture file.
The data begins with a network byte-ordered guint32 to identify the picture file's size, immediately followed by the file's content.
This feature is implemented, as stardict-advertisement-plugin needs it. Anyway, it is better to use `r` Resource file list in most case.
-## `X`
+`X`
+---
This type identifier is reserved for experimental extensions.
-# For more information
+For more information
+====================
-Refer to StarDict documentations at:
-[https://github.com/huzheng001/stardict-3/blob/master/dict/doc/StarDictFileFormat](https://github.com/huzheng001/stardict-3/blob/master/dict/doc/StarDictFileFormat)
+Refer to StarDict documentations at: [https://github.com/huzheng001/stardict-3/blob/master/dict/doc/StarDictFileFormat](https://github.com/huzheng001/stardict-3/blob/master/dict/doc/StarDictFileFormat)
diff --git a/doc/term-colors.md b/doc/term-colors.md
index 1776f7583..cf7e62062 100644
--- a/doc/term-colors.md
+++ b/doc/term-colors.md
@@ -1,7 +1,8 @@
-## Terminal / ANSI Colors
+Terminal / ANSI Colors
+----------------------
| Sample | Code | Hex | RGB | HSL |
-| ----------------------------------------------------------- | ---- | --------- | ------------- | ----------------- |
+|-------------------------------------------------------------|------|-----------|---------------|-------------------|
| ![](https://via.placeholder.com/60x30/000000/000000?text=+) | 0 | `#000000` | 0, 0, 0 | 0, 0, 0 |
| ![](https://via.placeholder.com/60x30/aa0000/000000?text=+) | 1 | `#aa0000` | 170, 0, 0 | 0, 1, 0.333 |
| ![](https://via.placeholder.com/60x30/00aa00/000000?text=+) | 2 | `#00aa00` | 0, 170, 0 | 120, 1, 0.333 |
diff --git a/doc/termux.md b/doc/termux.md
index bf8aa3a4d..1aa57a277 100644
--- a/doc/termux.md
+++ b/doc/termux.md
@@ -1,35 +1,36 @@
-## Feature-specific Requirements on [Termux](https://github.com/termux/termux-app)
+Feature-specific Requirements on [Termux](https://github.com/termux/termux-app)
+-------------------------------------------------------------------------------
-- **Using `--remove-html-all` flag**
+- **Using `--remove-html-all` flag**
- - `apt install libxml2 libxslt`
- - `pip install lxml beautifulsoup4`
+ - `apt install libxml2 libxslt`
+ - `pip install lxml beautifulsoup4`
-- **Reading from FreeDict, XDXF, JMDict, AppleDict Binary (.dictionary) or CC-CEDICT**
+- **Reading from FreeDict, XDXF, JMDict, AppleDict Binary (.dictionary) or CC-CEDICT**
- - `apt install libxml2 libxslt`
- - `pip install lxml`
+ - `apt install libxml2 libxslt`
+ - `pip install lxml`
-- **Reading from cc-kedict**
+- **Reading from cc-kedict**
- - `apt install libxml2 libxslt`
- - `pip install lxml PyYAML`
+ - `apt install libxml2 libxslt`
+ - `pip install lxml PyYAML`
-- **Reading or writing Aard 2 (.slob)**
+- **Reading or writing Aard 2 (.slob)**
- - `pkg install libicu`
- - `pip install PyICU`
+ - `pkg install libicu`
+ - `pip install PyICU`
-- **Writing to Kobo E-Reader Dictionary**
+- **Writing to Kobo E-Reader Dictionary**
- - `pip install marisa-trie`
+ - `pip install marisa-trie`
-- **Reading from Zim**
+- **Reading from Zim**
- - `apt install libzim`
- - `pip install libzim`
+ - `apt install libzim`
+ - `pip install libzim`
-- **Writing to AppleDict**
+- **Writing to AppleDict**
- - `apt install libxml2 libxslt`
- - `pip install lxml beautifulsoup4 html5lib`
+ - `apt install libxml2 libxslt`
+ - `pip install lxml beautifulsoup4 html5lib`