Tôi đang viết một số mã toán học bằng Python và sử dụng Sphinx để tạo tài liệu. Tôi biết rằng Nhân sư có thể xử lý mã LaTeX trong tài liệu Python; xem http://sphinx.pocoo.org/latest/ext/math.html#module-sphinx.ext.mathbase. Làm thế nào tôi có thể tạo macro LaTeX, chẳng hạn như \newcommand{\cG}{\mathcal{G}}
, để sử dụng trong tài liệu Python?Tạo macro toán LaTeX trong Sphinx
Trả lời
Aha, tôi tìm thấy một giải pháp mà làm việc với các phần mở rộng pngmath Sphinx . Đó là mẹo mà Sage (phần mềm toán học nguồn mở) sử dụng; cảm hứng từ http://www.sagemath.org/doc/reference/sage/misc/latex_macros.html.
Để thêm macro cao su của riêng bạn để một tài liệu Sphinx:
1) Thực hiện một tập tin, nói 'latex_macros.sty', có chứa các macro của bạn (mỗi dòng một), và đặt nó trong, nói, cùng thư mục như tệp tin Sphinx conf.py của bạn;
2) Thêm đoạn mã sau vào tập tin conf.py Sphinx của bạn:
# Additional stuff for the LaTeX preamble.
latex_elements['preamble'] = '\usepackage{amsmath}\n\usepackage{amssymb}\n'
#####################################################
# add LaTeX macros
f = file('latex_macros.sty')
try:
pngmath_latex_preamble # check whether this is already defined
except NameError:
pngmath_latex_preamble = ""
for macro in f:
# used when building latex and pdf versions
latex_elements['preamble'] += macro + '\n'
# used when building html version
pngmath_latex_preamble += macro + '\n'
#####################################################
Nếu bạn đang sử dụng phần mở rộng pngmath, bạn có thể đặt rằng trong lời mở đầu bằng cách chèn này vào kịch bản conf.py:
pngmath_latex_preamble = r"\newcommand{\cG}{\mathcal{G}}"
Nếu bạn đang sử dụng MathJax, đây là một giải pháp khả thi. Tôi vẫn đang tìm kiếm một giải pháp tốt hơn, nhưng nó có thể giúp đỡ nếu bạn cần một bản hack nhanh.
Tạo một tập tin trong thư mục quy định tại tùy chọn
html_static_path
cấu hình (thường_static
), nóimathconf.js
. Điều này sẽ chứa cấu hình JS cho MathJax. Ví dụ (từ MathJax documentation):MathJax.Hub.Config({ TeX: { Macros: { RR: '{\\bf R}', bold: ['{\\bf #1}', 1] } } });
Bạn có thể thêm các lệnh theo cú pháp trên. Nội dung được hiển thị xác định các macro
\RR
và\bold{#1}
, điều cuối cùng này chấp nhận một đối số.Thêm một tệp
layout.html
tại thư mục_templates
. Ý tưởng là mở rộng chủ đề hiện tại, vì vậy nó tìm kiếm tệp cấu hình MathJax trước đó. Như vậy, nội dung là:{% extends "!layout.html" %} {% set script_files = script_files + ["_static/mathconf.js"] %}
Lưu ý rằng trong trường hợp này nó là thư mục
_static
, bởi vì trong trường hợp này nó đề cập đến nơi để tìm kiếm sau xây dựng. Nhân sư sẽ di chuyển tệp từhtml_static_path
sang thư mục_static
trong thư mục xây dựng.
Không hoạt động cho tôi (sphinx = 1.3.1) có lẽ vì tôi không thể đặt đúng loại tập lệnh thành '' (xem http://docs.mathjax.org/en/latest/configuration.html#using-in-line-configuration-options). – user511