diff --git a/README b/README deleted file mode 100644 index 308cb43..0000000 --- a/README +++ /dev/null @@ -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 - - diff --git a/README.md b/README.md new file mode 100644 index 0000000..48e2a74 --- /dev/null +++ b/README.md @@ -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).) diff --git a/UseLATEX.cmake b/UseLATEX.cmake index 76dce61..bb1fd9e 100644 --- a/UseLATEX.cmake +++ b/UseLATEX.cmake @@ -1,6 +1,6 @@ # File: UseLATEX.cmake # CMAKE commands to actually use the LaTeX compiler -# Version: 2.4.7 +# Version: 2.7.0 # Author: Kenneth Moreland # # Copyright 2004, 2015 Sandia Corporation. @@ -42,17 +42,18 @@ # add_latex_document( # [BIBFILES ] # [INPUTS ] -# [IMAGE_DIRS] -# [IMAGES] -# [CONFIGURE] -# [DEPENDS] -# [MULTIBIB_NEWCITES] +# [IMAGE_DIRS ] +# [IMAGES ] +# [CONFIGURE ] +# [DEPENDS ] +# [MULTIBIB_NEWCITES ] # [USE_BIBLATEX] # [USE_INDEX] # [INDEX_NAMES ] # [USE_GLOSSARY] [USE_NOMENCL] # [FORCE_PDF] [FORCE_DVI] [FORCE_HTML] -# [TARGET_NAME] +# [TARGET_NAME ] +# [INCLUDE_DIRECTORIES ] # [EXCLUDE_FROM_ALL] # [EXCLUDE_FROM_DEFAULTS]) # Adds targets that compile . The latex output is placed @@ -113,8 +114,34 @@ # support the extra auxiliary files created with the \newcite command # 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: # +# 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. # @@ -427,10 +454,6 @@ endfunction(latex_get_filename_component) # Functions that perform processing during a LaTeX build. ############################################################################# function(latex_execute_latex) - if(NOT LATEX_TARGET) - message(SEND_ERROR "Need to define LATEX_TARGET") - endif() - if(NOT LATEX_WORKING_DIRECTORY) message(SEND_ERROR "Need to define LATEX_WORKING_DIRECTORY") endif() @@ -443,6 +466,10 @@ function(latex_execute_latex) 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 @@ -468,6 +495,8 @@ function(latex_execute_latex) 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) @@ -478,10 +507,9 @@ function(latex_execute_latex) message("\n\nLaTeX command failed") message("${full_command_original}") message("Log output:") - file(READ "${LATEX_WORKING_DIRECTORY}/${LATEX_TARGET}.log" log_output) + file(READ "${LATEX_WORKING_DIRECTORY}/${LATEX_LOG_FILE}" log_output) message("${log_output}") - message(FATAL_ERROR - "Successfully executed LaTeX, but LaTeX returned an error.") + message(FATAL_ERROR "Executed LaTeX, but LaTeX returned an error.") endif() endfunction(latex_execute_latex) @@ -680,6 +708,8 @@ function(latex_correct_synctex) if(NOT LATEX_BINARY_DIRECTORY) message(SEND_ERROR "Need to define LATEX_BINARY_DIRECTORY") endif() + message("${LATEX_BINARY_DIRECTORY}") + message("${LATEX_SOURCE_DIRECTORY}") set(synctex_file ${LATEX_BINARY_DIRECTORY}/${LATEX_TARGET}.synctex) set(synctex_file_gz ${synctex_file}.gz) @@ -697,13 +727,24 @@ function(latex_correct_synctex) message("Reading synctex file.") file(READ ${synctex_file} synctex_data) - message("Replacing relative with absolute paths.") - string(REGEX REPLACE - "(Input:[0-9]+:)([^/\n][^\n]*)" - "\\1${LATEX_SOURCE_DIRECTORY}/\\2" - synctex_data - "${synctex_data}" - ) + message("Replacing output paths with input paths.") + foreach(extension tex cls bst clo sty ist fd) + # Relative paths + string(REGEX REPLACE + "(Input:[0-9]+:)([^/\n][^\n]\\.${extension}*)" + "\\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.") file(WRITE ${synctex_file} "${synctex_data}") @@ -722,6 +763,39 @@ function(latex_correct_synctex) endfunction(latex_correct_synctex) 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) message("\nChecking ${log_file} for important warnings.") @@ -738,15 +812,15 @@ function(latex_check_important_warnings) file(READ ${log_file} log) - # Check for undefined references + # Check for declared LaTeX warnings string(REGEX MATCHALL - "\n[^\n]*Reference[^\n]*undefined[^\n]*" - reference_warnings + "\nLaTeX Warning:[^\n]*" + latex_warnings "${log}") - if(reference_warnings) + if(latex_warnings) set(found_error TRUE) - message("\nFound missing reference warnings.") - foreach(warning ${reference_warnings}) + message("\nFound declared LaTeX warnings.") + foreach(warning ${latex_warnings}) string(STRIP "${warning}" warning_no_newline) message("${warning_no_newline}") endforeach(warning) @@ -1244,19 +1318,23 @@ function(latex_process_images dvi_outputs_var pdf_outputs_var) make_directory("${path}") # Do conversions for dvi. - latex_convert_image(output_files "${file}" .eps "${convert_flags}" - "${LATEX_DVI_IMAGE_EXTENSIONS}" "${ARGN}") - list(APPEND dvi_outputs ${output_files}) + if(NOT LATEX_FORCE_PDF) + latex_convert_image(output_files "${file}" .eps "${convert_flags}" + "${LATEX_DVI_IMAGE_EXTENSIONS}" "${ARGN}") + list(APPEND dvi_outputs ${output_files}) + endif () # Do conversions for pdf. - if(is_raster) - latex_convert_image(output_files "${file}" .png "${convert_flags}" - "${LATEX_PDF_IMAGE_EXTENSIONS}" "${ARGN}") - list(APPEND pdf_outputs ${output_files}) - else() - latex_convert_image(output_files "${file}" .pdf "${convert_flags}" - "${LATEX_PDF_IMAGE_EXTENSIONS}" "${ARGN}") - list(APPEND pdf_outputs ${output_files}) + if(NOT LATEX_FORCE_DVI AND NOT LATEX_FORCE_HTML) + if(is_raster) + latex_convert_image(output_files "${file}" .png "${convert_flags}" + "${LATEX_PDF_IMAGE_EXTENSIONS}" "${ARGN}") + list(APPEND pdf_outputs ${output_files}) + else() + latex_convert_image(output_files "${file}" .pdf "${convert_flags}" + "${LATEX_PDF_IMAGE_EXTENSIONS}" "${ARGN}") + list(APPEND pdf_outputs ${output_files}) + endif() endif() else() message(WARNING "Could not find file ${CMAKE_CURRENT_SOURCE_DIR}/${file}. Are you sure you gave relative paths to IMAGES?") @@ -1354,6 +1432,7 @@ function(parse_add_latex_arguments command latex_main_input) CONFIGURE DEPENDS INDEX_NAMES + INCLUDE_DIRECTORIES ) cmake_parse_arguments( LATEX "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) @@ -1412,10 +1491,10 @@ function(add_latex_targets_internal) set(latex_build_command ${CMAKE_COMMAND} -D LATEX_BUILD_COMMAND=execute_latex - -D LATEX_TARGET=${LATEX_TARGET} -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() @@ -1428,14 +1507,39 @@ function(add_latex_targets_internal) set(pdflatex_build_command ${CMAKE_COMMAND} -D LATEX_BUILD_COMMAND=execute_latex - -D LATEX_TARGET=${LATEX_TARGET} -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 $ generator + # expression to make sure CMake treats it as a single string. + if(CMAKE_HOST_WIN32) + string(REPLACE ";" "$" 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) # Use the main filename (minus the .tex) as the target name. Remove any # spaces since CMake cannot have spaces in its target names. @@ -1583,17 +1687,30 @@ function(add_latex_targets_internal) endif() if(LATEX_BIBFILES) + set(suppress_bib_output) if(LATEX_USE_BIBLATEX) if(NOT BIBER_COMPILER) message(SEND_ERROR "I need the biber command.") endif() set(bib_compiler ${BIBER_COMPILER}) 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() set(bib_compiler ${BIBTEX_COMPILER}) set(bib_compiler_flags ${BIBTEX_COMPILER_ARGS}) endif() if(LATEX_MULTIBIB_NEWCITES) + # Suppressed bib output currently not supported for multibib foreach (multibib_auxfile ${LATEX_MULTIBIB_NEWCITES}) latex_get_filename_component(multibib_target ${multibib_auxfile} NAME_WE) set(make_dvi_command ${make_dvi_command} @@ -1606,12 +1723,25 @@ function(add_latex_targets_internal) ${output_dir}/${multibib_target}.aux) endforeach (multibib_auxfile ${LATEX_MULTIBIB_NEWCITES}) 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} COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir} - ${bib_compiler} ${bib_compiler_flags} ${LATEX_TARGET}) + ${full_bib_command}) set(make_pdf_command ${make_pdf_command} COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir} - ${bib_compiler} ${bib_compiler_flags} ${LATEX_TARGET}) + ${full_bib_command}) endif() foreach (bibfile ${LATEX_BIBFILES}) @@ -1881,6 +2011,11 @@ function(add_latex_document latex_main_input) latex_copy_input_file(${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}) latex_copy_input_file(${input}) endforeach(input) diff --git a/UseLATEX.pdf b/UseLATEX.pdf new file mode 100644 index 0000000..c9aeecd Binary files /dev/null and b/UseLATEX.pdf differ diff --git a/UseLATEX.tex b/UseLATEX.tex index e42889f..0cb1a7c 100644 --- a/UseLATEX.tex +++ b/UseLATEX.tex @@ -2,7 +2,7 @@ \documentclass{article} -\newcommand{\UseLATEXVersion}{2.4.7} +\newcommand{\UseLATEXVersion}{2.7.0} \newcommand{\SANDNumber}{SAND 2008-2743P} % 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 other image files and converts them to formats \textprog{latex} and \textprog{pdflatex} understand. + \item Reduces \latex's overly verbose output and searches for messages + that are more likely to require attention. \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 number of other mechanisms. - If this is the case, simply add the appropriate CMake commands to - generate the input files, and then add that file to the DEPENDS option of - \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. + 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. + 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} 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) \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} @@ -1275,6 +1301,7 @@ my.image.pdf to something like my-image.pdf. \item[Arnout Boelens] Example of using gri in conjunction with \latex. \item[Mark de Wever] Fixes for interactions between the \textprog{makeglossaries} and \bibtex commands. + \item[Eric D\"{o}nges] Support for include directories. \item[Alin Elena] Suggestions on removing dependence on makeglossaries command. \item[Myles English] Support for the \textlatexpackage{nomencl} package. diff --git a/scripts/release-version.sh b/scripts/release-version.sh new file mode 100755 index 0000000..6c0a13a --- /dev/null +++ b/scripts/release-version.sh @@ -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 diff --git a/tests/DefaultTargets/CMakeLists.txt b/tests/DefaultTargets/CMakeLists.txt index 04841d4..0362314 100644 --- a/tests/DefaultTargets/CMakeLists.txt +++ b/tests/DefaultTargets/CMakeLists.txt @@ -4,7 +4,7 @@ project(DefaultTargets NONE) include(../../UseLATEX.cmake) -add_latex_document(DefaultDvi.tex FORCE_DVI) -add_latex_document(DefaultPdf.tex FORCE_PDF) -add_latex_document(DefaultHtml.tex FORCE_HTML) -add_latex_document(NoDefault.tex EXCLUDE_FROM_ALL) +add_latex_document(DefaultDvi.tex IMAGE_DIRS images FORCE_DVI) +add_latex_document(DefaultPdf.tex IMAGE_DIRS images FORCE_PDF) +add_latex_document(DefaultHtml.tex IMAGE_DIRS images FORCE_HTML) +add_latex_document(NoDefault.tex IMAGE_DIRS images EXCLUDE_FROM_ALL) diff --git a/tests/DefaultTargets/DefaultDvi.tex b/tests/DefaultTargets/DefaultDvi.tex index 9aab353..52f692f 100644 --- a/tests/DefaultTargets/DefaultDvi.tex +++ b/tests/DefaultTargets/DefaultDvi.tex @@ -1,9 +1,15 @@ \documentclass{article} +\usepackage{graphicx} + \begin{document} \Large \noindent 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} diff --git a/tests/DefaultTargets/DefaultHtml.tex b/tests/DefaultTargets/DefaultHtml.tex index 052b7e4..2457da7 100644 --- a/tests/DefaultTargets/DefaultHtml.tex +++ b/tests/DefaultTargets/DefaultHtml.tex @@ -1,9 +1,15 @@ \documentclass{article} +\usepackage{graphicx} + \begin{document} \Large \noindent 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} diff --git a/tests/DefaultTargets/DefaultPdf.tex b/tests/DefaultTargets/DefaultPdf.tex index 7793399..0836e77 100644 --- a/tests/DefaultTargets/DefaultPdf.tex +++ b/tests/DefaultTargets/DefaultPdf.tex @@ -1,9 +1,15 @@ \documentclass{article} +\usepackage{graphicx} + \begin{document} \Large \noindent 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} diff --git a/tests/DefaultTargets/NoDefault.tex b/tests/DefaultTargets/NoDefault.tex index 5b9fd86..1c6a789 100644 --- a/tests/DefaultTargets/NoDefault.tex +++ b/tests/DefaultTargets/NoDefault.tex @@ -1,9 +1,15 @@ \documentclass{article} +\usepackage{graphicx} + \begin{document} \Large \noindent 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} diff --git a/tests/DefaultTargets/images/Circles_eps.eps b/tests/DefaultTargets/images/Circles_eps.eps new file mode 100644 index 0000000..18288e3 Binary files /dev/null and b/tests/DefaultTargets/images/Circles_eps.eps differ diff --git a/tests/DefaultTargets/images/Circles_pdf.pdf b/tests/DefaultTargets/images/Circles_pdf.pdf new file mode 100644 index 0000000..e2a6d77 --- /dev/null +++ b/tests/DefaultTargets/images/Circles_pdf.pdf @@ -0,0 +1,214 @@ +%PDF-1.5 % +1 0 obj <>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + Adobe Illustrator CC (Macintosh) + 2016-11-17T17:11:40-07:00 + 2016-11-17T17:11:40-07:00 + 2016-11-17T17:11:40-07:00 + + + + 256 + 156 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAnAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYqk3mPzj 5a8uQerrF/HbEiscJPKV/wDVjWrn50pleTNGHMufoey9RqjWKBl59B7zyeU+Yf8AnJBQXi8v6Xy7 LdXrUH/ImM/8b/RmBk7Q/mj5vaaL2F655/CP/FH9Tz/Vvzf/ADD1IsH1eS1jPSO0CwU+TIA/3tmJ LV5JdXptN7M6HFyxiR/per79vsYzeazq96Sby+uLkmtTNK8la9ftE5SZk8y7fFpcWP6Ixj7gAg8i 3q1veXds3K3nkhbxjZkPh2IwgkcmE8UZ/UAfeyDTPzL8+6aQbXXLogdEmf11/wCBm9QZbHUZByJd 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 + + + + 1 + False + False + + 5.027778 + 3.027778 + Inches + + + + Cyan + Magenta + Yellow + + + + + + Default Swatch Group + 0 + + + + application/pdf + + + Circles2 + + + proof:pdf + uuid:44a88084-8eab-bd43-b939-f3e88122727b + uuid:0e8fa934-0ba8-354d-b29c-89df65e519a9 + Adobe PDF library 11.00 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/Properties<>>>/Thumb 11 0 R/TrimBox[0.0 0.0 362.0 218.0]/Type/Page>> endobj 8 0 obj <>stream +HQK +1 ݿS-*\xaf#Zo $=RC:aюzksq'4Iu:_ UH_V ̰i,Mx:'9Ez-?|nq+[iH`/L endstream endobj 11 0 obj <>stream +8;Z]_YmCCQ$q/M.p0T/YA/u7N8V5kR"b.u)N9_p^5EF3/Yc@jE*^BRTGP\rUAN.KO,aqeHW\sj*Ye-h~> endstream endobj 12 0 obj [/Indexed/DeviceRGB 255 13 0 R] endobj 13 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 5 0 obj <> endobj 14 0 obj [/View/Design] endobj 15 0 obj <>>> endobj 10 0 obj <> endobj 9 0 obj <> endobj 16 0 obj <> endobj 17 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 17.0 %%AI8_CreatorVersion: 17.1.0 %%For: (kmorel) () %%Title: (Circles.svg) %%CreationDate: 11/17/16 5:11 PM %%Canvassize: 16383 %%BoundingBox: 52 36 414 254 %%HiResBoundingBox: 52 36 414 254 %%DocumentProcessColors: Cyan Magenta Yellow %AI5_FileFormat 13.0 %AI12_BuildNumber: 273 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 52 36 414 254 %AI3_TemplateBox: 233.5 144.5 233.5 144.5 %AI3_TileBox: -145 -143 589 433 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 0 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -303 529 1 1076 758 26 0 0 78 133 0 0 0 1 1 0 1 1 0 1 %AI5_OpenViewLayers: 7 %%PageOrigin:0 0 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 18 0 obj <>stream +%%BoundingBox: 52 36 414 254 %%HiResBoundingBox: 52 36 414 254 %AI7_Thumbnail: 128 80 8 %%BeginData: 19966 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD1EFFCAC3C3B6B5B0B5FCB5FCB5B0B5B5C3C3CACAFD21FFA97F55 %552B2B092B092B092B2B555585A9FD38FFCAC3B5B5FCFCFCB0FCB0FCB0FC %B0FCB0FD05FCB5B5C3CAFD1AFFA95B550909F9F9F909F909F909F909F909 %F9F9F90909555BFD33FFC3B5B5FCFCFCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCFCFCB5B5C3CAFD15FF7F55F909F909F92B0909F92B0909F92B09 %09F92B0909F909F90909557FFD2DFFCB9AB5FCFC8CB0FCB08CB0FCB08CB0 %FCB08CB0FCB08CB0FCB08CB0FCB08CFCFCB59ACAFD10FFA95B03F9F90903 %09F9090309F9090309F9090309F9090309F9090309F90903F9095BA9FD29 %FFC3B0B0FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5 %FCB5FCB5FCB0B0C3CAFD0DFF552BF92B092B092B092B092B092B092B092B %092B092B092B092B092B092B092B0909F92B5BFD26FFC3B5FCFCFCB0FCB0 %FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0 %FCB5C3FD0AFF7F0909F909F909F909F909F909F909F909F909F909F909F9 %09F909F909F909F909F909F909F909097FFD23FFBCFCFCB5FCB5FCB5FCB5 %FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5 %FCFCB5FD07FFA955F909F92B0909F92B0909F92B0909F92B0909F92B0909 %F92B0909F92B0909F92B0909F92B0909F909F955A9FD1FFFCA8CFCFCB08C %B0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FC %B08CB0FCB08CB0FCFC8CC4FD04FF7F090309F9090309F9090309F9090309 %F9090309F9090309F9090309F9090309F9090309F9090309F9090309F92B %7FFD1DFFC3FCB0B0B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCC3FFFF5B09F92B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B092B092BF9095BFD1BFFBCFCB0FCB0FCB0FCB0FCB0FCB0 %FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0 %FCB0FCB0FCB0FCBC3109F909F909F909F909F909F909F909F909F909F909 %F909F909F909F909F909F909F909F909F909F909F909F909F909F90955FD %19FFBCFCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB52309F92B0909F9 %2B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B09 %09F92B0909F92B0909F92B0909F90931FD17FFBCFCB08CB0FCB08CB0FCB0 %8CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0 %FCB08CB0FCB08CB0FCB02309F9090309F9090309F9090309F9090309F909 %0309F9090309F9090309F9090309F9090309F9090309F9090309F9090309 %F90903F92BFD15FFBCFCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB523 %09092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B092B092B092B092B092B092B092B092B090955FD13FFBC %FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0 %FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCFC2309F909F909F909F909 %F909F909F909F909F909F909F909F909F909F909F909F909F909F909F909 %F909F909F909F909F909F909F909F909F9F955FD11FFC4FCB0FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCFC46090909F92B0909F92B0909F92B0909F9 %2B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B09 %09F92B0909F92B0909F92B09097FFD0FFFCA8CB0FCB08CB0FCB08CB0FCB0 %8CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0 %FCB08CB0FCB08CFC6909F909F9090309F9090309F9090309F9090309F909 %0309F9090309F9090309F9090309F9090309F9090309F9090309F9090309 %F9090309F9090309F909A9FD0EFFB5B0B0B5FCB5FCB5FCB5FCB5FCB5FCB5 %FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5 %FCB5FCB5B02B092B092B092B092B092B092B092B092B092B092B092B092B %092B092B092B092B092B092B092B092B092B092B092B092B092B092B092B %092B092B092BF931FD0DFFBCFCFCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FC %B0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FC %B0FC4DF909F909F909F909F909F909F909F909F909F909F909F909F909F9 %09F909F909F909F909F909F909F909F909F909F909F909F909F909F909F9 %09F909F909F95BFD0BFFCAB0FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5 %FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5 %FC94F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909 %F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B %0909F92B0909F9A9FD0AFFB68CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0 %FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB0 %FCB024090309F9090309F9090309F9090309F9090309F9090309F9090309 %F9090309F9090309F9090309F9090309F9090309F9090309F9090309F909 %0309F9090309F9F92AFD09FFCAFCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB56A09092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B092B09097FFD08FFB5FCFCB0FCB0FCB0FCB0FCB0FCB0FC %B0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FC %B0FCB0FCB08C2BF909F909F909F909F909F909F909F909F909F909F909F9 %09F909F909F909F909F909F909F909F909F909F909F909F909F909F909F9 %09F909F909F909F909F909F909F931FD07FFC3B0FCB5FCB5FCB5FCB5FCB5 %FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5 %FCB5FCB5FCB5FCB5FC70092B0909F92B0909F92B0909F92B0909F92B0909 %F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B %0909F92B0909F92B0909F92B0909F92B0909F9A9FD06FFB58CB0FCB08CB0 %FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB0 %8CB0FCB08CB0FCB08CB0FCB0FCB003090309F9090309F9090309F9090309 %F9090309F9090309F9090309F9090309F9090309F9090309F9090309F909 %0309F9090309F9090309F9090309F9090309F9090309F9F92AFD05FFCAFC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB56A09092B092B092B092B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %09A9FD04FFBCFCFCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FC %B0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FC4EF909F9 %09F909F909F909F909F909F909F909F909F909F909F909F909F909F909F9 %09F909F909F909F909F909F909F909F909F909F909F909F909F909F909F9 %09F909F909F909F95BFD04FFB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB503090909F92B0909F92B0909F92B0909F92B0909F92B0909F92B09 %09F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F9 %2B0909F92B0909F92B0909F92B09092BFFFFFFCA8CB0FCB08CB0FCB08CB0 %FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB0 %8CB0FCB08CB0FCB08CFC6A090309F9090309F9090309F9090309F9090309 %F9090309F9090309F9090309F9090309F9090309F9090309F9090309F909 %0309F9090309F9090309F9090309F9090309F9090309F9097FFFFFBCB0FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC4E092B092B092B092B092B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2BF97FFFFFB5FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0 %FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB00309F909 %F909F909F909F909F909F909F909F909F909F909F909F909F909F909F909 %F909F909F909F909F909F909F909F909F909F909F909F909F909F909F909 %F909F909F909F909F9092BFFFFB0B0FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB58D2B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B09 %09F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F9 %2B0909F92B0909F92B0909F92B0909F92B092BA9C3B0FCB08CB0FCB08CB0 %FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB0 %8CB0FCB08CB0FCB08CB0FC6AF909F9090309F9090309F9090309F9090309 %F9090309F9090309F9090309F9090309F9090309F9090309F9090309F909 %0309F9090309F9090309F9090309F9090309F9090309F9090309F9A9C3FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB44709092B092B092B092B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B09097FBCFCFCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0 %FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FC4EF909 %F909F909F909F909F909F909F909F909F909F909F909F909F909F909F909 %F909F909F909F909F909F909F909F909F909F909F909F909F909F909F909 %F909F909F909F909F909F909F955BCFCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB52409F92B0909F92B0909F92B0909F92B0909F92B0909F92B09 %09F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F9 %2B0909F92B0909F92B0909F92B0909F92B0909F90931B5FC8CB0FCB08CB0 %FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB0 %8CB0FCB08CB0FCB08CB0FCFC8C2BF9090309F9090309F9090309F9090309 %F9090309F9090309F9090309F9090309F9090309F9090309F9090309F909 %0309F9090309F9090309F9090309F9090309F9090309F9090309F909032B %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB50909092B092B092B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B09FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0 %FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCFC8D2B %F909F909F909F909F909F909F909F909F909F909F909F909F909F909F909 %F909F909F909F909F909F909F909F909F909F909F909F909F909F909F909 %F909F909F909F909F909F909F909F909B5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FC93F92B0909F92B0909F92B0909F92B0909F92B0909F92B09 %09F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F9 %2B0909F92B0909F92B0909F92B0909F92B0909F92B0909F98CB0FCB08CB0 %FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB0 %8CB0FCB08CB0FCB08CB0FCB08CB08D09F909F9090309F9090309F9090309 %F9090309F9090309F9090309F9090309F9090309F9090309F9090309F909 %0309F9090309F9090309F9090309F9090309F9090309F9090309F9090309 %F909B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC93092B092B092B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B092B09FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0 %FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0 %8D09F909F909F909F909F909F909F909F909F909F909F909F909F909F909 %F909F909F909F909F909F909F909F909F909F909F909F909F909F909F909 %F909F909F909F909F909F909F909F909F909B5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB50909F92B0909F92B0909F92B0909F92B0909F92B09 %09F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F9 %2B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B09B0FC8CB0 %FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB0 %8CB0FCB08CB0FCB08CB0FCB08CB0FCFC8C2BF9090309F9090309F9090309 %F9090309F9090309F9090309F9090309F9090309F9090309F9090309F909 %0309F9090309F9090309F9090309F9090309F9090309F9090309F9090309 %F909032BBCFCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB52A09092B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B092B090931BCFCFCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0 %FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0 %FCB0FC4EF909F909F909F909F909F909F909F909F909F909F909F909F909 %F909F909F909F909F909F909F909F909F909F909F909F909F909F909F909 %F909F909F909F909F909F909F909F909F909F95BC3FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCFC47090909F92B0909F92B0909F92B0909F92B09 %09F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F9 %2B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B09095BC3B0 %FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB0 %8CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FC6AF909F9090309F9090309 %F9090309F9090309F9090309F9090309F9090309F9090309F9090309F909 %0309F9090309F9090309F9090309F9090309F9090309F9090309F9090309 %F9090309F9A9FFB0B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB58D2B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B092B092B092BA9FFB6FCB0FCB0FCB0FCB0FCB0FCB0FCB0 %FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0 %FCB0FCB0FCB00309F909F909F909F909F909F909F909F909F909F909F909 %F909F909F909F909F909F909F909F909F909F909F909F909F909F909F909 %F909F909F909F909F909F909F909F909F909F9092BFFFFBCFCFCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FC4E092B0909F92B0909F92B0909F92B09 %09F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F9 %2B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F97FFF %FFCA8CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB0 %8CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CFC6A090309F9090309 %F9090309F9090309F9090309F9090309F9090309F9090309F9090309F909 %0309F9090309F9090309F9090309F9090309F9090309F9090309F9090309 %F9090309F9097FFFFFFFB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B092B092B090909FD04FFBCFCFCB0FCB0FCB0FCB0FCB0FC %B0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FC %B0FCB0FCB0FCB0FC4DF909F909F909F909F909F909F909F909F909F909F9 %09F909F909F909F909F909F909F909F909F909F909F909F909F909F909F9 %09F909F909F909F909F909F909F909F909F909F95BFD04FFCAFCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB56A09F92B0909F92B0909F92B0909F9 %2B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B09 %09F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F909A9FD05 %FFB58CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB0 %8CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB0FCB024090309F9090309 %F9090309F9090309F9090309F9090309F9090309F9090309F9090309F909 %0309F9090309F9090309F9090309F9090309F9090309F9090309F9090309 %F9F92AFD06FFC3B0FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5 %FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC71092B %092B092B092B092B092B092B092B092B092B092B092B092B092B092B092B %092B092B092B092B092B092B092B092B092B092B092B092B092B092B092B %092B092B092BF9A9FD07FFB0B0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FC %B0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FC %B08C2BF909F909F909F909F909F909F909F909F909F909F909F909F909F9 %09F909F909F909F909F909F909F909F909F909F909F909F909F909F909F9 %09F909F909F909F909F92BFD08FFCAFCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB56A09F92B0909F92B0909F92B0909F92B0909F92B0909F92B09 %09F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F9 %2B0909F92B0909F92B0909F9097FFD09FFB58CB0FCB08CB0FCB08CB0FCB0 %8CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0 %FCB08CB0FCB0FCB024090309F9090309F9090309F9090309F9090309F909 %0309F9090309F9090309F9090309F9090309F9090309F9090309F9090309 %F9090309F9090309F9090309F9F92AFD0AFFCAB0FCB5FCB5FCB5FCB5FCB5 %FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5 %FCB5FCB5FCB5FCB5FC94092B092B092B092B092B092B092B092B092B092B %092B092B092B092B092B092B092B092B092B092B092B092B092B092B092B %092B092B092B092B092B092B0909F9A9FD0BFFBCFCFCB0FCB0FCB0FCB0FC %B0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FC %B0FCB0FCB0FCB0FCB0FC4DF909F909F909F909F909F909F909F909F909F9 %09F909F909F909F909F909F909F909F909F909F909F909F909F909F909F9 %09F909F909F909F909F909F909F95BFD0DFFB5B0FCB5FCB5FCB5FCB5FCB5 %FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5 %FCB5FCB5FCB5FCB58D2B092B0909F92B0909F92B0909F92B0909F92B0909 %F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B %0909F92B0909F92B092BF931FD0EFFCA8CB0FCB08CB0FCB08CB0FCB08CB0 %FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB0 %8CB0FCB08CFC6909F909F9090309F9090309F9090309F9090309F9090309 %F9090309F9090309F9090309F9090309F9090309F9090309F9090309F909 %0309F9090309F90985FD0FFFC4FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB44609092B092B092B092B092B092B092B092B092B092B092B092B09 %2B092B092B092B092B092B092B092B092B092B092B092B092B092B092B09 %2B09097FFD11FFBDFCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0 %FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCFC2309 %F909F909F909F909F909F909F909F909F909F909F909F909F909F909F909 %F909F909F909F909F909F909F909F909F909F909F909F909F90955FD13FF %BCFCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB524090909F92B0909F9 %2B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B09 %09F92B0909F92B0909F92B0909F92B090931FD14FFCAB6FCB08CB0FCB08C %B0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FC %B08CB0FCB08CB0FCB08CB0FCB02409F9090309F9090309F9090309F90903 %09F9090309F9090309F9090309F9090309F9090309F9090309F9090309F9 %090309F90903F92BFD17FFBCFCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5 %FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5 %FCB52409092B092B092B092B092B092B092B092B092B092B092B092B092B %092B092B092B092B092B092B092B092B092B092B092B090955FD19FFBCFC %B0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FC %B0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCBC31F9F909F909F909F909F9 %09F909F909F909F909F909F909F909F909F909F909F909F909F909F909F9 %09F909F909F909F9F931FD1BFFC3FCB0FCB5FCB5FCB5FCB5FCB5FCB5FCB5 %FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB0 %FCBDFFFF5509F92B0909F92B0909F92B0909F92B0909F92B0909F92B0909 %F92B0909F92B0909F92B0909F92B0909F92B092BF9095BFD1DFFC38CFCFC %B08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08C %B0FCB08CB0FCB08CB0FCFC8CC3FD04FF7F090309F9090309F9090309F909 %0309F9090309F9090309F9090309F9090309F9090309F9090309F9090309 %F9097FFD20FFB6FCFCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5 %FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCFCB5FD07FFA955F909092B092B %092B092B092B092B092B092B092B092B092B092B092B092B092B092B092B %092B0909F955A9FD22FFC3B5FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0 %FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCB0FCFCFCB5C3FD0AFF7F09F9F909F9 %09F909F909F909F909F909F909F909F909F909F909F909F909F909F909F9 %09F9F90985FD26FFC3FCFCFCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB5FCB5FCFCFCBDCAFD0DFF552BF9090909F92B0909F9 %2B0909F92B0909F92B0909F92B0909F92B0909F92B0909F92B5BFD2AFF9A %B5FCFC8CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CB0FCB08CFCFC %B09ACAFD10FFA95503F9F9090309F9090309F9090309F9090309F9090309 %F9090309F90903F9095BA9FD2DFFC3B5B5FCB0FCB5FCB5FCB5FCB5FCB5FC %B5FCB5FCB5FCB5FCB0FCB5B5C3CAFD15FF7F31F909F909F92B092B092B09 %2B092B092B092B092BF92BF90909557FFD32FFCAC3B5B5FD05FCB0FCFCFC %B0FCFCFCB0FCFCFCB5B5C3C4FD1AFFA955310909F909F909F909F909F909 %F909F909F90909555BA9FD38FFCAC3BDB6B5B0B5B0B5FCFD04B5BDC3CACA %FD21FF857F55552B2B092B092B092B2B55557FA9FD42FFCACBCACACAFD2D %FFA9A9A9AFA9A9A9FD22FFFF %%EndData endstream endobj 19 0 obj <>stream +HWyo:/Ţ hQ%iz7ay]AKZ(ʉwHV6:c {Fo>v#1NB7oN$%Jcdy*I~n?7TLǚ Tnͅ5t@n#c4$^4e4z"#O{y6r.=ِ[%ދ0X i.dzN$Fd +C9 02N9Q;ھn^xt'l}G +ߚsR\}4<k~)3|=(`HDޥOk:O88Xk;NCuS!v= / )_.?F"R(e9gq*?Lu "^}DN )OAy,/Jh|-nfÖF mBT7wa4HC`+ɦ,>.tgE6 +/~ ;=toc/%ܨ _@*\Rj]qt":ȩҍiΫ~ϒ#y aHkƥπu&E[hLuXol=Ber`+ +#n'1+sV+& 9bD."PcOxEе$!ĥ֟[$٥?Q34 + |쏜[QsQWYzA6T-:U;MM^- `f9JXr$r>U>("]eL\!bPV=QM$n>[G)r'zAI1CN0Mp{%o>6}d\}=@GdNшVBK ]5 3°a|ςXvږmlϳa蹁k(mN:Au5ckNПr%< ~ {XB?Fqw tVc/8heN  L/i}%4dUAR{{ph> V+L qxk+iϐdD.痰>|sRI(ŷZ+%@T8I\FG}L_j6;(Ǣ ³RV r1|.Vh>zM3ap"З =T~6~}\w4ǶR'[+L8'wFw*ޥE_8y!v.S)=u웎y].H*Mo_4~2H9 ^l )͜Q6SX_m2EjEa{i;.;ر|i;obD(V]IX+ÍD&CYy*̩",>?G'G$lN:sMXS,tYV^bolL +ugE!D?r! Y:[| NbzR6aHUF~;pERLy1>nYƞ >xyxV]h؍r'kƩC?È".nש??)#&}6gæcw~.*L }\2H=@Ln TDҔEbAeUB +z$P,N4\Јes4_w|Yl![ xtZ: +]V{V9Ի Id߈v[XN\e*Ԏ3*dZi.B @kyA$fdJ@$YRnYTg:H5DFL6To{>h$Nm?\)Jٷe ;(! yQvq?P #VXw<^m=E? +?֖&EsMD'XPM9%!S^ o8˦ޞF6<Ed Xr})MHqNһrK֤gEe䣄nDwNG`$6n9EnerjFQ&$=҇4ț~*F.f l٣ AqqSCe 7f 3URܕK]]&brvƛE__/o"WEl뺷2 vz pIZ6\#]SreޛNԆlT{,Uu꘭u&[Z]q^κ}瀛ּKV3Sv5bwV +8di $] h4ʭ +}"8uJJ&DJIa>\;iP=%W})V`gSm~Hb5KpoͬʥH/h N^04Oi*2{+_q[aW.W^J~azQj +UVY46NMI?9sW{Og*X]tM ,REϩj=IZu.%&`MRٶ +KjccE~eH>,[\җcq(tAcad%|5LL ]sQa-68q G7&/77cmG\t.U\GbFQ 㝇yH-HEH!G&*};KӐ̥xrFU& $57M$ILB"ZdM` 9XbŘu~%y0I3q,SvI ٪ +*ʜ4K/CNiQ4-b ^F34잭˓s@#/882-Ȋ$0"̡P 4 k8 6SU@]<"u)lR1`@<~8a.\0,`[R^% [񒣋V!,[঩f0tˡ10yX`d=I5 }cu`m +0QWS€ 9Xu0@ ݝ|b*1IO=`y/ } <;>x,%̀,?XBNXJV[/XQ_T(Cb9TwVb!*]{BU( $"_ C(6IAxئcgJe@t-&0pH +xH$5=R5](SJK KLaG6F_ +Sm~nϙb$=ksۉBSl K< e I#PTOU¿^ D ,qӮ'I3`h@OM +#f` |dP19(SK>TZ3 LBcf@| aq|dK += )}XI1_o%J;rd8X—M> K[)Rz)Ȫ[J,Xj%nGi4̼X7b2gKvgPs6a7\6$M-w5Ï{#Fӧd.޵d8W<ޖ%w[G +3PmdGPeh.JEUb$WeLhH2L p2sYM p䘍,ܥ%-"~;0s {5(XMrO W]cae 5n~QQL-svi3$cݵ?.73WؚfIgpELVO +^{aɰ5-7G0/NlJfXl*IΆ,?o)Ȓ})`*~cDPPB$r0_"-O]Td37z)rC+پ +&Q:z ~6ۄ +M4R?~+8]4zص| Kk3CzKW%c؆7c(J//ZNlt1i>m~w'ʥwS֏ok/nlDNpoZت]vKõׅqaᠰ3ӏI +;W_U\:mݪZWiݬ5ǻ?zds_c^x:m^.CP>ǽ։Ry7<+Ws^ع/6wm8b^5ogGQfzank̵k! 8=x3th5w*|V7N@Œ<[=ƥEuG՛˥ j'|vso*<7ae>=/ pdN=NG1/ޚDiF/ulZD_oO6N;_?$>R)F1 +7[({7Fl2jG$DH5Z?]k^-dO{}v2i,tc~llp܊+MQ(Il1_݀Z.]lԼ:f֫t!U +?+*KjW]Rs)ͮvK333́h >墁ݎB ڐ塮2ssh)+~ 2h>; "01Vj+Gtx,Kª@/:E]wVKtJO4N<7O|-NZAkƳz ^B +jL ז+2hyDлY +ʰf͑}Cms V#ZuA史 +>//4[ˏdZ՞)(`(kh fsP)x(}ptlrЧKy s6:$zc*jv@a{#8{V6.534M "2Ĺ/jP]\;C$CX.݌ Mo&s +"7oCeX18ARcXS*l&7W!48 prx{L ++E.*N@:B)%LK%Zq@b¼$[!UZZȠNr +7O!&^ DnGd\@db3Crԅt}''cyk7 Q6^S%1NZic!N5 3Az7u/4w~98S*ݎ#-O+|_0K;?Lj7K)O\Wϴ9 ZĞG):_WcWHuKȹGPm9+Ԉ] Az|}S-b*HSy&-a=n2:ZO'09pZNAFˬv 5dʤ׬n5f9- b6+7'_hghH!_B\=^OhMD!"+Ky?o/!{r}VwVW#lbdut3x\v܇GػvȠ~,LP0TXε(@}'4b0@d`F0x){O,N4p"(`4-Ix)RA@T`3:hAa"|mdՕx?ΓAQLٺ1T)iڥxҺ'? JOsHr781Th +oֵ^_{ՆX+h7zbˢL#)w=ps,x,1(vO7<&[M[ZZ゗+¼LH+9:?ұ<@}s- *J2˗͍R_IP)|)UFCPk:4ЬUO`ZPO[cz='tB5U%+ܞjbvPbWt7+ŇZVlư0ׂ.sǬrg־59aiH-{E.vGsb fjC\Ū۠5uS2wJ,7^w˨W&2w^ō I]i~`D$h:rR|U \?6 ee[>48y"0-rD7')Yķ3ΜzS xQ3Qn+d;Ӣ0l'M]*XWIǠQbnRM&Lf<sqa*,\_A IwF MƝ߹g]U(/g_ktlyrٛgYs|Kz1(w+>1,b7QkXfK%|Л Z.)^`ph,^j%C١|L+1l"U(:kcqƒ&k +/TZ8#Mc֢1Ŋ, "8&ԶG0nܐG>3v5S$`R@7AdT&Q홗 L$Maw_s AvQI{](fª;^On5]̏Wm{y۽lH$^%b2ŧ `8)X/`X)S keoqʒ^R6"In\qOݲbaKn6l`'rRZ[Evs uQ8" oǫY3&+Cƙ6`eQT9NӰ LF`tT0q*y٩d +t)M6)vX!k1}uS/lG`MicƠ2+ 5q^W1~vҾ9u8^y!;oƪ'bt$}ꨣhY|Y!rTQ.zy>Nɧ ,"2AbѧZ |ƒtyd4O1k> {gY˾x0?'hC~0D;^tHM:g|tSkhBaeUo}V&EPNbV^Ԍ !\ k$z3 g)x3FW @Cv:J>Z ՘=v8ءkkι]w*>Vb', Qx.U&]kauU$co7;(gJɡ"Bk8b;n?IJBn%.~9W/迮{*A\f)c%P]Xqدg|۲/P[oPڃVX49h+wî(B0".3p쪆y6 +7ۚ 7?\hqe6D, =Q=MbcW ,>Ő&&ZU$Ȇ\(0IW>Zpa.0yE`6eyX ӘJLVx?w.B% ()CH&CŎJЖ1"ئ\=e;鰾^UTf +DC[ ^fZjrGZ0F9ZB*wpC+ZMFzy=y_;J k-a)$і'bȢ/XIXd) ]>;# O2ej 8D^bBz%./lf4,ЯD2ރѤX\޼WQ.WN=WOe|_#Wawe-.DX[,02v7Ӎ={ؐu^~];_ܽ׃HuǨsC,|;7ƹU*/OnsmzF !h}{Ӣvz;x3nuvꪼAJp9%}!nn1i5zJ9}ܦ2^jF{lE;=wh;t~N8/U4vϳGtbk2vAr:jf3Jn*X^Ol9Ebz>9Di,|yl*YwlfHqœ\YwLD1,q+j2?Z.z}SPt*% R2T᳗u3o +!aȃ{5 < xѦZ{B)Īߔ߶iu:EAnk:UB4KOzAxG`0.!9lN[Qp8;L~hBxQ.hCNns0cuslkL6욧2?˪6|($uk\@*x=h25fRZB +Y/&_ûfyI Ȏ=t;=R~Q9Vy!E45 mgcri(Xz5: $1wRT *Ta0•ž'{_6Ĥp ь,8,td>PZp:2gw%*9E#IFTCTT;Jg%$k{뱏k&JGuR+wRr3qԩF+GЭ!9VA g@ry&$VPӺ4-|v:d]rӱ3g컞,YV@ӢGiGoų+tC:}^YsuVZ&Q}VOx@'*shy +N ьYώc>HlՑǹfYJHTX̤z9Wa!T`dV,9L.Yrs`1 [I@ 5ޱߺƣcA &Ф[TOT1`B[pQ'{-eеLȩd2{ޣ} ^X-֛luފ$C2X;ωWW6@YwP-Ph= ѩ1`g)Șf ;`+!YwN YE9+[1:]*d,11+5A0r%FsfaF-d̶"GhKKŕBrG4yĶ^лܔ ;OmIwE'JiKm2:Q\;J!'v3[hwLƫEʔa*1YI7jYi|l|}p$H_xt;j0lvrq!2#G "c8{A:C+cB} ^lJ{beI-4ߕLCa޽e+)ݚR+Y5vuޔ9Ks s*BG7l4wBSt7Ӭ>̺8>Y8:`bh8MxhnOjyvqZb v彽PN_}>4|E4W}h&val~ji_ c Dіlߺtr_J $Q#rqKT (#3 +e-(x=}rȹpn!ۯ^ۃ*L +rşB|_Yw {W=ްx 1S=JJ*ɐl@OKm9X{kL8ɐ?]tw=٨G.Ne.1["Χ%&/66|_~MK<]WtXyrDw2ʓٓ =x0-p#$q~:mBݝ>r&KU̥L>qҋ_~*O MX^ c=uK켈B/Ǡ(<\|{ tRVܠ.%g&2vZ {+ *[ +n A/U`.ըEy0 1u|E&AC^\nJ& }}ܴAV+"r\"ȆHђezRTU)%10Yh{N0o[^4ndb̈K֝3ecFfJWfuY|EMvN. !ǐ>a^.%bo3"XĠH ՁC7rddTF⬥9=G|W׌^ʀc^&Nf1*Z֙d1'pvU(M%F)QϞ^rw2۰H:1Jƪ_ +r-P +N<aVgrR.+ix@Jd^GWӂJk6ϩxEkrxeAvyUn:"R&O |@gG[.-+m*.i;e#g+Q^D5ŋ('++լ]Dwj o_=]C%YUR}K;IVzvRtrzځ& [j-iU;-Ux,WNI>stream +HWZJ}<K Ԡ삌0,WFF;!n iOUN-EAw'I%Og[T ٴ$''bSzSNJs-[=JZuQfBDe$99b~R명xk}LIx/Lv)q%]H\2jtT3z:B"z\ w2e[uVWɭ#?(pˊBgjAʅđ'\I<*{0 "-o[QeyrA +( + 8`{F bW2 60ϵ\:wJmp24qv3L +T2ֶKήP-I{Ž", cSo"de6FV+m +5<.]"6{˃yBuc'0FMe1A-(ه-ݢ$+6 {`ce~g& x<~rS'rf@1Saҭvx~r.s_rW;i~2W:(>I}zgI%>.1ԅ(߆+?HqcUqeH??IrYd3$/z-{H`L]y%xmFԟ>0?hkTWU(Yk4ևF3Aۨ ꧿ +XP6fS{)zeÊ0F9$Hq*cG H +"+ XVQk4+EYvU_UaIвv?ݜn.I]B(ڨQJJ^#J]p +^Fy?'?[E }.,Rn.!S˓ٝSg dY{^Y)QWoQ4ʋY:OgsY6B]Mj㆘0̛%x8Ww_X,W>ܣ +Qlw$/ȭ¹ RuI܋-cǸZB컂- GbGLRK瘽Nq +{qӞiT%1.ftobÊg{[ *A4dAD?,:$1S.n/ ʃUTr ۶&k.b }ܜy~>-= Wϙ,kѴ:;,5W5+%`q9uiIJ{Rnw{Oy\YbX{ 05Vx`{Wc81rFNK=o + _mM}(?CY0aMU!_ w|{zb] +1^;jkx`@-~c/:/RAPV,4m٣ +ya"Ϳw/dl;zCOM<~MQ+/;e#}(n2RڤÎTOHiEgϚ$7C>RiX߯]'?185\#C>4O;ĝc׮#Oa +zQ:VZs咙' B1ԑ \,yKXNM&܋}>I0MXm75F\$iFxԁd;d9F!|̝冖5n`,shch"|B溢LÎkT] H.Ε?]"ēu`e@ -1*grneYn%]h=M1wnӠb R>@ ' 1+"& ;f; HDChPV94l j +5r> kXcvD(ĐkE3pUbiݪq#-"aJ\(=ֻfEe22ɺ_ʲ~|0BrP..C|Xl77$#%*BVIUXb/0 +n:{@8 +f]\*_C*2 +5yؿl+ܗX& At|כa +dP%\@S(iw0,u| +fesi+4NqLommH\tIcHؙB$4}IVPmXh1 ˃3tRMh] [x}yb܋V`{8X6P8{!zE8anC-oC &`&TFnc%36K e-`^ac^e ǃeJLmx |Im1J-=;]5Vx67!5}mq0\qq1ȅՒ[䭘x§&UF6&DVGiCӚ?0!o1bwT"|1IȀl+X6(H2/ q0~r7[|qJ7]Q;$c?uW\vC{p%~E* )a*qJ^tJDpډ Q@w/s#a,5G|\,~=~ 0f?móդ[{Љ4L_ZM9Ĝ'1ʤ2;h#{,b"Յz0"Xʝ0]j49{! `nFy穈9 xMvsӲa6+me$}hϢ'2c1q8-VZer}^ROSa_B_I$p7^ā{Km?չ*E@ȈƈKl1FkbF#{F9ļgZkS[ė"TLu2] U}ƅ+'$eCL*ctQ53xjh=Cvl =nzQ]NſF]݉wa*oktBց%AemMzQ/CzQ]/CLYxJ["_pft& :/ou%שׁR#P蒔@0QIZ}Їŗb%oX(v8@|}z=LdςEBKfѶ0 +sw䜌k|"eڋ/U&*<#^P1#(#v1V {&NqRhmiwGg$k;k & +eWB<ź% RLZWoo$(.S]]v4Sm%So= `( CHEHm4a \&/=[ۢ6ˀ;y(bݝ.$>)|/-ގ s zxpM;͋;p/tgCe1$砪d1ʜ+oWUQXzLFp:6qy9"z;oK^7˳oz3zS?@0S;9B߰h>T g>iզ~ ݻ%m2}\!(2hqP+ʳ-+mfv<00 }5eFOrSϷ{ s@o8e|iweo=[\}r%u$%3ۚNT#tK#>e߁ BrFE*xT3i`]ڱn&go:|:͠D\-9"j>rW&pt'&`PԃQYl"X(a6`3d'+MdS.Nƭ +P0,vjQJe&OdhD1MoR^U1i3l^RXLd41((^oQ[>)V.#E+8)4 19mw.4weH0+h +D\e PD$Hή4J:& e./ t&ݣc0Zզ6^FZJM4!՜Ѝau[8!2,*WT˩>=W+C-54(ޞъ&_Ca.uBr+IR۫3FuTyį~Cʽ +$WV5v)?gz<# -1D&\gO&~|R9o*[da_m;|5Y PhvH^~u:+ʯ%7B^,v%_k`ZX/2~_\bW/M E^_㳅OjBW@ɻ[n6vA<‰ i)V +ۥ# T]68f=y9R\kN|NlǾk fwN?t6p ~rC\,I-M&7yf!.Mh^8C1=7`~QM-R-@ _(s9{ԨH渣x+]#5_.0虈zW e}z"`x_u,IA~e 9j)O{\xJVc~9'V9PǍgA &\#lېU*f `'e(b(`l`)R0D).+6+~)Zq2~ֲSi`~Z_G{u_8(2: RcCV9\p^}{CO6tp}E󁝝QUQP+;'䟟zR0z*pMI-6@בgas$ߪ;qtcnud zcn\sZUeΝg8Am[es9iT-kJ\J3Q:9)4VWtY7e OO˪v*hGyla3΂aͽ@,co1lV$Ą0NDCdH';</ Ģw~uRw *D" ŗ5ٵaA%G%{Bk+w %n08bO 6I"GoeM1`eǿa%ل gc?ӻJ-X,"e@2;+)*RYL +ey;X3 $;VI; qI9H~mR t$!1 AJMVt)K( #F +їxcMaͻJ &6cU# |c'j$YSXH& @Ѓj 1O!ʣL0.@AapN<TA=_&hpvo@}a&NWƄjС maŮ E5\ L52-5`N?][6&g6BQڊ >dN{{`" c c,wj߫[)> lL&˾L>Nc!0.UCp|%\\`-96y$6nmucڒ-Goeɀ2Ȩ5)y-m/}v֛:Ys +~TւWУMe` lx8O # 9@szKgaih\AZ# S0Ud䋝c]B#@Ґ +UҊ(({缪ivTCf,uM-p@Pol. wIU-?eRet/`22 ᥆P<H]Kߊ7TҖ|dU vYY&juX^~'"(OŽ lldWB `=&QvD.lPQ6=P,Ywd }7ـ-:7:zLpkdK;j̟sW$WnxNC̀ Ak諂?'aRjѬ[wSr|Yz÷/jzKV8ijGUj(,<#R@vPb0PM7!" Ҩ nx37?|6&lMdLPUɦ&_'z.cR uSEIfh!T v\1L'9Y%Kb,d"RH JxKw`PLkjd&Mm\.xƐL7)+ +w* +|mh&>lu/(ȴn} ɭA =aۖL%@(_KDz1y|=I+]L[ǷVl~a"Qƣ|ChR%*h-T;)Qxjĵ2֪@k4b5QF ~Q.5,ĕ=Kժ˒M01v +Y!rN6P\1Tfp]]ܷ9n!@R߅kj, &F{*pĈ 㻄$ +4>5bxmrq-Xm{GhE$|@H +m~  Q!;xOS=`=^0@#kIҭĕ [F- Pb"( +s?ouw6qxN뫪uѬ)d? &!vXeΚSb`7IUAp3/i\3N)?){Nr5j$cr<31eמᎯi&9I@v=j/!lJ@cË;]]eynPǑ)%!c6kH9*.#%qh'Q0;F:64tU˥Kg@4K\Ϯϖp5QZ%_^u̞!+`̳,TCahHe4o?O.t!c5@b  ,d bPp\-mt\Iz!n٢ +j *N2eeWVg)Yt|`Ԕ26l܏8A09UnrrwbqT9jw #LHg +CsEX +Q5Fpn{ m$`N$'d.4di[qK >ʲ_Nf-, ¹'Y`tCpyHRX< a]4 +5 B'6,*,b_SMe Ie5Zrb9:b-IYsN/xXk装Nzm#f|PD_Q&+\mV-[Qg1Ǖϳ+U 2\D$.҉f#7,)oψ^+ xggCMAolT' 7(bs)!Չ+R7f{dw6=BrQ,usԀQeP2|e'lY,SЫGӅAȚlHȄܖ=5l@_epp0"P Ԝ%uxBRRQtbwnl%+ boF~laz,.'B„PJ2`.v: Es+d3/AH>B,zB#q)>[ *eQWX:T- #æbG倜) ^C}yf6.H p2.c}N6N'WN6N% Lv:A^NBvJ).pS(kgYqmq0^>xlxbO@n۩tQ*}e]0>gj 7*37nӪ͘-[3f',vJۃgV!طַd0 ’'NOdnx"MEF[#ԡCC"7C;$ 2lZ ᒐ1̪K\{en5,y87͂s/ mSM8?Oр]AWƸCQ-g,,\{,_)C|W c_ʙR&a`M3g&%8a֥<';dq: ގŢrgH #ોzx>y z@Aa=t40J-xlpaa=q<7kp/Ct0ycL)wai@qUZxiȧd +X(RӔ2+c +t\~{̑>O^r48.'9E0Z+BH&Yk[Q䠈&` { zNi$q +AT]XZ,4>IA{bjUG]sC_NB+&ctL?f'Vq%{E? J tȯp^a-FǼ !8iyw.J :`YzO|߯|&яzջ&BQ-.Lbu{TJB}x4LTzR71%ĵ +ÕEeN` a#Hm,ڙA(DN5̀^-b( ϣw,S\NE !"pPD:P֣<"5`=:8/ ~ygE#)QkC)c.>_ǬBd]! p̀_1ӾK!2e)[A^9tG_+Ϧ^F/p^ ~+ e_ޕuAP+}yuxJtXjqlh[&vIb).}R0wwSW'ͻCi/:ޣ0a~:Q,#)ʖKxoetT endstream endobj 6 0 obj [5 0 R] endobj 21 0 obj <> endobj xref 0 22 0000000000 65535 f +0000000016 00000 n +0000000144 00000 n +0000015183 00000 n +0000000000 00000 f +0000016591 00000 n +0000062202 00000 n +0000015234 00000 n +0000015556 00000 n +0000016890 00000 n +0000016777 00000 n +0000015777 00000 n +0000016030 00000 n +0000016078 00000 n +0000016661 00000 n +0000016692 00000 n +0000016963 00000 n +0000017146 00000 n +0000018191 00000 n +0000038336 00000 n +0000051296 00000 n +0000062225 00000 n +trailer <<4FC2DE12E22C4B5188B88322691C6F62>]>> startxref 62411 %%EOF \ No newline at end of file diff --git a/tests/DefaultTargets/images/Cool2WarmBar.png b/tests/DefaultTargets/images/Cool2WarmBar.png new file mode 100644 index 0000000..8396b38 Binary files /dev/null and b/tests/DefaultTargets/images/Cool2WarmBar.png differ diff --git a/tests/FindWarnings/CMakeLists.txt b/tests/FindWarnings/CMakeLists.txt new file mode 100644 index 0000000..4bceb3a --- /dev/null +++ b/tests/FindWarnings/CMakeLists.txt @@ -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) diff --git a/tests/FindWarnings/DuplicateLabel.tex b/tests/FindWarnings/DuplicateLabel.tex new file mode 100644 index 0000000..e95b076 --- /dev/null +++ b/tests/FindWarnings/DuplicateLabel.tex @@ -0,0 +1,9 @@ +\documentclass{article} + +\begin{document} + +Define the label once. \label{DefinedTwice} + +Define the label again. \label{DefinedTwice} + +\end{document} diff --git a/tests/FindWarnings/Natbib.tex b/tests/FindWarnings/Natbib.tex new file mode 100644 index 0000000..229dca7 --- /dev/null +++ b/tests/FindWarnings/Natbib.tex @@ -0,0 +1,9 @@ +\documentclass{article} + +\usepackage{natbib} + +\begin{document} + +This is an undefined citation: \cite{NoSuchCite}. + +\end{document} diff --git a/tests/FindWarnings/Overfull.tex b/tests/FindWarnings/Overfull.tex new file mode 100644 index 0000000..add4c3c --- /dev/null +++ b/tests/FindWarnings/Overfull.tex @@ -0,0 +1,7 @@ +\documentclass{article} + +\begin{document} + +This is an overfull box: \framebox[14in]{Box too big.} + +\end{document} diff --git a/tests/FindWarnings/README b/tests/FindWarnings/README new file mode 100644 index 0000000..e79a5b8 --- /dev/null +++ b/tests/FindWarnings/README @@ -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. diff --git a/tests/FindWarnings/UndefinedReference.tex b/tests/FindWarnings/UndefinedReference.tex new file mode 100644 index 0000000..c6c2b68 --- /dev/null +++ b/tests/FindWarnings/UndefinedReference.tex @@ -0,0 +1,7 @@ +\documentclass{article} + +\begin{document} + +This is an undefined reference: \ref{sec:DoesNotExist}. + +\end{document} diff --git a/tests/FindWarnings/UndefinedReferenceLong.tex b/tests/FindWarnings/UndefinedReferenceLong.tex new file mode 100644 index 0000000..c86d85c --- /dev/null +++ b/tests/FindWarnings/UndefinedReferenceLong.tex @@ -0,0 +1,7 @@ +\documentclass{article} + +\begin{document} + +This is an undefined reference: \ref{sec:AVeryLongReferenceNameThatCausesTheWarningLineToBreakAcrossLines}. + +\end{document} diff --git a/tests/IncludeDirectories/CMakeLists.txt b/tests/IncludeDirectories/CMakeLists.txt new file mode 100644 index 0000000..b60a4e1 --- /dev/null +++ b/tests/IncludeDirectories/CMakeLists.txt @@ -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 + ) diff --git a/tests/IncludeDirectories/CopiedInput.tex b/tests/IncludeDirectories/CopiedInput.tex new file mode 100644 index 0000000..1ea0283 --- /dev/null +++ b/tests/IncludeDirectories/CopiedInput.tex @@ -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@. diff --git a/tests/IncludeDirectories/IncludeStuff.tex b/tests/IncludeDirectories/IncludeStuff.tex new file mode 100644 index 0000000..0fe86c1 --- /dev/null +++ b/tests/IncludeDirectories/IncludeStuff.tex @@ -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} diff --git a/tests/IncludeDirectories/README b/tests/IncludeDirectories/README new file mode 100644 index 0000000..f1e6d50 --- /dev/null +++ b/tests/IncludeDirectories/README @@ -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. diff --git a/tests/IncludeDirectories/UncopiedInput.tex b/tests/IncludeDirectories/UncopiedInput.tex new file mode 100644 index 0000000..1469ab3 --- /dev/null +++ b/tests/IncludeDirectories/UncopiedInput.tex @@ -0,0 +1,3 @@ +% -*- latex -*- + +This comes from a file in the source directory. diff --git a/tests/IncludeDirectories/copied-subdir/CopiedInSubdir.tex b/tests/IncludeDirectories/copied-subdir/CopiedInSubdir.tex new file mode 100644 index 0000000..1ea0283 --- /dev/null +++ b/tests/IncludeDirectories/copied-subdir/CopiedInSubdir.tex @@ -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@. diff --git a/tests/IncludeDirectories/uncopied-subdir/UncopiedInSubdir.tex b/tests/IncludeDirectories/uncopied-subdir/UncopiedInSubdir.tex new file mode 100644 index 0000000..6140025 --- /dev/null +++ b/tests/IncludeDirectories/uncopied-subdir/UncopiedInSubdir.tex @@ -0,0 +1,3 @@ +% -*- latex -*- + +This comes from a file in a source subdirectory.