From af3801eb5e40bb3717bf207470252172a0af2559 Mon Sep 17 00:00:00 2001 From: Alexei Sheplyakov Date: Fri, 27 Jul 2012 21:55:35 +0300 Subject: [PATCH] Work around Tex Live 2012 versus doxygen problem. TeX Live 2012 seems to dislike files produces by doxygen (1.8.x.y). In particular, makeindex(1) program creates invalid index entries like \hyperpage{NNN_} (note the trailing underscore in the page number). This breaks automatic builds and is very annoying. This patch works around the problem by post-processing the generated *.ind file. This hack is a bit crude, however it gets the job done (a proper fix is welcome, though). --- doc/CMakeLists.txt | 2 ++ doc/reference/Makefile.am | 1 + scripts/fixupind.py | 30 ++++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100755 scripts/fixupind.py diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index fdfc193f..e1416d31 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -35,6 +35,7 @@ macro(pdflatex_process texfile) set(_idx ${_dirname}/${_basename}.idx) set(_ind ${_dirname}/${_basename}.ind) set(_pdf ${_dirname}/${_basename}.pdf) + set(_fixupind ${CMAKE_SOURCE_DIR}/scripts/fixupind.py) add_custom_command( OUTPUT ${_idx} COMMAND ${PDFLATEX_COMPILER} ${texfile} @@ -44,6 +45,7 @@ macro(pdflatex_process texfile) add_custom_command( OUTPUT ${_ind} COMMAND ${MAKEINDEX_COMPILER} ${_idx} + COMMAND python ${_fixupind} ${_idx} WORKING_DIRECTORY ${_dirname} DEPENDS ${texfile} ${_idx} COMMENT "MAKEINDEX ${_basename}.idx") diff --git a/doc/reference/Makefile.am b/doc/reference/Makefile.am index 67cb8ceb..0fddd452 100644 --- a/doc/reference/Makefile.am +++ b/doc/reference/Makefile.am @@ -53,6 +53,7 @@ pdflatex/reference.pdf: pdflatex/reference.tex cd pdflatex; \ ${PDFLATEX} reference.tex ;\ ${MAKEINDEX} reference.idx ;\ + ${PYTHON} $(top_srcdir)/scripts/fixupind.py reference.ind; \ ${PDFLATEX} reference.tex reference.dvi: latex latex/reference.dvi diff --git a/scripts/fixupind.py b/scripts/fixupind.py new file mode 100755 index 00000000..7ebb1e1a --- /dev/null +++ b/scripts/fixupind.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python +# encoding: utf-8 +# TeX Live 2012 seems to dislike files produces by doxygen (1.8.x.y) +# In particular, makeindex(1) program creates invalid index entries like +# \hyperpage{NNN_} +# (note the trailing underscore in the page number). This breaks automatic +# builds and is very annoying. Hence this script. It replaces (broken) +# \hyperpage{NNN_} with \hyperpage{NNN}. +# Note: this is an ugly work around, a proper fix is welcome. +import sys, os, re + +def fixupind(fname): + """ Fix \\hyperpage{NNN_} entries in the ind file @var{fname} """ + tmpout = fname + '.tmp' + inp = open(fname) + out = open(tmpout, 'wt') + rx = re.compile('(hyperpage)[{]([0-9]+)[_][}]') + for line in inp: + out.write(re.sub(rx, '\\1{\\2}', line)) + out.flush() + out.close() + inp.close() + os.rename(tmpout, fname) + +if __name__ == '__main__': + if len(sys.argv) <= 1: + sys.exit(1) + fixupind(sys.argv[1]) + sys.exit(0) + -- 2.44.0