sphinx icon indicating copy to clipboard operation
sphinx copied to clipboard

Make complex setting values like latex_documents overridable

Open terrorfisch opened this issue 2 months ago • 2 comments

Is your feature request related to a problem? Please describe. I want to override latex specific settings when invoking sphinx-build to embed the generated latex in an external document. I do not want to edit the original conf.py. First I tried a dedidcated conf.py but ran into problems with relative paths so I decided to try the command line settings override.

The --define documentation nicely explains how to override dict and list type values. However, latex_documents is a list of tuples which are not handled correctly.

Describe the solution you'd like I do not have a favourite solution.

My original problem of patching "conf.py" without file modification can also be solved by additional "appendable" python code.

Describe alternatives you've considered

  • Make list entries addressable by <name>.<index> notation
  • Intoduce dedicated syntax for latex_document entry that does not use ,
  • Add a dedicated --json-settings argument which accepts a JSON object. This can be tricky to use because shells treat quotes differently.

Additional context Parsing of list type values (btw: There is no way to escape the ","): https://github.com/sphinx-doc/sphinx/blob/6471027d1936f0a0a38ef281862f0b29c53618f6/sphinx/config.py#L342

Interpretation of list elements as sequence in the latex builder: https://github.com/sphinx-doc/sphinx/blob/6471027d1936f0a0a38ef281862f0b29c53618f6/sphinx/builders/latex/init.py#L150

terrorfisch avatar Jun 18 '24 14:06 terrorfisch