Hi,
Le 22/10/23 à 15h51, Denis Bitouzé a écrit :
> (Question already asked but still not answered on SO:
>
https://stackoverflow.com/q/77329701/1682470)
>
> I created Pygments customized lexer and style:
>
> - `acetexlexer.py` (lexer file),
> - `acedracula.py` (style file),
>
> that work pretty well since the following command returns the expected
> result:
>
> ┌────
> │ pygmentize -O style=acedracula -x -l acetexlexer.py:AceTexLexer test.tex
> └────
>
> But I can't get them to work with Sphinx, despite extensive research on
> the Internet.
Okay, I succeeded, thanks to:
┌────
│
https://stackoverflow.com/a/62084359/1682470
└────
For the record, here is how I could make it work.
1. In fact, no need to create a `_pygments/` directory containing:
- `acetexlexer.py` (lexer file),
- `acedracula.py` (style file).
2. (As I did from the beginning, )
- the `acetexlexer.py` file is in the directory (in my case)
`~/.local/lib/python3.10/site-packages/pygments/lexers`,
- the `acedracula.py` file is in the directory (in my case)
`~/.local/lib/python3.10/site-packages/pygments/styles` with:
┌────
│ 'acedracula': 'acedracula::AceDraculaStyle',
└────
in the `STYLE_MAP` dictionary in the `__init__.py` file in this directory.
3. In the `source/_ext` directory, I created a file named (for the
moment) `test.py` containing:
┌────
│ from pygments.lexers.acetexlexer import AceTexLexer
│
│ def setup(app):
│ app.add_lexer('xlatex', AceTexLexer)
│ return {
│ 'parallel_read_safe': True,
│ 'parallel_write_safe': True,
│ }
└────
(the 4 last line in order to be able to distribute the build over
N processes in parallel: `-j` option of `sphinx-build`).
4. In `conf.py`, I removed the `def setup(app):` function and
everything related to lexers but added to the `extensions` list, the
'test' extension (see `test.py` above).
So far, so good.
Now, I've no idea what could be a proper name instead of `test.py` for
my `test` “extension”. I guess reusing the same name `acetexlexer.py` as
used for my own lexer would be a bad idea. Any suggestion is welcome.
Thanks!
--
Denis