[mlpack-git] master: Added MathJax for HTML Doxygen output. (69947df)

gitdub at mlpack.org gitdub at mlpack.org
Tue Aug 30 09:11:39 EDT 2016


Repository : https://github.com/mlpack/mlpack
On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/814605744b0a7c8b70a955076d3f110e2d6687db...459242594a29b6bae06ef3ffa4be7c2757c15246

>---------------------------------------------------------------

commit 69947df7729f3f0275b29764898523642c7cd7dc
Author: Mikhail Lozhnikov <lozhnikovma at gmail.com>
Date:   Tue Aug 30 16:11:39 2016 +0300

    Added MathJax for HTML Doxygen output.


>---------------------------------------------------------------

69947df7729f3f0275b29764898523642c7cd7dc
 CMake/FindMathJax.cmake      | 21 +++++++++++++++++++++
 CMake/GenerateDoxyfile.cmake | 23 ++++++++++++++++++++++-
 CMakeLists.txt               | 22 ++++++++++++++++++----
 Doxyfile                     |  3 +++
 4 files changed, 64 insertions(+), 5 deletions(-)

diff --git a/CMake/FindMathJax.cmake b/CMake/FindMathJax.cmake
new file mode 100644
index 0000000..4111183
--- /dev/null
+++ b/CMake/FindMathJax.cmake
@@ -0,0 +1,21 @@
+# Find the MathJax package.
+# Once done this will define
+#
+# MATHJAX_FOUND - system has MathJax
+# MATHJAX_JS_PATH - path to MathJax.js
+# MATHJAX_PATH - path to the MathJax root directory
+
+find_file (MATHJAX_JS_PATH
+    NAMES
+      MathJax.js
+    PATHS
+      ${MATHJAX_ROOT}
+      /usr/share/javascript/mathjax/
+      /usr/local/share/javascript/mathjax/)
+
+get_filename_component (MATHJAX_PATH ${MATHJAX_JS_PATH} DIRECTORY)
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(MathJax DEFAULT_MSG
+    MATHJAX_JS_PATH)
+
+mark_as_advanced (MATHJAX_JS_PATH)
diff --git a/CMake/GenerateDoxyfile.cmake b/CMake/GenerateDoxyfile.cmake
index 4e74496..cca9549 100644
--- a/CMake/GenerateDoxyfile.cmake
+++ b/CMake/GenerateDoxyfile.cmake
@@ -49,5 +49,26 @@ string(REGEX REPLACE
     "\\1 ${CMAKE_CURRENT_SOURCE_DIR}/"
     DOXYFILE_AUXVAR ${DOXYFILE_CONTENTS})
 
+# Apply the MathJax option. If the option is specified, we change the NO to
+# YES. Otherwise, it's off by default, so we needn't modify anything.
+if (MATHJAX)
+  string(REGEX REPLACE
+      "(USE_MATHJAX[ ]*=) NO"
+      "\\1 YES"
+      DOXYFILE_CONTENTS ${DOXYFILE_AUXVAR})
+  # Include the path to MathJax. If we couldn't find the MathJax package,
+  # we will use MathJax at the MathJax Content Delivery Network.
+  if (MATHJAX_FOUND)
+    string(CONCAT
+        DOXYFILE_AUXVAR
+        ${DOXYFILE_CONTENTS}
+        "\nMATHJAX_RELPATH        = ${MATHJAX_PATH}")
+
+    set(DOXYFILE_CONTENTS ${DOXYFILE_AUXVAR})
+  endif()
+else ()
+  set(DOXYFILE_CONTENTS ${DOXYFILE_AUXVAR})
+endif ()
+
 # Save the Doxyfile to its new location.
-file(WRITE "${DESTDIR}/Doxyfile" "${DOXYFILE_AUXVAR}")
+file(WRITE "${DESTDIR}/Doxyfile" "${DOXYFILE_CONTENTS}")
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bd53495..1c5d98e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,9 +26,11 @@ option(TEST_VERBOSE "Run test cases with verbose output." OFF)
 option(BUILD_TESTS "Build tests." ON)
 option(BUILD_CLI_EXECUTABLES "Build command-line executables." ON)
 option(BUILD_SHARED_LIBS
-    "Compile shared libraries (if OFF, static libraries are compiled)" ON)
+    "Compile shared libraries (if OFF, static libraries are compiled)." ON)
 option(BUILD_WITH_COVERAGE
-    "Build with support for code coverage tools (gcc only)" OFF)
+    "Build with support for code coverage tools (gcc only)." OFF)
+option(MATHJAX
+    "Use MathJax for HTML Doxygen output (disabled by default)." OFF)
 enable_testing()
 
 # Include modules in the CMake directory.
@@ -170,6 +172,7 @@ endif()
 #   BOOST_ROOT - root of Boost installation
 #   BOOST_INCLUDEDIR - include directory for Boost
 #   BOOST_LIBRARYDIR - library directory for Boost
+#   MATHJAX_ROOT - root of MathJax installation
 
 find_package(Armadillo 4.100.0 REQUIRED)
 
@@ -376,11 +379,22 @@ add_dependencies(mlpack mlpack_arma_config)
 # I guess this option will just be unavailable.
 find_package(Doxygen)
 if (DOXYGEN_FOUND)
+  if (MATHJAX)
+    find_package(MathJax)
+    if (NOT MATHJAX_FOUND)
+      message(STATUS "Using MathJax at the MathJax Content Delivery Network. "
+          "Be careful, formulas will not be shown without the internet.")
+    endif ()
+  endif ()
   # Preprocess the Doxyfile.  This is done before 'make doc'.
   add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/Doxyfile
       PRE_BUILD
-      COMMAND ${CMAKE_COMMAND} -D DESTDIR="${CMAKE_BINARY_DIR}" -P
-          "${CMAKE_CURRENT_SOURCE_DIR}/CMake/GenerateDoxyfile.cmake"
+      COMMAND ${CMAKE_COMMAND}
+          -D DESTDIR="${CMAKE_BINARY_DIR}"
+          -D MATHJAX="${MATHJAX}"
+          -D MATHJAX_FOUND="${MATHJAX_FOUND}"
+          -D MATHJAX_PATH="${MATHJAX_PATH}"
+          -P "${CMAKE_CURRENT_SOURCE_DIR}/CMake/GenerateDoxyfile.cmake"
       WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
       DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile"
       COMMENT "Creating Doxyfile to generate Doxygen documentation"
diff --git a/Doxyfile b/Doxyfile
index 352bb95..e602ac3 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -149,6 +149,9 @@ DISABLE_INDEX          = NO
 ENUM_VALUES_PER_LINE   = 1
 GENERATE_TREEVIEW      = NO
 TREEVIEW_WIDTH         = 250
+USE_MATHJAX            = NO
+MATHJAX_FORMAT         = SVG
+MATHJAX_EXTENSIONS     = TeX/AMSmath TeX/AMSsymbols
 #---------------------------------------------------------------------------
 # configuration options related to the LaTeX output
 #---------------------------------------------------------------------------




More information about the mlpack-git mailing list