Compare commits
39 commits
Version2.4
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6c55769501 | ||
|
|
0c21bd7f75 | ||
|
|
ddcaa05f5c | ||
|
|
6999f191fa | ||
|
|
3c3ce51454 | ||
|
|
adf9530897 | ||
|
|
4bfb138e33 | ||
|
|
e0e6028757 | ||
|
|
7e1e03b4c0 | ||
|
|
193d64b3c4 | ||
|
|
b99d970ef1 | ||
|
|
b6e3317aaf | ||
|
|
acc9ac7762 | ||
|
|
d0d4d59ff5 | ||
|
|
88facfc81c | ||
|
|
aa36c16f99 | ||
|
|
56d5753c84 | ||
|
|
ac4d21d0b3 | ||
|
|
ca926d851c | ||
|
|
cdec9a8944 | ||
|
|
64034cf48b | ||
|
|
8dd1878f7a | ||
|
|
5c0fd3da23 | ||
|
|
dc2e6b8931 | ||
|
|
3945141c70 | ||
|
|
a564114f2b | ||
|
|
091a7a3409 | ||
|
|
6577150a41 | ||
|
|
1c817c70f2 | ||
|
|
c8eb18ad32 | ||
|
|
b36810fe9a | ||
|
|
0c9f0c7822 | ||
|
|
d03bb459ea | ||
|
|
3a66f0e5e5 | ||
|
|
6895ba6d37 | ||
|
|
c5394a7263 | ||
|
|
2fd11379ab | ||
|
|
abad1ed145 | ||
|
|
0eb452382a |
32 changed files with 1006 additions and 104 deletions
34
README
34
README
|
|
@ -1,34 +0,0 @@
|
||||||
Compiling LaTeX files into readable documents is actually a very involved
|
|
||||||
process. Although CMake comes with FindLATEX.cmake, it does nothing for
|
|
||||||
you other than find the commands associated with LaTeX. I like using CMake
|
|
||||||
to build my LaTeX documents, but creating targets to do it is actually a
|
|
||||||
pain. Thus, I've compiled a bunch of macros that help me create targets in
|
|
||||||
CMake into a file I call "UseLATEX.cmake". Here
|
|
||||||
are some of the things UseLATEX.cmake handles:
|
|
||||||
|
|
||||||
* Runs LaTeX multiple times to resolve links.
|
|
||||||
|
|
||||||
* Can run bibtex, makeindex, and makeglossaries to make bibliographies,
|
|
||||||
indexes, and/or glossaries.
|
|
||||||
|
|
||||||
* Optionally runs configure on your latex files to replace @VARIABLE@ with
|
|
||||||
the equivalent CMake variable.
|
|
||||||
|
|
||||||
* Automatically finds png, jpeg, eps, and pdf files and converts them to
|
|
||||||
formats latex and pdflatex understand.
|
|
||||||
|
|
||||||
This repository contains the CMake macros in the UseLATEX.cmake file. To
|
|
||||||
get started, copy this file to your own LaTeX project and include it in
|
|
||||||
your build process.
|
|
||||||
|
|
||||||
You will also find a LaTeX document, UseLATEX.tex, that contains all of the
|
|
||||||
documentation for UseLATEX.cmake. You will also find a CMake build file,
|
|
||||||
CMakeLists.txt, that uses UseLATEX.cmake to build UseLATEX.tex. It also
|
|
||||||
serves as a good example for using UseLATEX.cmake.
|
|
||||||
|
|
||||||
You can find the latest information on UseLATEX.cmake on the CMake Wiki at
|
|
||||||
the following URL.
|
|
||||||
|
|
||||||
http://www.cmake.org/Wiki/CMakeUserUseLATEX
|
|
||||||
|
|
||||||
|
|
||||||
42
README.md
Normal file
42
README.md
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
Compiling LaTeX files into readable documents is actually a very involved
|
||||||
|
process. Although CMake comes with FindLATEX.cmake, it does nothing for you
|
||||||
|
other than find the commands associated with LaTeX. I like using CMake to
|
||||||
|
build my LaTeX documents, but creating targets to do it is actually a pain.
|
||||||
|
Thus, I've compiled a bunch of macros that help me create targets in CMake
|
||||||
|
into a file I call [UseLATEX.cmake](UseLATEX.cmake). Here are some of the
|
||||||
|
things [UseLATEX.cmake](UseLATEX.cmake) handles:
|
||||||
|
|
||||||
|
* Runs LaTeX multiple times to resolve links.
|
||||||
|
* Can run bibtex, makeindex, and makeglossaries to make bibliographies,
|
||||||
|
indexes, and/or glossaries.
|
||||||
|
* Optionally runs configure on your latex files to replace `@VARIABLE@`
|
||||||
|
with the equivalent CMake variable.
|
||||||
|
* Automatically finds png, jpeg, eps, and pdf files and converts them to
|
||||||
|
formats latex and pdflatex understand.
|
||||||
|
|
||||||
|
## Download
|
||||||
|
|
||||||
|
The files can be downloaded directly from the UseLATEX project page. If you
|
||||||
|
are viewing this from a web page, you can follow the following links.
|
||||||
|
|
||||||
|
* Click here to get a copy of [UseLATEX.cmake](https://gitlab.kitware.com/kmorel/UseLATEX/raw/master/UseLATEX.cmake).
|
||||||
|
* Click here to get the documentation [UseLATEX.pdf](https://gitlab.kitware.com/kmorel/UseLATEX/raw/master/UseLATEX.pdf).
|
||||||
|
|
||||||
|
## Repository
|
||||||
|
|
||||||
|
This repository contains the CMake macros in the
|
||||||
|
[UseLATEX.cmake](UseLATEX.cmake) file. To get started, copy this file to
|
||||||
|
your own LaTeX project and include it in your build process.
|
||||||
|
|
||||||
|
You will also find a LaTeX document, [UseLATEX.tex](UseLATEX.tex), that
|
||||||
|
contains all of the documentation for [UseLATEX.cmake](UseLATEX.cmake). You
|
||||||
|
will also find a CMake build file, [CMakeLists.txt](CMakeLists.txt), that
|
||||||
|
uses [UseLATEX.cmake](UseLATEX.cmake) to build
|
||||||
|
[UseLATEX.tex](UseLATEX.tex). It also serves as a good example for using
|
||||||
|
[UseLATEX.cmake](UseLATEX.cmake).
|
||||||
|
|
||||||
|
There has been some requests to incorporate UseLATEX.cmake into the CMake
|
||||||
|
repository and distribution. Nobody thinks this is a bad idea, but it
|
||||||
|
hasn't yet happened mostly out of laziness. Keep bugging me to show
|
||||||
|
interest in moving UseLATEX.cmake. (See the author contact information at
|
||||||
|
the top of [UseLATEX.cmake](UseLATEX.cmake).)
|
||||||
419
UseLATEX.cmake
419
UseLATEX.cmake
|
|
@ -1,6 +1,6 @@
|
||||||
# File: UseLATEX.cmake
|
# File: UseLATEX.cmake
|
||||||
# CMAKE commands to actually use the LaTeX compiler
|
# CMAKE commands to actually use the LaTeX compiler
|
||||||
# Version: 2.4.0
|
# Version: 2.7.0
|
||||||
# Author: Kenneth Moreland <kmorel@sandia.gov>
|
# Author: Kenneth Moreland <kmorel@sandia.gov>
|
||||||
#
|
#
|
||||||
# Copyright 2004, 2015 Sandia Corporation.
|
# Copyright 2004, 2015 Sandia Corporation.
|
||||||
|
|
@ -42,17 +42,18 @@
|
||||||
# add_latex_document(<tex_file>
|
# add_latex_document(<tex_file>
|
||||||
# [BIBFILES <bib_files>]
|
# [BIBFILES <bib_files>]
|
||||||
# [INPUTS <input_tex_files>]
|
# [INPUTS <input_tex_files>]
|
||||||
# [IMAGE_DIRS] <image_directories>
|
# [IMAGE_DIRS <image_directories>]
|
||||||
# [IMAGES] <image_files>
|
# [IMAGES <image_files>]
|
||||||
# [CONFIGURE] <tex_files>
|
# [CONFIGURE <tex_files>]
|
||||||
# [DEPENDS] <tex_files>
|
# [DEPENDS <tex_files>]
|
||||||
# [MULTIBIB_NEWCITES] <suffix_list>
|
# [MULTIBIB_NEWCITES <suffix_list>]
|
||||||
# [USE_BIBLATEX]
|
# [USE_BIBLATEX]
|
||||||
# [USE_INDEX]
|
# [USE_INDEX]
|
||||||
# [INDEX_NAMES <index_names>]
|
# [INDEX_NAMES <index_names>]
|
||||||
# [USE_GLOSSARY] [USE_NOMENCL]
|
# [USE_GLOSSARY] [USE_NOMENCL]
|
||||||
# [FORCE_PDF] [FORCE_DVI] [FORCE_HTML]
|
# [FORCE_PDF] [FORCE_DVI] [FORCE_HTML]
|
||||||
# [TARGET_NAME] <name>
|
# [TARGET_NAME <name>]
|
||||||
|
# [INCLUDE_DIRECTORIES <directories>]
|
||||||
# [EXCLUDE_FROM_ALL]
|
# [EXCLUDE_FROM_ALL]
|
||||||
# [EXCLUDE_FROM_DEFAULTS])
|
# [EXCLUDE_FROM_DEFAULTS])
|
||||||
# Adds targets that compile <tex_file>. The latex output is placed
|
# Adds targets that compile <tex_file>. The latex output is placed
|
||||||
|
|
@ -61,15 +62,15 @@
|
||||||
# so all input files are copied from the source directory to the
|
# so all input files are copied from the source directory to the
|
||||||
# output directory. This includes the target tex file, any tex file
|
# output directory. This includes the target tex file, any tex file
|
||||||
# listed with the INPUTS option, the bibliography files listed with
|
# listed with the INPUTS option, the bibliography files listed with
|
||||||
# the BIBFILES option, and any .cls, .bst, and .clo files found in
|
# the BIBFILES option, and any .cls, .bst, .clo, .sty, .ist, and .fd
|
||||||
# the current source directory. Images found in the IMAGE_DIRS
|
# files found in the current source directory. Images found in the
|
||||||
# directories or listed by IMAGES are also copied to the output
|
# IMAGE_DIRS directories or listed by IMAGES are also copied to the
|
||||||
# directory and converted to an appropriate format if necessary. Any
|
# output directory and converted to an appropriate format if necessary.
|
||||||
# tex files also listed with the CONFIGURE option are also processed
|
# Any tex files also listed with the CONFIGURE option are also processed
|
||||||
# with the CMake CONFIGURE_FILE command (with the @ONLY flag). Any
|
# with the CMake CONFIGURE_FILE command (with the @ONLY flag). Any file
|
||||||
# file listed in CONFIGURE but not the target tex file or listed with
|
# listed in CONFIGURE but not the target tex file or listed with INPUTS
|
||||||
# INPUTS has no effect. DEPENDS can be used to specify generated files
|
# has no effect. DEPENDS can be used to specify generated files that are
|
||||||
# that are needed to compile the latex target.
|
# needed to compile the latex target.
|
||||||
#
|
#
|
||||||
# The following targets are made. The name prefix is based off of the
|
# The following targets are made. The name prefix is based off of the
|
||||||
# base name of the tex file unless TARGET_NAME is specified. If
|
# base name of the tex file unless TARGET_NAME is specified. If
|
||||||
|
|
@ -113,8 +114,64 @@
|
||||||
# support the extra auxiliary files created with the \newcite command
|
# support the extra auxiliary files created with the \newcite command
|
||||||
# in the multibib package.
|
# in the multibib package.
|
||||||
#
|
#
|
||||||
|
# INCLUDE_DIRECTORIES provides a list of directories in which LaTeX
|
||||||
|
# should look for input files. It accepts both files relative to the
|
||||||
|
# binary directory and absolute paths.
|
||||||
|
#
|
||||||
# History:
|
# History:
|
||||||
#
|
#
|
||||||
|
# 2.7.0 Add INCLUDE_DIRECTORIES parameters. (Thanks to Eric Dönges.)
|
||||||
|
#
|
||||||
|
# 2.6.1 Fix issue with detecting long undefined reference warnings that
|
||||||
|
# LaTeX "helpfully" split across lines (and which fowled up our
|
||||||
|
# regex).
|
||||||
|
#
|
||||||
|
# 2.6.0 Skip image conversion targets that are not used when a force option
|
||||||
|
# is given. This helps prevent errors for missing conversion programs
|
||||||
|
# that are not needed. (Thanks to Martin Wetzel.)
|
||||||
|
#
|
||||||
|
# 2.5.0 Parse biber output for warnings.
|
||||||
|
#
|
||||||
|
# For regular bibtex, you get warnings about undefined references
|
||||||
|
# when you run latex. However, when using biber, biber itself prints
|
||||||
|
# out the said warning and latex sees nothing. Thus, when using biber
|
||||||
|
# the regular output is now suppressed and the log file is scanned
|
||||||
|
# for potential issues.
|
||||||
|
#
|
||||||
|
# 2.4.9 Use biblatex.cfg file if it exists and the USE_BIBLATEX option is ON.
|
||||||
|
#
|
||||||
|
# 2.4.8 Fix synctex issue with absolute paths not being converted.
|
||||||
|
#
|
||||||
|
# 2.4.7 Fix some issues with spaces in the path of the working directory where
|
||||||
|
# LaTeX is executed.
|
||||||
|
#
|
||||||
|
# 2.4.6 Fix parse issue with older versions of CMake.
|
||||||
|
#
|
||||||
|
# 2.4.5 Fix issues with files and paths containing spaces.
|
||||||
|
#
|
||||||
|
# 2.4.4 Improve error reporting message when LaTeX fails.
|
||||||
|
#
|
||||||
|
# When LaTeX fails, delete the output file, which is invalid.
|
||||||
|
#
|
||||||
|
# Add warnings for "missing characters." These usually mean that a
|
||||||
|
# non-ASCII character is in the document and will not be printed
|
||||||
|
# correctly.
|
||||||
|
#
|
||||||
|
# 2.4.3 Check for warnings from the natbib package. When using natbib,
|
||||||
|
# warnings for missing bibliography references look different. So
|
||||||
|
# far, natbib seems to be quiet unless something is important, so
|
||||||
|
# look for all natbib warnings. (We can change this later if
|
||||||
|
# necessary.)
|
||||||
|
#
|
||||||
|
# 2.4.2 Fix an issue where new versions of ImageMagick expect the order of
|
||||||
|
# options in command line execution of magick/convert. (See, for
|
||||||
|
# example, http://www.imagemagick.org/Usage/basics/#why.)
|
||||||
|
#
|
||||||
|
# 2.4.1 Add ability to dump LaTeX log file when using batch mode. Batch
|
||||||
|
# mode suppresses most output, often including error messages. To
|
||||||
|
# make sure critical error messages get displayed, show the full log
|
||||||
|
# on failures.
|
||||||
|
#
|
||||||
# 2.4.0 Remove "-r 600" from the default PDFTOPS_CONVERTER_FLAGS. The -r flag
|
# 2.4.0 Remove "-r 600" from the default PDFTOPS_CONVERTER_FLAGS. The -r flag
|
||||||
# is available from the Poppler version of pdftops, but not the Xpdf
|
# is available from the Poppler version of pdftops, but not the Xpdf
|
||||||
# version.
|
# version.
|
||||||
|
|
@ -396,6 +453,66 @@ endfunction(latex_get_filename_component)
|
||||||
#############################################################################
|
#############################################################################
|
||||||
# Functions that perform processing during a LaTeX build.
|
# Functions that perform processing during a LaTeX build.
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
function(latex_execute_latex)
|
||||||
|
if(NOT LATEX_WORKING_DIRECTORY)
|
||||||
|
message(SEND_ERROR "Need to define LATEX_WORKING_DIRECTORY")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT LATEX_FULL_COMMAND)
|
||||||
|
message(SEND_ERROR "Need to define LATEX_FULL_COMMAND")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT LATEX_OUTPUT_FILE)
|
||||||
|
message(SEND_ERROR "Need to define LATEX_OUTPUT_FILE")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT LATEX_LOG_FILE)
|
||||||
|
message(SEND_ERROR "Need to define LATEX_LOG_FILE")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(full_command_original "${LATEX_FULL_COMMAND}")
|
||||||
|
|
||||||
|
# Chose the native method for parsing command arguments. Newer versions of
|
||||||
|
# CMake allow you to just use NATIVE_COMMAND.
|
||||||
|
if (CMAKE_VERSION VERSION_GREATER 3.8)
|
||||||
|
set(separate_arguments_mode NATIVE_COMMAND)
|
||||||
|
else()
|
||||||
|
if (WIN32)
|
||||||
|
set(separate_arguments_mode WINDOWS_COMMAND)
|
||||||
|
else()
|
||||||
|
set(separate_arguments_mode UNIX_COMMAND)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Preps variables for use in execute_process.
|
||||||
|
# Even though we expect LATEX_WORKING_DIRECTORY to have a single "argument,"
|
||||||
|
# we also want to make sure that we strip out any escape characters that can
|
||||||
|
# foul up the WORKING_DIRECTORY argument.
|
||||||
|
separate_arguments(LATEX_FULL_COMMAND UNIX_COMMAND "${LATEX_FULL_COMMAND}")
|
||||||
|
separate_arguments(LATEX_WORKING_DIRECTORY_SEP UNIX_COMMAND "${LATEX_WORKING_DIRECTORY}")
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${LATEX_FULL_COMMAND}
|
||||||
|
WORKING_DIRECTORY "${LATEX_WORKING_DIRECTORY_SEP}"
|
||||||
|
RESULT_VARIABLE execute_result
|
||||||
|
OUTPUT_VARIABLE ignore
|
||||||
|
ERROR_VARIABLE ignore
|
||||||
|
)
|
||||||
|
|
||||||
|
if(NOT ${execute_result} EQUAL 0)
|
||||||
|
# LaTeX tends to write a file when a failure happens. Delete that file so
|
||||||
|
# that LaTeX will run again.
|
||||||
|
file(REMOVE "${LATEX_WORKING_DIRECTORY}/${LATEX_OUTPUT_FILE}")
|
||||||
|
|
||||||
|
message("\n\nLaTeX command failed")
|
||||||
|
message("${full_command_original}")
|
||||||
|
message("Log output:")
|
||||||
|
file(READ "${LATEX_WORKING_DIRECTORY}/${LATEX_LOG_FILE}" log_output)
|
||||||
|
message("${log_output}")
|
||||||
|
message(FATAL_ERROR "Executed LaTeX, but LaTeX returned an error.")
|
||||||
|
endif()
|
||||||
|
endfunction(latex_execute_latex)
|
||||||
|
|
||||||
function(latex_makeglossaries)
|
function(latex_makeglossaries)
|
||||||
# This is really a bare bones port of the makeglossaries perl script into
|
# This is really a bare bones port of the makeglossaries perl script into
|
||||||
# CMake scripting.
|
# CMake scripting.
|
||||||
|
|
@ -591,6 +708,8 @@ function(latex_correct_synctex)
|
||||||
if(NOT LATEX_BINARY_DIRECTORY)
|
if(NOT LATEX_BINARY_DIRECTORY)
|
||||||
message(SEND_ERROR "Need to define LATEX_BINARY_DIRECTORY")
|
message(SEND_ERROR "Need to define LATEX_BINARY_DIRECTORY")
|
||||||
endif()
|
endif()
|
||||||
|
message("${LATEX_BINARY_DIRECTORY}")
|
||||||
|
message("${LATEX_SOURCE_DIRECTORY}")
|
||||||
|
|
||||||
set(synctex_file ${LATEX_BINARY_DIRECTORY}/${LATEX_TARGET}.synctex)
|
set(synctex_file ${LATEX_BINARY_DIRECTORY}/${LATEX_TARGET}.synctex)
|
||||||
set(synctex_file_gz ${synctex_file}.gz)
|
set(synctex_file_gz ${synctex_file}.gz)
|
||||||
|
|
@ -608,13 +727,24 @@ function(latex_correct_synctex)
|
||||||
message("Reading synctex file.")
|
message("Reading synctex file.")
|
||||||
file(READ ${synctex_file} synctex_data)
|
file(READ ${synctex_file} synctex_data)
|
||||||
|
|
||||||
message("Replacing relative with absolute paths.")
|
message("Replacing output paths with input paths.")
|
||||||
string(REGEX REPLACE
|
foreach(extension tex cls bst clo sty ist fd)
|
||||||
"(Input:[0-9]+:)([^/\n][^\n]*)"
|
# Relative paths
|
||||||
"\\1${LATEX_SOURCE_DIRECTORY}/\\2"
|
string(REGEX REPLACE
|
||||||
synctex_data
|
"(Input:[0-9]+:)([^/\n][^\n]\\.${extension}*)"
|
||||||
"${synctex_data}"
|
"\\1${LATEX_SOURCE_DIRECTORY}/\\2"
|
||||||
)
|
synctex_data
|
||||||
|
"${synctex_data}"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Absolute paths
|
||||||
|
string(REGEX REPLACE
|
||||||
|
"(Input:[0-9]+:)${LATEX_BINARY_DIRECTORY}([^\n]*\\.${extension})"
|
||||||
|
"\\1${LATEX_SOURCE_DIRECTORY}\\2"
|
||||||
|
synctex_data
|
||||||
|
"${synctex_data}"
|
||||||
|
)
|
||||||
|
endforeach(extension)
|
||||||
|
|
||||||
message("Writing synctex file.")
|
message("Writing synctex file.")
|
||||||
file(WRITE ${synctex_file} "${synctex_data}")
|
file(WRITE ${synctex_file} "${synctex_data}")
|
||||||
|
|
@ -633,6 +763,39 @@ function(latex_correct_synctex)
|
||||||
endfunction(latex_correct_synctex)
|
endfunction(latex_correct_synctex)
|
||||||
|
|
||||||
function(latex_check_important_warnings)
|
function(latex_check_important_warnings)
|
||||||
|
# Check for biber warnings/errors if that was run
|
||||||
|
set(bib_log_file ${LATEX_TARGET}.blg)
|
||||||
|
if(EXISTS ${bib_log_file})
|
||||||
|
file(READ ${bib_log_file} bib_log)
|
||||||
|
if(bib_log MATCHES "INFO - This is Biber")
|
||||||
|
message("\nChecking ${bib_log_file} for Biber warnings/errors.")
|
||||||
|
|
||||||
|
string(REGEX MATCHALL
|
||||||
|
"[A-Z]+ - [^\n]*"
|
||||||
|
biber_messages
|
||||||
|
"${bib_log}")
|
||||||
|
|
||||||
|
set(found_error)
|
||||||
|
foreach(message ${biber_messages})
|
||||||
|
if(NOT message MATCHES "^INFO - ")
|
||||||
|
set(found_error TRUE)
|
||||||
|
message("${message}")
|
||||||
|
endif()
|
||||||
|
endforeach(message)
|
||||||
|
|
||||||
|
if(found_error)
|
||||||
|
latex_get_filename_component(log_file_path ${bib_log_file} ABSOLUTE)
|
||||||
|
message("\nConsult ${log_file_path} for more information on Biber output.")
|
||||||
|
else()
|
||||||
|
message("No known important Biber output found.")
|
||||||
|
endif(found_error)
|
||||||
|
else() # Biber output not in log file
|
||||||
|
message("Skipping biber checks (biber not used)")
|
||||||
|
endif()
|
||||||
|
else() # No bib log file
|
||||||
|
message("Skipping bibliography checks (not run)")
|
||||||
|
endif()
|
||||||
|
|
||||||
set(log_file ${LATEX_TARGET}.log)
|
set(log_file ${LATEX_TARGET}.log)
|
||||||
|
|
||||||
message("\nChecking ${log_file} for important warnings.")
|
message("\nChecking ${log_file} for important warnings.")
|
||||||
|
|
@ -647,23 +810,61 @@ function(latex_check_important_warnings)
|
||||||
|
|
||||||
set(found_error)
|
set(found_error)
|
||||||
|
|
||||||
# Check for undefined references
|
file(READ ${log_file} log)
|
||||||
file(STRINGS ${log_file} reference_warnings REGEX "Reference.*undefined")
|
|
||||||
if(reference_warnings)
|
# Check for declared LaTeX warnings
|
||||||
|
string(REGEX MATCHALL
|
||||||
|
"\nLaTeX Warning:[^\n]*"
|
||||||
|
latex_warnings
|
||||||
|
"${log}")
|
||||||
|
if(latex_warnings)
|
||||||
set(found_error TRUE)
|
set(found_error TRUE)
|
||||||
message("\nFound missing reference warnings.")
|
message("\nFound declared LaTeX warnings.")
|
||||||
foreach(warning ${reference_warnings})
|
foreach(warning ${latex_warnings})
|
||||||
message("${warning}")
|
string(STRIP "${warning}" warning_no_newline)
|
||||||
|
message("${warning_no_newline}")
|
||||||
|
endforeach(warning)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Check for natbib warnings
|
||||||
|
string(REGEX MATCHALL
|
||||||
|
"\nPackage natbib Warning:[^\n]*"
|
||||||
|
natbib_warnings
|
||||||
|
"${log}")
|
||||||
|
if(natbib_warnings)
|
||||||
|
set(found_error TRUE)
|
||||||
|
message("\nFound natbib package warnings.")
|
||||||
|
foreach(warning ${natbib_warnings})
|
||||||
|
string(STRIP "${warning}" warning_no_newline)
|
||||||
|
message("${warning_no_newline}")
|
||||||
endforeach(warning)
|
endforeach(warning)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Check for overfull
|
# Check for overfull
|
||||||
file(STRINGS ${log_file} overfull_warnings REGEX "^Overfull")
|
string(REGEX MATCHALL
|
||||||
|
"\nOverfull[^\n]*"
|
||||||
|
overfull_warnings
|
||||||
|
"${log}")
|
||||||
if(overfull_warnings)
|
if(overfull_warnings)
|
||||||
set(found_error TRUE)
|
set(found_error TRUE)
|
||||||
message("\nFound overfull warnings. These are indicative of layout errors.")
|
message("\nFound overfull warnings. These are indicative of layout errors.")
|
||||||
foreach(warning ${overfull_warnings})
|
foreach(warning ${overfull_warnings})
|
||||||
message("${warning}")
|
string(STRIP "${warning}" warning_no_newline)
|
||||||
|
message("${warning_no_newline}")
|
||||||
|
endforeach(warning)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Check for invalid characters
|
||||||
|
string(REGEX MATCHALL
|
||||||
|
"\nMissing character:[^\n]*"
|
||||||
|
invalid_character_warnings
|
||||||
|
"${log}")
|
||||||
|
if(invalid_character_warnings)
|
||||||
|
set(found_error TRUE)
|
||||||
|
message("\nFound invalid character warnings. These characters are likely not printed correctly.")
|
||||||
|
foreach(warning ${invalid_character_warnings})
|
||||||
|
string(STRIP "${warning}" warning_no_newline)
|
||||||
|
message("${warning_no_newline}")
|
||||||
endforeach(warning)
|
endforeach(warning)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
@ -1001,17 +1202,24 @@ function(latex_add_convert_command
|
||||||
message(SEND_ERROR "IMAGEMAGICK_CONVERT set to Window's convert.exe for changing file systems rather than ImageMagick's convert for changing image formats. Please make sure ImageMagick is installed (available at http://www.imagemagick.org). If you have a recent version of ImageMagick (7.0 or higher), use the magick program instead of convert for IMAGEMAGICK_CONVERT.")
|
message(SEND_ERROR "IMAGEMAGICK_CONVERT set to Window's convert.exe for changing file systems rather than ImageMagick's convert for changing image formats. Please make sure ImageMagick is installed (available at http://www.imagemagick.org). If you have a recent version of ImageMagick (7.0 or higher), use the magick program instead of convert for IMAGEMAGICK_CONVERT.")
|
||||||
else()
|
else()
|
||||||
set(converter ${IMAGEMAGICK_CONVERT})
|
set(converter ${IMAGEMAGICK_CONVERT})
|
||||||
|
# ImageMagick requires a special order of arguments where resize and
|
||||||
|
# arguments of that nature must be placed after the input image path.
|
||||||
|
add_custom_command(OUTPUT ${output_path}
|
||||||
|
COMMAND ${converter}
|
||||||
|
ARGS ${input_path} ${convert_flags} ${output_path}
|
||||||
|
DEPENDS ${input_path}
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
message(SEND_ERROR "Could not find convert program. Please download ImageMagick from http://www.imagemagick.org and install.")
|
message(SEND_ERROR "Could not find convert program. Please download ImageMagick from http://www.imagemagick.org and install.")
|
||||||
endif()
|
endif()
|
||||||
|
else() # Not ImageMagick convert
|
||||||
|
add_custom_command(OUTPUT ${output_path}
|
||||||
|
COMMAND ${converter}
|
||||||
|
ARGS ${convert_flags} ${input_path} ${output_path}
|
||||||
|
DEPENDS ${input_path}
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_custom_command(OUTPUT ${output_path}
|
|
||||||
COMMAND ${converter}
|
|
||||||
ARGS ${convert_flags} ${input_path} ${output_path}
|
|
||||||
DEPENDS ${input_path}
|
|
||||||
)
|
|
||||||
endfunction(latex_add_convert_command)
|
endfunction(latex_add_convert_command)
|
||||||
|
|
||||||
# Makes custom commands to convert a file to a particular type.
|
# Makes custom commands to convert a file to a particular type.
|
||||||
|
|
@ -1031,10 +1239,15 @@ function(latex_convert_image
|
||||||
|
|
||||||
# Check input filename for potential problems with LaTeX.
|
# Check input filename for potential problems with LaTeX.
|
||||||
latex_get_filename_component(name "${input_file}" NAME_WE)
|
latex_get_filename_component(name "${input_file}" NAME_WE)
|
||||||
if(name MATCHES ".*\\..*")
|
set(suggested_name "${name}")
|
||||||
string(REPLACE "." "-" suggested_name "${name}")
|
if(suggested_name MATCHES ".*\\..*")
|
||||||
set(suggested_name "${suggested_name}${extension}")
|
string(REPLACE "." "-" suggested_name "${suggested_name}")
|
||||||
message(WARNING "Some LaTeX distributions have problems with image file names with multiple extensions. Consider changing ${name}${extension} to something like ${suggested_name}.")
|
endif()
|
||||||
|
if(suggested_name MATCHES ".* .*")
|
||||||
|
string(REPLACE " " "-" suggested_name "${suggested_name}")
|
||||||
|
endif()
|
||||||
|
if(NOT suggested_name STREQUAL name)
|
||||||
|
message(WARNING "Some LaTeX distributions have problems with image file names with multiple extensions or spaces. Consider changing ${name}${extension} to something like ${suggested_name}${extension}.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
string(REGEX REPLACE "\\.[^.]*\$" ${output_extension} output_file
|
string(REGEX REPLACE "\\.[^.]*\$" ${output_extension} output_file
|
||||||
|
|
@ -1105,19 +1318,23 @@ function(latex_process_images dvi_outputs_var pdf_outputs_var)
|
||||||
make_directory("${path}")
|
make_directory("${path}")
|
||||||
|
|
||||||
# Do conversions for dvi.
|
# Do conversions for dvi.
|
||||||
latex_convert_image(output_files "${file}" .eps "${convert_flags}"
|
if(NOT LATEX_FORCE_PDF)
|
||||||
"${LATEX_DVI_IMAGE_EXTENSIONS}" "${ARGN}")
|
latex_convert_image(output_files "${file}" .eps "${convert_flags}"
|
||||||
list(APPEND dvi_outputs ${output_files})
|
"${LATEX_DVI_IMAGE_EXTENSIONS}" "${ARGN}")
|
||||||
|
list(APPEND dvi_outputs ${output_files})
|
||||||
|
endif ()
|
||||||
|
|
||||||
# Do conversions for pdf.
|
# Do conversions for pdf.
|
||||||
if(is_raster)
|
if(NOT LATEX_FORCE_DVI AND NOT LATEX_FORCE_HTML)
|
||||||
latex_convert_image(output_files "${file}" .png "${convert_flags}"
|
if(is_raster)
|
||||||
"${LATEX_PDF_IMAGE_EXTENSIONS}" "${ARGN}")
|
latex_convert_image(output_files "${file}" .png "${convert_flags}"
|
||||||
list(APPEND pdf_outputs ${output_files})
|
"${LATEX_PDF_IMAGE_EXTENSIONS}" "${ARGN}")
|
||||||
else()
|
list(APPEND pdf_outputs ${output_files})
|
||||||
latex_convert_image(output_files "${file}" .pdf "${convert_flags}"
|
else()
|
||||||
"${LATEX_PDF_IMAGE_EXTENSIONS}" "${ARGN}")
|
latex_convert_image(output_files "${file}" .pdf "${convert_flags}"
|
||||||
list(APPEND pdf_outputs ${output_files})
|
"${LATEX_PDF_IMAGE_EXTENSIONS}" "${ARGN}")
|
||||||
|
list(APPEND pdf_outputs ${output_files})
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
message(WARNING "Could not find file ${CMAKE_CURRENT_SOURCE_DIR}/${file}. Are you sure you gave relative paths to IMAGES?")
|
message(WARNING "Could not find file ${CMAKE_CURRENT_SOURCE_DIR}/${file}. Are you sure you gave relative paths to IMAGES?")
|
||||||
|
|
@ -1215,6 +1432,7 @@ function(parse_add_latex_arguments command latex_main_input)
|
||||||
CONFIGURE
|
CONFIGURE
|
||||||
DEPENDS
|
DEPENDS
|
||||||
INDEX_NAMES
|
INDEX_NAMES
|
||||||
|
INCLUDE_DIRECTORIES
|
||||||
)
|
)
|
||||||
cmake_parse_arguments(
|
cmake_parse_arguments(
|
||||||
LATEX "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
LATEX "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
|
|
@ -1255,6 +1473,8 @@ function(parse_add_latex_arguments command latex_main_input)
|
||||||
endfunction(parse_add_latex_arguments)
|
endfunction(parse_add_latex_arguments)
|
||||||
|
|
||||||
function(add_latex_targets_internal)
|
function(add_latex_targets_internal)
|
||||||
|
latex_get_output_path(output_dir)
|
||||||
|
|
||||||
if(LATEX_USE_SYNCTEX)
|
if(LATEX_USE_SYNCTEX)
|
||||||
set(synctex_flags ${LATEX_SYNCTEX_ARGS})
|
set(synctex_flags ${LATEX_SYNCTEX_ARGS})
|
||||||
else()
|
else()
|
||||||
|
|
@ -1265,12 +1485,65 @@ function(add_latex_targets_internal)
|
||||||
set(latex_build_command
|
set(latex_build_command
|
||||||
${LATEX_COMPILER} ${LATEX_COMPILER_ARGS} ${synctex_flags} ${LATEX_MAIN_INPUT}
|
${LATEX_COMPILER} ${LATEX_COMPILER_ARGS} ${synctex_flags} ${LATEX_MAIN_INPUT}
|
||||||
)
|
)
|
||||||
|
if(LATEX_COMPILER_ARGS MATCHES ".*batchmode.*")
|
||||||
|
# Wrap command in script that dumps the log file on error. This makes sure
|
||||||
|
# errors can be seen.
|
||||||
|
set(latex_build_command
|
||||||
|
${CMAKE_COMMAND}
|
||||||
|
-D LATEX_BUILD_COMMAND=execute_latex
|
||||||
|
-D LATEX_WORKING_DIRECTORY="${output_dir}"
|
||||||
|
-D LATEX_FULL_COMMAND="${latex_build_command}"
|
||||||
|
-D LATEX_OUTPUT_FILE="${LATEX_TARGET}.dvi"
|
||||||
|
-D LATEX_LOG_FILE="${LATEX_TARGET}.log"
|
||||||
|
-P "${LATEX_USE_LATEX_LOCATION}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
set(pdflatex_build_command
|
set(pdflatex_build_command
|
||||||
${PDFLATEX_COMPILER} ${PDFLATEX_COMPILER_ARGS} ${synctex_flags} ${LATEX_MAIN_INPUT}
|
${PDFLATEX_COMPILER} ${PDFLATEX_COMPILER_ARGS} ${synctex_flags} ${LATEX_MAIN_INPUT}
|
||||||
)
|
)
|
||||||
|
if(PDFLATEX_COMPILER_ARGS MATCHES ".*batchmode.*")
|
||||||
|
# Wrap command in script that dumps the log file on error. This makes sure
|
||||||
|
# errors can be seen.
|
||||||
|
set(pdflatex_build_command
|
||||||
|
${CMAKE_COMMAND}
|
||||||
|
-D LATEX_BUILD_COMMAND=execute_latex
|
||||||
|
-D LATEX_WORKING_DIRECTORY="${output_dir}"
|
||||||
|
-D LATEX_FULL_COMMAND="${pdflatex_build_command}"
|
||||||
|
-D LATEX_OUTPUT_FILE="${LATEX_TARGET}.pdf"
|
||||||
|
-D LATEX_LOG_FILE="${LATEX_TARGET}.log"
|
||||||
|
-P "${LATEX_USE_LATEX_LOCATION}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(LATEX_INCLUDE_DIRECTORIES)
|
||||||
|
# The include directories needs to start with the build directory so
|
||||||
|
# that the copied files can be found. It also needs to end with an
|
||||||
|
# empty directory so that the standard system directories are included
|
||||||
|
# after any specified.
|
||||||
|
set(LATEX_INCLUDE_DIRECTORIES . ${LATEX_INCLUDE_DIRECTORIES} "")
|
||||||
|
|
||||||
|
# CMake separates items in a list with a semicolon. Lists of
|
||||||
|
# directories on most systems are separated by colons, so we can do a
|
||||||
|
# simple text replace. On Windows, directories are separated by
|
||||||
|
# semicolons, but we replace them with the $<SEMICOLON> generator
|
||||||
|
# expression to make sure CMake treats it as a single string.
|
||||||
|
if(CMAKE_HOST_WIN32)
|
||||||
|
string(REPLACE ";" "$<SEMICOLON>" TEXINPUTS "${LATEX_INCLUDE_DIRECTORIES}")
|
||||||
|
else()
|
||||||
|
string(REPLACE ";" ":" TEXINPUTS "${LATEX_INCLUDE_DIRECTORIES}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Set the TEXINPUTS environment variable
|
||||||
|
set(latex_build_command
|
||||||
|
${CMAKE_COMMAND} -E env TEXINPUTS=${TEXINPUTS} ${latex_build_command})
|
||||||
|
set(pdflatex_build_command
|
||||||
|
${CMAKE_COMMAND} -E env TEXINPUTS=${TEXINPUTS} ${pdflatex_build_command})
|
||||||
|
endif()
|
||||||
|
|
||||||
if(NOT LATEX_TARGET_NAME)
|
if(NOT LATEX_TARGET_NAME)
|
||||||
set(LATEX_TARGET_NAME ${LATEX_TARGET})
|
# Use the main filename (minus the .tex) as the target name. Remove any
|
||||||
|
# spaces since CMake cannot have spaces in its target names.
|
||||||
|
string(REPLACE " " "_" LATEX_TARGET_NAME ${LATEX_TARGET})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Some LaTeX commands may need to be modified (or may not work) if the main
|
# Some LaTeX commands may need to be modified (or may not work) if the main
|
||||||
|
|
@ -1414,17 +1687,30 @@ function(add_latex_targets_internal)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(LATEX_BIBFILES)
|
if(LATEX_BIBFILES)
|
||||||
|
set(suppress_bib_output)
|
||||||
if(LATEX_USE_BIBLATEX)
|
if(LATEX_USE_BIBLATEX)
|
||||||
if(NOT BIBER_COMPILER)
|
if(NOT BIBER_COMPILER)
|
||||||
message(SEND_ERROR "I need the biber command.")
|
message(SEND_ERROR "I need the biber command.")
|
||||||
endif()
|
endif()
|
||||||
set(bib_compiler ${BIBER_COMPILER})
|
set(bib_compiler ${BIBER_COMPILER})
|
||||||
set(bib_compiler_flags ${BIBER_COMPILER_ARGS})
|
set(bib_compiler_flags ${BIBER_COMPILER_ARGS})
|
||||||
|
|
||||||
|
if(NOT BIBER_COMPILER_ARGS MATCHES ".*-q.*")
|
||||||
|
# Only suppress bib output if the quiet option is not specified.
|
||||||
|
set(suppress_bib_output TRUE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(LATEX_USE_BIBLATEX_CONFIG)
|
||||||
|
list(APPEND auxiliary_clean_files ${output_dir}/biblatex.cfg)
|
||||||
|
list(APPEND make_dvi_depends ${output_dir}/biblatex.cfg)
|
||||||
|
list(APPEND make_pdf_depends ${output_dir}/biblatex.cfg)
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
set(bib_compiler ${BIBTEX_COMPILER})
|
set(bib_compiler ${BIBTEX_COMPILER})
|
||||||
set(bib_compiler_flags ${BIBTEX_COMPILER_ARGS})
|
set(bib_compiler_flags ${BIBTEX_COMPILER_ARGS})
|
||||||
endif()
|
endif()
|
||||||
if(LATEX_MULTIBIB_NEWCITES)
|
if(LATEX_MULTIBIB_NEWCITES)
|
||||||
|
# Suppressed bib output currently not supported for multibib
|
||||||
foreach (multibib_auxfile ${LATEX_MULTIBIB_NEWCITES})
|
foreach (multibib_auxfile ${LATEX_MULTIBIB_NEWCITES})
|
||||||
latex_get_filename_component(multibib_target ${multibib_auxfile} NAME_WE)
|
latex_get_filename_component(multibib_target ${multibib_auxfile} NAME_WE)
|
||||||
set(make_dvi_command ${make_dvi_command}
|
set(make_dvi_command ${make_dvi_command}
|
||||||
|
|
@ -1437,12 +1723,25 @@ function(add_latex_targets_internal)
|
||||||
${output_dir}/${multibib_target}.aux)
|
${output_dir}/${multibib_target}.aux)
|
||||||
endforeach (multibib_auxfile ${LATEX_MULTIBIB_NEWCITES})
|
endforeach (multibib_auxfile ${LATEX_MULTIBIB_NEWCITES})
|
||||||
else()
|
else()
|
||||||
|
set(full_bib_command
|
||||||
|
${bib_compiler} ${bib_compiler_flags} ${LATEX_TARGET})
|
||||||
|
if(suppress_bib_output)
|
||||||
|
set(full_bib_command
|
||||||
|
${CMAKE_COMMAND}
|
||||||
|
-D LATEX_BUILD_COMMAND=execute_latex
|
||||||
|
-D LATEX_WORKING_DIRECTORY="${output_dir}"
|
||||||
|
-D LATEX_FULL_COMMAND="${full_bib_command}"
|
||||||
|
-D LATEX_OUTPUT_FILE="${LATEX_TARGET}.bbl"
|
||||||
|
-D LATEX_LOG_FILE="${LATEX_TARGET}.blg"
|
||||||
|
-P "${LATEX_USE_LATEX_LOCATION}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
set(make_dvi_command ${make_dvi_command}
|
set(make_dvi_command ${make_dvi_command}
|
||||||
COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
|
COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
|
||||||
${bib_compiler} ${bib_compiler_flags} ${LATEX_TARGET})
|
${full_bib_command})
|
||||||
set(make_pdf_command ${make_pdf_command}
|
set(make_pdf_command ${make_pdf_command}
|
||||||
COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
|
COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
|
||||||
${bib_compiler} ${bib_compiler_flags} ${LATEX_TARGET})
|
${full_bib_command})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
foreach (bibfile ${LATEX_BIBFILES})
|
foreach (bibfile ${LATEX_BIBFILES})
|
||||||
|
|
@ -1712,6 +2011,11 @@ function(add_latex_document latex_main_input)
|
||||||
latex_copy_input_file(${bib_file})
|
latex_copy_input_file(${bib_file})
|
||||||
endforeach (bib_file)
|
endforeach (bib_file)
|
||||||
|
|
||||||
|
if (LATEX_USE_BIBLATEX AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/biblatex.cfg)
|
||||||
|
latex_copy_input_file(biblatex.cfg)
|
||||||
|
set(LATEX_USE_BIBLATEX_CONFIG TRUE)
|
||||||
|
endif()
|
||||||
|
|
||||||
foreach (input ${LATEX_INPUTS})
|
foreach (input ${LATEX_INPUTS})
|
||||||
latex_copy_input_file(${input})
|
latex_copy_input_file(${input})
|
||||||
endforeach(input)
|
endforeach(input)
|
||||||
|
|
@ -1734,6 +2038,11 @@ endfunction(add_latex_document)
|
||||||
if(LATEX_BUILD_COMMAND)
|
if(LATEX_BUILD_COMMAND)
|
||||||
set(command_handled)
|
set(command_handled)
|
||||||
|
|
||||||
|
if("${LATEX_BUILD_COMMAND}" STREQUAL execute_latex)
|
||||||
|
latex_execute_latex()
|
||||||
|
set(command_handled TRUE)
|
||||||
|
endif()
|
||||||
|
|
||||||
if("${LATEX_BUILD_COMMAND}" STREQUAL makeglossaries)
|
if("${LATEX_BUILD_COMMAND}" STREQUAL makeglossaries)
|
||||||
latex_makeglossaries()
|
latex_makeglossaries()
|
||||||
set(command_handled TRUE)
|
set(command_handled TRUE)
|
||||||
|
|
|
||||||
BIN
UseLATEX.pdf
Normal file
BIN
UseLATEX.pdf
Normal file
Binary file not shown.
45
UseLATEX.tex
45
UseLATEX.tex
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
\documentclass{article}
|
\documentclass{article}
|
||||||
|
|
||||||
\newcommand{\UseLATEXVersion}{2.4.0}
|
\newcommand{\UseLATEXVersion}{2.7.0}
|
||||||
\newcommand{\SANDNumber}{SAND 2008-2743P}
|
\newcommand{\SANDNumber}{SAND 2008-2743P}
|
||||||
|
|
||||||
% This wonderful package allows hyphenation in tt fonts and hyphenation of
|
% This wonderful package allows hyphenation in tt fonts and hyphenation of
|
||||||
|
|
@ -88,6 +88,8 @@
|
||||||
\item Automatically finds png, jpeg, eps, pdf, svg, tiff, gif, bmp, and
|
\item Automatically finds png, jpeg, eps, pdf, svg, tiff, gif, bmp, and
|
||||||
other image files and converts them to formats \textprog{latex} and
|
other image files and converts them to formats \textprog{latex} and
|
||||||
\textprog{pdflatex} understand.
|
\textprog{pdflatex} understand.
|
||||||
|
\item Reduces \latex's overly verbose output and searches for messages
|
||||||
|
that are more likely to require attention.
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
%-----------------------------------------------------------------------------
|
%-----------------------------------------------------------------------------
|
||||||
|
|
@ -734,11 +736,8 @@ add_latex_document(doc.tex TARGET_NAME MyDoc1)
|
||||||
creating input files. Input \latex files might be auto-generated by any
|
creating input files. Input \latex files might be auto-generated by any
|
||||||
number of other mechanisms.
|
number of other mechanisms.
|
||||||
|
|
||||||
If this is the case, simply add the appropriate CMake commands to
|
If this is the case, simply add the appropriate CMake commands to generate the input files, and then add that file to the \textcmake{DEPENDS} option of \ald.
|
||||||
generate the input files, and then add that file to the DEPENDS option of
|
To help you build the CMake commands to place the generated files in the correct place, you can use the LATEX\_GET\_OUTPUT\_PATH convenience function to get the output path.
|
||||||
\ald. To help you build the CMake commands to place the generated files
|
|
||||||
in the correct place, you can use the LATEX\_GET\_OUTPUT\_PATH convenience
|
|
||||||
function to get the output path.
|
|
||||||
|
|
||||||
\begin{CodeListing}
|
\begin{CodeListing}
|
||||||
latex_get_output_path(output_dir)
|
latex_get_output_path(output_dir)
|
||||||
|
|
@ -751,6 +750,33 @@ add_custom_command(OUTPUT ${output_dir}/generated_file.tex
|
||||||
add_latex_document(MyDoc.tex DEPENDS generated_file.tex)
|
add_latex_document(MyDoc.tex DEPENDS generated_file.tex)
|
||||||
\end{CodeListing}
|
\end{CodeListing}
|
||||||
|
|
||||||
|
\subsection{Adding Include Directories}
|
||||||
|
\label{sec:AddingIncludeDirectories}
|
||||||
|
|
||||||
|
It is usually best practice to collect \latex input files in a single directory with a logical set of subdirectories, which can be referenced within the \latex document using relative paths.
|
||||||
|
However, it is sometimes convenient to search for files in directories other than the build directory.
|
||||||
|
|
||||||
|
For example, let us say that we have two reports that you want to combine into a single combined report.
|
||||||
|
For any number of technical reasons, it could be desirable to place the two original reports untouched in subdirectories and have the tex file for the combine report in the main directory and including the sub-reports.
|
||||||
|
However, if those sub-reports are including files that are relative to their respective subdirectories, for example including images for figures, then \latex will produce an error because it will be looking for those files in the main directory.
|
||||||
|
|
||||||
|
We can get around this problem by using the \textcmake{INCLUDE\_DIRECTORIES} option to \ald.
|
||||||
|
Simply add the subdirectories to the \textcmake{INCLUDE\_DIRECTORIES} list and \latex will look for included files locally in those directories.
|
||||||
|
Here is an example of how that might look to include image files.
|
||||||
|
|
||||||
|
\begin{CodeListing}
|
||||||
|
add_latex_document(UberReport.tex
|
||||||
|
INPUTS report1/Report1.tex report2/Report2.tex
|
||||||
|
IMAGE_DIRS report1/images report2/images
|
||||||
|
INCLUDE_DIRECTORIES report1 report2
|
||||||
|
)
|
||||||
|
\end{CodeListing}
|
||||||
|
|
||||||
|
Note that the \textcmake{INCLUDE\_DIRECTORIES} option should be used with care.
|
||||||
|
If a file with the same name exists in multiple included directories, \latex might not pick up the file you are expecting.
|
||||||
|
(\latex will first look in the build directory, then the directories listed in \textcmake{INCLUDE\_DIRECTORIES} in the order given, and then system directories.)
|
||||||
|
Thus, in the previous example if both reports had image files with the same name, the second report will likely include images from the first report.
|
||||||
|
|
||||||
%-----------------------------------------------------------------------------
|
%-----------------------------------------------------------------------------
|
||||||
|
|
||||||
\section{Frequently Asked Questions}
|
\section{Frequently Asked Questions}
|
||||||
|
|
@ -1082,8 +1108,8 @@ include(UseLATEX.cmake)
|
||||||
|
|
||||||
\begin{CodeListing}
|
\begin{CodeListing}
|
||||||
Some LaTeX distributions have problems with image file names
|
Some LaTeX distributions have problems with image file names
|
||||||
with multiple extensions. Consider changing my.image.pdf to
|
with multiple extensions or spaces. Consider changing
|
||||||
something like my-image.pdf.
|
my.image.pdf to something like my-image.pdf.
|
||||||
\end{CodeListing}
|
\end{CodeListing}
|
||||||
|
|
||||||
This is because, just as the warning reports, some versions of \latex
|
This is because, just as the warning reports, some versions of \latex
|
||||||
|
|
@ -1270,9 +1296,12 @@ something like my-image.pdf.
|
||||||
\item[Matthias Bach] Instructions for using \lualatex.
|
\item[Matthias Bach] Instructions for using \lualatex.
|
||||||
\item[Martin Baute] Check for Windows version of convert being used
|
\item[Martin Baute] Check for Windows version of convert being used
|
||||||
instead of ImageMagick's version.
|
instead of ImageMagick's version.
|
||||||
|
\item[Izaak Beekman]
|
||||||
|
Help in fixing the order of arguments for \textcmakevar{LATEX\_SMALL\_IMAGES} with Imagemagick 7.0.
|
||||||
\item[Arnout Boelens] Example of using gri in conjunction with \latex.
|
\item[Arnout Boelens] Example of using gri in conjunction with \latex.
|
||||||
\item[Mark de Wever] Fixes for interactions between the
|
\item[Mark de Wever] Fixes for interactions between the
|
||||||
\textprog{makeglossaries} and \bibtex commands.
|
\textprog{makeglossaries} and \bibtex commands.
|
||||||
|
\item[Eric D\"{o}nges] Support for include directories.
|
||||||
\item[Alin Elena] Suggestions on removing dependence on makeglossaries
|
\item[Alin Elena] Suggestions on removing dependence on makeglossaries
|
||||||
command.
|
command.
|
||||||
\item[Myles English] Support for the \textlatexpackage{nomencl} package.
|
\item[Myles English] Support for the \textlatexpackage{nomencl} package.
|
||||||
|
|
|
||||||
183
scripts/release-version.sh
Executable file
183
scripts/release-version.sh
Executable file
|
|
@ -0,0 +1,183 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Checks to make sure that the version number is consistent across all
|
||||||
|
# files, then issues the git commands to tag the version.
|
||||||
|
|
||||||
|
# A simple function to ask the user if they want to continue.
|
||||||
|
function ask_keep_going {
|
||||||
|
read -ep "Are you sure you want to continue? [y/N] " keep_going
|
||||||
|
if [ "$keep_going" != "y" -a "$keep_going" != "Y" ]
|
||||||
|
then
|
||||||
|
echo "Aborting"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
# Run in repo base directory
|
||||||
|
cd `dirname $0`/..
|
||||||
|
|
||||||
|
echo "Fetching origin..."
|
||||||
|
git fetch origin
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Extract the version number from UseLATEX.cmake
|
||||||
|
version_line=`head -n 3 UseLATEX.cmake | tail -n 1`
|
||||||
|
|
||||||
|
version=`echo $version_line | sed -n 's/# Version: \([0-9]*\.[0-9]*\.[0-9]*\)/\1/p'`
|
||||||
|
|
||||||
|
if [ -z $version ]
|
||||||
|
then
|
||||||
|
echo "Could not extract version number from UseLATEX.cmake."
|
||||||
|
echo "The third line should be of the form '# Version: X.X.X'."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Found version $version in UseLATEX.cmake"
|
||||||
|
echo
|
||||||
|
|
||||||
|
echo -n "Checking for $version in UseLATEX.tex..."
|
||||||
|
if fgrep -q '\newcommand{\UseLATEXVersion}{'$version'}' UseLATEX.tex
|
||||||
|
then
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAIL"
|
||||||
|
echo
|
||||||
|
echo "Could not find $version in UseLATEX.tex."
|
||||||
|
echo "There should be a line in UseLATEX.tex like the following:"
|
||||||
|
echo ' \newcommand{\UseLATEXVersion}{'$version'}'
|
||||||
|
echo "Add it."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -n "Checking for $version in UseLATEX.pdf..."
|
||||||
|
if pdftotext UseLATEX.pdf - | grep -q 'Version *'$version
|
||||||
|
then
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAIL"
|
||||||
|
echo
|
||||||
|
echo "Could not find $version in UseLATEX.pdf (using pdftotext)."
|
||||||
|
echo "Rebuild the pdf documentation and copy it to the working repo."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
git_version_tag="Version$version"
|
||||||
|
echo -n "Checking for git tag $git_version_tag..."
|
||||||
|
if git rev-list $git_version_tag.. > /dev/null 2>&1
|
||||||
|
then
|
||||||
|
echo "FAIL"
|
||||||
|
echo
|
||||||
|
echo "Version tag $git_version_tag already exists in git repository."
|
||||||
|
echo "Either change the version in UseLATEX.cmake or remove the version"
|
||||||
|
echo "tag (with 'git tag -d $git_version_tag')."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "OK"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -n "Checking for tabs in UseLATEX.cmake..."
|
||||||
|
if fgrep -q "$(printf '\t')" UseLATEX.cmake
|
||||||
|
then
|
||||||
|
echo "FAIL"
|
||||||
|
echo
|
||||||
|
echo "Tab characters were found in UseLATEX.cmake. For consistent style"
|
||||||
|
echo "replace all tab characters with spaces to the desired column."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "OK"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -n "Extracting notes for $version..."
|
||||||
|
version_notes=`sed -n "/# $version/,/# [0-9]/{
|
||||||
|
s/^# $version *//
|
||||||
|
/^# [0-9]/d
|
||||||
|
s/^# *//
|
||||||
|
p
|
||||||
|
}" UseLATEX.cmake`
|
||||||
|
if [ \( $? -eq 0 \) -a \( -n "$version_notes" \) ]
|
||||||
|
then
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAIL"
|
||||||
|
echo
|
||||||
|
echo "Could not find the notes for this release in the History list."
|
||||||
|
echo "Make sure an item has been added to the release history."
|
||||||
|
ask_keep_going
|
||||||
|
fi
|
||||||
|
version_notes="
|
||||||
|
$version_notes"
|
||||||
|
|
||||||
|
echo -n "Checking that the working directory is clean..."
|
||||||
|
if [ -z "`git status --porcelain`" ]
|
||||||
|
then
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAIL"
|
||||||
|
echo
|
||||||
|
echo "There are uncommitted changes to your repository. Make sure that the"
|
||||||
|
echo "working directory is clean before running this script."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -n "Checking that we are on the master branch..."
|
||||||
|
if [ "`git rev-parse --abbrev-ref HEAD`" = "master" ]
|
||||||
|
then
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAIL"
|
||||||
|
echo
|
||||||
|
echo "Not currently on the master branch."
|
||||||
|
ask_keep_going
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -n "Checking that we are up to date on master..."
|
||||||
|
if git merge-base --is-ancestor origin/master HEAD
|
||||||
|
then
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAIL"
|
||||||
|
echo
|
||||||
|
echo "The local repository does not have the latest version from the"
|
||||||
|
echo "central repository. This is OK if you are retroactively tagging"
|
||||||
|
echo "a version but might be in error if you are tagging new changes."
|
||||||
|
ask_keep_going
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -n "Checking that master is up to date on origin..."
|
||||||
|
if git merge-base --is-ancestor HEAD origin/master
|
||||||
|
then
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAIL"
|
||||||
|
echo
|
||||||
|
echo "Your latest changes do not appear to be in the central repository."
|
||||||
|
echo "It is recommended to update the remote repository before tagging"
|
||||||
|
echo "a version."
|
||||||
|
ask_keep_going
|
||||||
|
fi
|
||||||
|
|
||||||
|
# We are finished with all the checks. Do the tag.
|
||||||
|
echo -n "Tagging with $git_version_tag..."
|
||||||
|
if git tag --annotate --edit --message="UseLATEX.cmake Release $version
|
||||||
|
$version_notes
|
||||||
|
|
||||||
|
# Write a message for tag:
|
||||||
|
# $git_version_tag
|
||||||
|
# Lines starting with '#' will be ignored.
|
||||||
|
" $git_version_tag
|
||||||
|
then
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAIL"
|
||||||
|
echo
|
||||||
|
echo "Could not tag repository for some reason."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Finished tagging to version $version."
|
||||||
|
echo "To push the tags to the remote repository, execute"
|
||||||
|
echo
|
||||||
|
echo " git push --tags"
|
||||||
|
echo
|
||||||
|
|
@ -4,7 +4,7 @@ project(DefaultTargets NONE)
|
||||||
|
|
||||||
include(../../UseLATEX.cmake)
|
include(../../UseLATEX.cmake)
|
||||||
|
|
||||||
add_latex_document(DefaultDvi.tex FORCE_DVI)
|
add_latex_document(DefaultDvi.tex IMAGE_DIRS images FORCE_DVI)
|
||||||
add_latex_document(DefaultPdf.tex FORCE_PDF)
|
add_latex_document(DefaultPdf.tex IMAGE_DIRS images FORCE_PDF)
|
||||||
add_latex_document(DefaultHtml.tex FORCE_HTML)
|
add_latex_document(DefaultHtml.tex IMAGE_DIRS images FORCE_HTML)
|
||||||
add_latex_document(NoDefault.tex EXCLUDE_FROM_ALL)
|
add_latex_document(NoDefault.tex IMAGE_DIRS images EXCLUDE_FROM_ALL)
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,15 @@
|
||||||
\documentclass{article}
|
\documentclass{article}
|
||||||
|
|
||||||
|
\usepackage{graphicx}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
|
||||||
\Large
|
\Large
|
||||||
\noindent
|
\noindent
|
||||||
This document builds \textbf{\Huge dvi} by default.
|
This document builds \textbf{\Huge dvi} by default.
|
||||||
|
|
||||||
|
\includegraphics[width=2in]{images/Circles_pdf}
|
||||||
|
\includegraphics[width=2in]{images/Circles_eps}
|
||||||
|
\includegraphics[width=2in]{images/Cool2WarmBar}
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,15 @@
|
||||||
\documentclass{article}
|
\documentclass{article}
|
||||||
|
|
||||||
|
\usepackage{graphicx}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
|
||||||
\Large
|
\Large
|
||||||
\noindent
|
\noindent
|
||||||
This document builds \textbf{\Huge html} by default.
|
This document builds \textbf{\Huge html} by default.
|
||||||
|
|
||||||
|
\includegraphics[width=2in]{images/Circles_pdf}
|
||||||
|
\includegraphics[width=2in]{images/Circles_eps}
|
||||||
|
\includegraphics[width=2in]{images/Cool2WarmBar}
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,15 @@
|
||||||
\documentclass{article}
|
\documentclass{article}
|
||||||
|
|
||||||
|
\usepackage{graphicx}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
|
||||||
\Large
|
\Large
|
||||||
\noindent
|
\noindent
|
||||||
This document builds \textbf{\Huge pdf} by default.
|
This document builds \textbf{\Huge pdf} by default.
|
||||||
|
|
||||||
|
\includegraphics[width=2in]{images/Circles_pdf}
|
||||||
|
\includegraphics[width=2in]{images/Circles_eps}
|
||||||
|
\includegraphics[width=2in]{images/Cool2WarmBar}
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,15 @@
|
||||||
\documentclass{article}
|
\documentclass{article}
|
||||||
|
|
||||||
|
\usepackage{graphicx}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
|
||||||
\Large
|
\Large
|
||||||
\noindent
|
\noindent
|
||||||
This document should \emph{\Huge not} be built by default.
|
This document should \emph{\Huge not} be built by default.
|
||||||
|
|
||||||
|
\includegraphics[width=2in]{images/Circles_pdf}
|
||||||
|
\includegraphics[width=2in]{images/Circles_eps}
|
||||||
|
\includegraphics[width=2in]{images/Cool2WarmBar}
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|
|
||||||
BIN
tests/DefaultTargets/images/Circles_eps.eps
Normal file
BIN
tests/DefaultTargets/images/Circles_eps.eps
Normal file
Binary file not shown.
214
tests/DefaultTargets/images/Circles_pdf.pdf
Normal file
214
tests/DefaultTargets/images/Circles_pdf.pdf
Normal file
File diff suppressed because one or more lines are too long
BIN
tests/DefaultTargets/images/Cool2WarmBar.png
Normal file
BIN
tests/DefaultTargets/images/Cool2WarmBar.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
8
tests/File Name Spaces/CMakeLists.txt
Normal file
8
tests/File Name Spaces/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
cmake_minimum_required(VERSION 2.8.4)
|
||||||
|
|
||||||
|
project(FileNameSpaces NONE)
|
||||||
|
|
||||||
|
include(../../UseLATEX.cmake)
|
||||||
|
|
||||||
|
add_latex_document("My Document.tex"
|
||||||
|
)
|
||||||
9
tests/File Name Spaces/My Document.tex
Normal file
9
tests/File Name Spaces/My Document.tex
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
\documentclass{article}
|
||||||
|
|
||||||
|
\usepackage{graphicx}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
This is some text.
|
||||||
|
|
||||||
|
\end{document}
|
||||||
4
tests/File Name Spaces/README
Normal file
4
tests/File Name Spaces/README
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
This test checks to make sure there are no problems with compiling a LaTeX
|
||||||
|
file in a directory with spaces in the name or a file with spaces in the
|
||||||
|
name. LaTeX itself is pretty intolerant about including files with spaces
|
||||||
|
in the name, but our CMake code should not be.
|
||||||
15
tests/FindWarnings/CMakeLists.txt
Normal file
15
tests/FindWarnings/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
cmake_minimum_required(VERSION 2.8.4)
|
||||||
|
|
||||||
|
project(FindWarnings NONE)
|
||||||
|
|
||||||
|
include(../../UseLATEX.cmake)
|
||||||
|
|
||||||
|
add_latex_document(UndefinedReference.tex)
|
||||||
|
|
||||||
|
add_latex_document(UndefinedReferenceLong.tex)
|
||||||
|
|
||||||
|
add_latex_document(Natbib.tex)
|
||||||
|
|
||||||
|
add_latex_document(Overfull.tex)
|
||||||
|
|
||||||
|
add_latex_document(DuplicateLabel.tex)
|
||||||
9
tests/FindWarnings/DuplicateLabel.tex
Normal file
9
tests/FindWarnings/DuplicateLabel.tex
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
\documentclass{article}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
Define the label once. \label{DefinedTwice}
|
||||||
|
|
||||||
|
Define the label again. \label{DefinedTwice}
|
||||||
|
|
||||||
|
\end{document}
|
||||||
9
tests/FindWarnings/Natbib.tex
Normal file
9
tests/FindWarnings/Natbib.tex
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
\documentclass{article}
|
||||||
|
|
||||||
|
\usepackage{natbib}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
This is an undefined citation: \cite{NoSuchCite}.
|
||||||
|
|
||||||
|
\end{document}
|
||||||
7
tests/FindWarnings/Overfull.tex
Normal file
7
tests/FindWarnings/Overfull.tex
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
\documentclass{article}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
This is an overfull box: \framebox[14in]{Box too big.}
|
||||||
|
|
||||||
|
\end{document}
|
||||||
4
tests/FindWarnings/README
Normal file
4
tests/FindWarnings/README
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
This test exercises the ability for UseLATEX.cmake to make sure that
|
||||||
|
important warnings from LaTeX are printed (whereas unimportant are
|
||||||
|
suppressed). Each of the documents should compile successfully, but they
|
||||||
|
all have a warning that should be reported clearly in the build.
|
||||||
7
tests/FindWarnings/UndefinedReference.tex
Normal file
7
tests/FindWarnings/UndefinedReference.tex
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
\documentclass{article}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
This is an undefined reference: \ref{sec:DoesNotExist}.
|
||||||
|
|
||||||
|
\end{document}
|
||||||
7
tests/FindWarnings/UndefinedReferenceLong.tex
Normal file
7
tests/FindWarnings/UndefinedReferenceLong.tex
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
\documentclass{article}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
This is an undefined reference: \ref{sec:AVeryLongReferenceNameThatCausesTheWarningLineToBreakAcrossLines}.
|
||||||
|
|
||||||
|
\end{document}
|
||||||
16
tests/IncludeDirectories/CMakeLists.txt
Normal file
16
tests/IncludeDirectories/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
cmake_minimum_required(VERSION 2.8.4)
|
||||||
|
|
||||||
|
project(IncludeDirectory NONE)
|
||||||
|
|
||||||
|
include(../../UseLATEX.cmake)
|
||||||
|
|
||||||
|
set(UseLATEX_TEST_NAME "adding include directories")
|
||||||
|
|
||||||
|
add_latex_document(IncludeStuff.tex
|
||||||
|
INPUTS CopiedInput.tex copied-subdir/CopiedInSubdir.tex
|
||||||
|
INCLUDE_DIRECTORIES
|
||||||
|
copied-subdir
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/uncopied-subdir
|
||||||
|
CONFIGURE IncludeStuff.tex CopiedInput.tex copied-subdir/CopiedInSubdir.tex
|
||||||
|
)
|
||||||
4
tests/IncludeDirectories/CopiedInput.tex
Normal file
4
tests/IncludeDirectories/CopiedInput.tex
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
% -*- latex -*-
|
||||||
|
|
||||||
|
% This should only compile if working with the "copied" version of the latex file.
|
||||||
|
This is a copied input for @UseLATEX_TEST_NAME@.
|
||||||
22
tests/IncludeDirectories/IncludeStuff.tex
Normal file
22
tests/IncludeDirectories/IncludeStuff.tex
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
% -*- latex -*-
|
||||||
|
|
||||||
|
\documentclass{article}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
% Make a line that will get a parse error if this file is not configured. This makes sure that the configured file is read first.
|
||||||
|
Running tests for @UseLATEX_TEST_NAME@.
|
||||||
|
|
||||||
|
Included from CopiedInput:
|
||||||
|
\input{CopiedInput}
|
||||||
|
|
||||||
|
Included from copied-subdir/CopiedInSubdir:
|
||||||
|
\input{CopiedInSubdir}
|
||||||
|
|
||||||
|
Included from source dir:
|
||||||
|
\input{UncopiedInput}
|
||||||
|
|
||||||
|
Included from source subdirectory:
|
||||||
|
\input{UncopiedInSubdir}
|
||||||
|
|
||||||
|
\end{document}
|
||||||
3
tests/IncludeDirectories/README
Normal file
3
tests/IncludeDirectories/README
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
This test makes sure that the INCLUDE_DIRECTORIES option works correctly.
|
||||||
|
It tests to make sure that it works against directories that are copied to
|
||||||
|
the build directory and those that remain in the source directory.
|
||||||
3
tests/IncludeDirectories/UncopiedInput.tex
Normal file
3
tests/IncludeDirectories/UncopiedInput.tex
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
% -*- latex -*-
|
||||||
|
|
||||||
|
This comes from a file in the source directory.
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
% -*- latex -*-
|
||||||
|
|
||||||
|
% This should only compile if working with the "copied" version of the latex file.
|
||||||
|
This is a copied input for @UseLATEX_TEST_NAME@.
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
% -*- latex -*-
|
||||||
|
|
||||||
|
This comes from a file in a source subdirectory.
|
||||||
|
|
@ -4,6 +4,7 @@ creates them in separate subdirectories, with each subdirectory
|
||||||
independently loading UseLATEX.cmake. This is typical in a large project
|
independently loading UseLATEX.cmake. This is typical in a large project
|
||||||
that might bring in several subprojects.
|
that might bring in several subprojects.
|
||||||
|
|
||||||
When running this project, two documents should be built. You should not
|
When running this project, 3 documents should be built, one in each
|
||||||
get errors or warnings about a target being defined multiple times. You
|
subdirectory. You should not get errors or warnings about a target being
|
||||||
should be able to build using the pdf, dvi, ps, and safepdf targets.
|
defined multiple times. You should be able to build using the pdf, dvi, ps,
|
||||||
|
and safepdf targets.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue