File: patch.py

package info (click to toggle)
openmolcas 25.02-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 170,204 kB
  • sloc: f90: 498,088; fortran: 139,779; python: 13,587; ansic: 5,745; sh: 745; javascript: 660; pascal: 460; perl: 325; makefile: 17
file content (37 lines) | stat: -rw-r--r-- 1,913 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# -*- coding: utf-8 -*-
#***********************************************************************
# This file is part of OpenMolcas.                                     *
#                                                                      *
# OpenMolcas is free software; you can redistribute it and/or modify   *
# it under the terms of the GNU Lesser General Public License, v. 2.1. *
# OpenMolcas is distributed in the hope that it will be useful, but it *
# is provided "as is" and without any express or implied warranties.   *
# For more details see the full text of the license in the file        *
# LICENSE or in <http://www.gnu.org/licenses/>.                        *
#                                                                      *
# Copyright (C) 2022, Ignacio Fdez. Galván                             *
#***********************************************************************

import sphinx

# Patch to work around Sphinx bug #9529
if (3, 5, 0, '', 0) <= sphinx.version_info < (4, 5, 0, '', 0):
  from sphinx.writers.latex import CR
  from docutils import nodes
  from docutils.nodes import Element
  from typing import cast
  visit_start_of_file_orig = sphinx.writers.latex.LaTeXTranslator.visit_start_of_file
  visit_footnote_orig = sphinx.writers.latex.LaTeXTranslator.visit_footnote
  def visit_start_of_file_patched(self, node: Element) -> None:
    visit_start_of_file_orig(self, node)
    self.body.append(CR + r'\sphinxstepscope' + CR)
  def visit_footnote_patched(self, node: Element) -> None:
    visit_footnote_orig(self, node)
    if 'auto' in node:
      label = cast(nodes.label, node[0])
      self.body.append(r'\phantomsection\label{\thesphinxscope.%s}%%' % label.astext() + CR)
  sphinx.writers.latex.LaTeXTranslator.visit_start_of_file = visit_start_of_file_patched
  sphinx.writers.latex.LaTeXTranslator.visit_footnote = visit_footnote_patched

def setup(app):
  pass