[CMake] UseLATEX.cmake for nomencl package
Myles English
mylesenglish at gmail.com
Fri May 6 06:00:51 EDT 2011
Hello,
Using the nomencl package requires running makeindex a bit like this:
makeindex document.nlo -s nomencl.ist -o document.nls
So I have patched the file UseLATEX.cmake version 1.7.4 as below to
accommodate it.
It just a naive copy and paste of the text for glossaries, so I use
USE_NOMENCLATURE in the CMakeLists.txt . No doubt there is stuff in
there that is not needed and other stuff that is missing, and this may
not even be the Right Way to do it but it seems to work. (In
particular, what if you want a glossary and a nomenclature...?)
Myles
--- UseLATEX.cmake
+++ UseLATEX.cmake
@@ -269,6 +269,30 @@
ENDFOREACH(newglossary)
ENDMACRO(LATEX_MAKEGLOSSARIES)
+MACRO(LATEX_MAKENOMENCLATURES)
+ MESSAGE("**************************** In makenomenclatures")
+ IF (NOT LATEX_TARGET)
+ MESSAGE(SEND_ERROR "Need to define LATEX_TARGET")
+ ENDIF (NOT LATEX_TARGET)
+
+ IF (NOT MAKEINDEX_COMPILER)
+ MESSAGE(SEND_ERROR "Need to define MAKEINDEX_COMPILER")
+ ENDIF (NOT MAKEINDEX_COMPILER)
+
+ SET(aux_file ${LATEX_TARGET}.aux)
+
+ IF (NOT EXISTS ${aux_file})
+ MESSAGE(SEND_ERROR "${aux_file} does not exist. Run latex on
your target file.")
+ ENDIF (NOT EXISTS ${aux_file})
+
+ SET(nomencl_out ${LATEX_TARGET}.nls)
+ SET(nomencl_in ${LATEX_TARGET}.nlo)
+
+ EXEC_PROGRAM(${MAKEINDEX_COMPILER} ARGS ${MAKENOMENCLATURES_COMPILER_FLAGS}
+ ${nomencl_in} -s "nomencl.ist" -o ${nomencl_out}
+ )
+ ENDMACRO(LATEX_MAKENOMENCLATURES)
+
#############################################################################
# Helper macros for establishing LaTeX build.
#############################################################################
@@ -320,6 +344,8 @@
CACHE STRING "Flags passed to makeindex.")
SET(MAKEGLOSSARIES_COMPILER_FLAGS ""
CACHE STRING "Flags passed to makeglossaries.")
+ SET(MAKENOMENCLATURES_COMPILER_FLAGS ""
+ CACHE STRING "Flags passed to makenomenclatures.")
SET(DVIPS_CONVERTER_FLAGS "-Ppdf -G0 -t letter"
CACHE STRING "Flags passed to dvips.")
SET(PS2PDF_CONVERTER_FLAGS "-dMaxSubsetPct=100
-dCompatibilityLevel=1.3 -dSubsetFonts=true -dEmbedAllFonts=true
-dAutoFilterColorImages=false -dAutoFilterGrayImages=false
-dColorImageFilter=/FlateEncode -dGrayImageFilter=/FlateEncode
-dMonoImageFilter=/FlateEncode"
@@ -332,6 +358,7 @@
BIBTEX_COMPILER_FLAGS
MAKEINDEX_COMPILER_FLAGS
MAKEGLOSSARIES_COMPILER_FLAGS
+ MAKENOMENCLATURES_COMPILER_FLAGS
DVIPS_CONVERTER_FLAGS
PS2PDF_CONVERTER_FLAGS
LATEX2HTML_CONVERTER_FLAGS
@@ -341,6 +368,7 @@
SEPARATE_ARGUMENTS(BIBTEX_COMPILER_FLAGS)
SEPARATE_ARGUMENTS(MAKEINDEX_COMPILER_FLAGS)
SEPARATE_ARGUMENTS(MAKEGLOSSARIES_COMPILER_FLAGS)
+ SEPARATE_ARGUMENTS(MAKENOMENCLATURES_COMPILER_FLAGS)
SEPARATE_ARGUMENTS(DVIPS_CONVERTER_FLAGS)
SEPARATE_ARGUMENTS(PS2PDF_CONVERTER_FLAGS)
SEPARATE_ARGUMENTS(LATEX2HTML_CONVERTER_FLAGS)
@@ -560,7 +588,7 @@
MACRO(LATEX_USAGE command message)
MESSAGE(SEND_ERROR
- "${message}\nUsage: ${command}(<tex_file>\n [BIBFILES
<bib_file> <bib_file> ...]\n [INPUTS <tex_file> <tex_file>
...]\n [IMAGE_DIRS <directory1> <directory2> ...]\n
[IMAGES <image_file1> <image_file2>\n [CONFIGURE <tex_file>
<tex_file> ...]\n [DEPENDS <tex_file> <tex_file> ...]\n
[USE_INDEX] [USE_GLOSSARY]\n [DEFAULT_PDF]
[DEFAULT_SAFEPDF]\n [MANGLE_TARGET_NAMES])"
+ "${message}\nUsage: ${command}(<tex_file>\n [BIBFILES
<bib_file> <bib_file> ...]\n [INPUTS <tex_file> <tex_file>
...]\n [IMAGE_DIRS <directory1> <directory2> ...]\n
[IMAGES <image_file1> <image_file2>\n [CONFIGURE <tex_file>
<tex_file> ...]\n [DEPENDS <tex_file> <tex_file> ...]\n
[USE_INDEX] [USE_GLOSSARY] [USE_NOMENCLATURE]\n
[DEFAULT_PDF] [DEFAULT_SAFEPDF]\n [MANGLE_TARGET_NAMES])"
)
ENDMACRO(LATEX_USAGE command message)
@@ -571,7 +599,7 @@
LATEX_PARSE_ARGUMENTS(
LATEX
"BIBFILES;INPUTS;IMAGE_DIRS;IMAGES;CONFIGURE;DEPENDS"
- "USE_INDEX;USE_GLOSSARY;USE_GLOSSARIES;DEFAULT_PDF;DEFAULT_SAFEPDF;MANGLE_TARGET_NAMES"
+ "USE_INDEX;USE_GLOSSARY;USE_GLOSSARIES;USE_NOMENCLATURE;USE_NOMENCLATURES;DEFAULT_PDF;DEFAULT_SAFEPDF;MANGLE_TARGET_NAMES"
${ARGN}
)
@@ -592,6 +620,9 @@
IF (LATEX_USE_GLOSSARIES)
SET(LATEX_USE_GLOSSARY TRUE)
ENDIF (LATEX_USE_GLOSSARIES)
+ IF (LATEX_USE_NOMENCLATURES)
+ SET(LATEX_USE_NOMENCLATURE TRUE)
+ ENDIF (LATEX_USE_NOMENCLATURES)
ENDMACRO(PARSE_ADD_LATEX_ARGUMENTS)
MACRO(ADD_LATEX_TARGETS)
@@ -675,6 +706,33 @@
ENDFOREACH(dummy)
ENDIF (LATEX_USE_GLOSSARY)
+ IF (LATEX_USE_NOMENCLATURE)
+ FOREACH(dummy 0 1) # Repeat these commands twice.
+ SET(make_dvi_command ${make_dvi_command}
+ COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
+ ${CMAKE_COMMAND}
+ -D LATEX_BUILD_COMMAND=makenomenclatures
+ -D LATEX_TARGET=${LATEX_TARGET}
+ -D MAKEINDEX_COMPILER=${MAKEINDEX_COMPILER}
+ -D MAKENOMENCLATURES_COMPILER_FLAGS=${MAKENOMENCLATURES_COMPILER_FLAGS}
+ -P ${LATEX_USE_LATEX_LOCATION}
+ COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
+ ${LATEX_COMPILER} ${LATEX_COMPILER_FLAGS} ${LATEX_MAIN_INPUT}
+ )
+ SET(make_pdf_command ${make_pdf_command}
+ COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
+ ${CMAKE_COMMAND}
+ -D LATEX_BUILD_COMMAND=makenomenclatures
+ -D LATEX_TARGET=${LATEX_TARGET}
+ -D MAKEINDEX_COMPILER=${MAKEINDEX_COMPILER}
+ -D MAKENOMENCLATURES_COMPILER_FLAGS=${MAKENOMENCLATURES_COMPILER_FLAGS}
+ -P ${LATEX_USE_LATEX_LOCATION}
+ COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
+ ${PDFLATEX_COMPILER} ${PDFLATEX_COMPILER_FLAGS} ${LATEX_MAIN_INPUT}
+ )
+ ENDFOREACH(dummy)
+ ENDIF (LATEX_USE_NOMENCLATURE)
+
IF (LATEX_BIBFILES)
SET(make_dvi_command ${make_dvi_command}
COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
@@ -822,6 +880,12 @@
SET(command_handled TRUE)
ENDIF ("${LATEX_BUILD_COMMAND}" STREQUAL makeglossaries)
+
+ IF ("${LATEX_BUILD_COMMAND}" STREQUAL makenomenclatures)
+ LATEX_MAKENOMENCLATURES()
+ SET(command_handled TRUE)
+ ENDIF ("${LATEX_BUILD_COMMAND}" STREQUAL makenomenclatures)
+
IF (NOT command_handled)
MESSAGE(SEND_ERROR "Unknown command: ${LATEX_BUILD_COMMAND}")
ENDIF (NOT command_handled)
More information about the CMake
mailing list