| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399 |
- # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- # file LICENSE.rst or https://cmake.org/licensing for details.
- #[=======================================================================[.rst:
- FindLATEX
- ---------
- Finds LaTeX compiler and Latex-related software like BibTeX:
- .. code-block:: cmake
- find_package(LATEX [...])
- LaTeX is a typesetting system for the production of technical and scientific
- documentation.
- Components
- ^^^^^^^^^^
- .. versionadded:: 3.2
- Components can be optionally specified using a standard CMake syntax:
- .. code-block:: cmake
- find_package(LATEX [COMPONENTS <component>...])
- Supported components are:
- ``PDFLATEX``
- Finds the PdfLaTeX compiler.
- ``XELATEX``
- Finds the XeLaTeX compiler.
- ``LUALATEX``
- Finds the LuaLaTeX compiler.
- ``BIBTEX``
- Finds the BibTeX compiler.
- ``BIBER``
- Finds the Biber compiler.
- ``MAKEINDEX``
- Finds the MakeIndex compiler.
- ``XINDY``
- Finds the xindy compiler.
- ``DVIPS``
- Finds the DVI-to-PostScript (DVIPS) converter.
- ``DVIPDF``
- Finds the DVIPDF converter.
- ``PS2PDF``
- Finds the the PS2PDF converter.
- ``PDFTOPS``
- Finds the PDF-to-PostScript converter.
- ``LATEX2HTML``
- Finds the converter for converting LaTeX documents to HTML.
- ``HTLATEX``
- Finds htlatex compiler.
- Result Variables
- ^^^^^^^^^^^^^^^^
- This module defines the following variables:
- ``LATEX_FOUND``
- Boolean indicating whether the LaTex compiler and all its required components
- were found.
- ``LATEX_<component>_FOUND``
- Boolean indicating whether the LaTeX ``<component>`` was found.
- Cache Variables
- ^^^^^^^^^^^^^^^
- The following cache variables may also be set:
- ``LATEX_COMPILER``
- The path to the LaTeX compiler.
- ``PDFLATEX_COMPILER``
- The path to the PdfLaTeX compiler.
- ``XELATEX_COMPILER``
- .. versionadded: 3.2
- The path to the XeLaTeX compiler.
- ``LUALATEX_COMPILER``
- .. versionadded: 3.2
- The path to the LuaLaTeX compiler.
- ``BIBTEX_COMPILER``
- The path to the BibTeX compiler.
- ``BIBER_COMPILER``
- .. versionadded: 3.2
- The path to the Biber compiler.
- ``MAKEINDEX_COMPILER``
- The path to the MakeIndex compiler.
- ``XINDY_COMPILER``
- .. versionadded: 3.2
- The path to the xindy compiler.
- ``DVIPS_CONVERTER``
- The path to the DVIPS converter.
- ``DVIPDF_CONVERTER``
- The path to the DVIPDF converter.
- ``PS2PDF_CONVERTER``
- The path to the PS2PDF converter.
- ``PDFTOPS_CONVERTER``
- .. versionadded: 3.2
- The path to the pdftops converter.
- ``LATEX2HTML_CONVERTER``
- The path to the LaTeX2Html converter.
- ``HTLATEX_COMPILER``
- .. versionadded: 3.2
- The path to the htlatex compiler.
- Examples
- ^^^^^^^^
- Finding LaTeX in a project:
- .. code-block:: cmake
- find_package(LATEX)
- Finding LaTeX compiler and specifying which additional LaTeX components are
- required for LaTeX to be considered found:
- .. code-block:: cmake
- find_package(LATEX COMPONENTS PDFLATEX)
- if(LATEX_FOUND)
- execute_process(COMMAND ${LATEX_COMPILER} ...)
- execute_process(COMMAND ${PDFLATEX_COMPILER} ...)
- endif()
- Or finding LaTeX compiler and specifying multiple components:
- .. code-block:: cmake
- find_package(LATEX COMPONENTS BIBTEX PS2PDF)
- if(LATEXT_FOUND)
- # ...
- endif()
- #]=======================================================================]
- if (WIN32)
- # Try to find the MikTex binary path (look for its package manager).
- find_path(MIKTEX_BINARY_PATH mpm.exe
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MiK\\MiKTeX\\CurrentVersion\\MiKTeX;Install Root]/miktex/bin"
- "$ENV{LOCALAPPDATA}/Programs/MiKTeX/miktex/bin"
- "$ENV{LOCALAPPDATA}/Programs/MiKTeX/miktex/bin/x64"
- "$ENV{APPDATA}/Programs/MiKTeX/miktex/bin"
- "$ENV{APPDATA}/Programs/MiKTeX/miktex/bin/x64"
- DOC
- "Path to the MikTex binary directory."
- )
- mark_as_advanced(MIKTEX_BINARY_PATH)
- # Try to find the GhostScript binary path (look for gswin32).
- get_filename_component(GHOSTSCRIPT_BINARY_PATH_FROM_REGISTRY_8_00
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\AFPL Ghostscript\\8.00;GS_DLL]" PATH
- )
- get_filename_component(GHOSTSCRIPT_BINARY_PATH_FROM_REGISTRY_7_04
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\AFPL Ghostscript\\7.04;GS_DLL]" PATH
- )
- find_path(GHOSTSCRIPT_BINARY_PATH gswin32.exe
- ${GHOSTSCRIPT_BINARY_PATH_FROM_REGISTRY_8_00}
- ${GHOSTSCRIPT_BINARY_PATH_FROM_REGISTRY_7_04}
- DOC "Path to the GhostScript binary directory."
- )
- mark_as_advanced(GHOSTSCRIPT_BINARY_PATH)
- find_path(GHOSTSCRIPT_LIBRARY_PATH ps2pdf13.bat
- "${GHOSTSCRIPT_BINARY_PATH}/../lib"
- DOC "Path to the GhostScript library directory."
- )
- mark_as_advanced(GHOSTSCRIPT_LIBRARY_PATH)
- endif ()
- # try to find Latex and the related programs
- find_program(LATEX_COMPILER
- NAMES latex
- PATHS ${MIKTEX_BINARY_PATH}
- /usr/bin
- )
- # find pdflatex
- find_program(PDFLATEX_COMPILER
- NAMES pdflatex
- PATHS ${MIKTEX_BINARY_PATH}
- /usr/bin
- )
- if (PDFLATEX_COMPILER)
- set(LATEX_PDFLATEX_FOUND TRUE)
- else()
- set(LATEX_PDFLATEX_FOUND FALSE)
- endif()
- # find xelatex
- find_program(XELATEX_COMPILER
- NAMES xelatex
- PATHS ${MIKTEX_BINARY_PATH}
- /usr/bin
- )
- if (XELATEX_COMPILER)
- set(LATEX_XELATEX_FOUND TRUE)
- else()
- set(LATEX_XELATEX_FOUND FALSE)
- endif()
- # find lualatex
- find_program(LUALATEX_COMPILER
- NAMES lualatex
- PATHS ${MIKTEX_BINARY_PATH}
- /usr/bin
- )
- if (LUALATEX_COMPILER)
- set(LATEX_LUALATEX_FOUND TRUE)
- else()
- set(LATEX_LUALATEX_FOUND FALSE)
- endif()
- # find bibtex
- find_program(BIBTEX_COMPILER
- NAMES bibtex
- PATHS ${MIKTEX_BINARY_PATH}
- /usr/bin
- )
- if (BIBTEX_COMPILER)
- set(LATEX_BIBTEX_FOUND TRUE)
- else()
- set(LATEX_BIBTEX_FOUND FALSE)
- endif()
- # find biber
- find_program(BIBER_COMPILER
- NAMES biber
- PATHS ${MIKTEX_BINARY_PATH}
- /usr/bin
- )
- if (BIBER_COMPILER)
- set(LATEX_BIBER_FOUND TRUE)
- else()
- set(LATEX_BIBER_FOUND FALSE)
- endif()
- # find makeindex
- find_program(MAKEINDEX_COMPILER
- NAMES makeindex
- PATHS ${MIKTEX_BINARY_PATH}
- /usr/bin
- )
- if (MAKEINDEX_COMPILER)
- set(LATEX_MAKEINDEX_FOUND TRUE)
- else()
- set(LATEX_MAKEINDEX_FOUND FALSE)
- endif()
- # find xindy
- find_program(XINDY_COMPILER
- NAMES xindy
- PATHS ${MIKTEX_BINARY_PATH}
- /usr/bin
- )
- if (XINDY_COMPILER)
- set(LATEX_XINDY_FOUND TRUE)
- else()
- set(LATEX_XINDY_FOUND FALSE)
- endif()
- # find dvips
- find_program(DVIPS_CONVERTER
- NAMES dvips
- PATHS ${MIKTEX_BINARY_PATH}
- /usr/bin
- )
- if (DVIPS_CONVERTER)
- set(LATEX_DVIPS_FOUND TRUE)
- else()
- set(LATEX_DVIPS_FOUND FALSE)
- endif()
- # find dvipdf
- find_program(DVIPDF_CONVERTER
- NAMES dvipdfm dvipdft dvipdf
- PATHS ${MIKTEX_BINARY_PATH}
- /usr/bin
- )
- if (DVIPDF_CONVERTER)
- set(LATEX_DVIPDF_FOUND TRUE)
- else()
- set(LATEX_DVIPDF_FOUND FALSE)
- endif()
- # find ps2pdf
- if (WIN32)
- find_program(PS2PDF_CONVERTER
- NAMES ps2pdf14.bat ps2pdf14 ps2pdf
- PATHS ${GHOSTSCRIPT_LIBRARY_PATH}
- ${MIKTEX_BINARY_PATH}
- )
- else ()
- find_program(PS2PDF_CONVERTER
- NAMES ps2pdf14 ps2pdf
- )
- endif ()
- if (PS2PDF_CONVERTER)
- set(LATEX_PS2PDF_FOUND TRUE)
- else()
- set(LATEX_PS2PDF_FOUND FALSE)
- endif()
- # find pdftops
- find_program(PDFTOPS_CONVERTER
- NAMES pdftops
- PATHS ${MIKTEX_BINARY_PATH}
- /usr/bin
- )
- if (PDFTOPS_CONVERTER)
- set(LATEX_PDFTOPS_FOUND TRUE)
- else()
- set(LATEX_PDFTOPS_FOUND FALSE)
- endif()
- # find latex2html
- find_program(LATEX2HTML_CONVERTER
- NAMES latex2html
- PATHS ${MIKTEX_BINARY_PATH}
- /usr/bin
- )
- if (LATEX2HTML_CONVERTER)
- set(LATEX_LATEX2HTML_FOUND TRUE)
- else()
- set(LATEX_LATEX2HTML_FOUND FALSE)
- endif()
- # find htlatex
- find_program(HTLATEX_COMPILER
- NAMES htlatex
- PATHS ${MIKTEX_BINARY_PATH}
- /usr/bin
- )
- if (HTLATEX_COMPILER)
- set(LATEX_HTLATEX_FOUND TRUE)
- else()
- set(LATEX_HTLATEX_FOUND FALSE)
- endif()
- mark_as_advanced(
- LATEX_COMPILER
- PDFLATEX_COMPILER
- XELATEX_COMPILER
- LUALATEX_COMPILER
- BIBTEX_COMPILER
- BIBER_COMPILER
- MAKEINDEX_COMPILER
- XINDY_COMPILER
- DVIPS_CONVERTER
- DVIPDF_CONVERTER
- PS2PDF_CONVERTER
- PDFTOPS_CONVERTER
- LATEX2HTML_CONVERTER
- HTLATEX_COMPILER
- )
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(LATEX
- REQUIRED_VARS LATEX_COMPILER
- HANDLE_COMPONENTS
- )
|