- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试在 Sphinx(版本 1.1.2-1)中的多行数学模式中做三件非常基本的事情。
\big
、\biggl
等定界符组成大括号和圆括号;注意以下两点。 (1) 我在 Sphinx 标记文档的 Python 代码中使用原始字符串,因此转义字符不需要额外的反斜杠,并且 (2) 我没有使用内联数学模式,它在 Sphinx 中是这样分隔的:
:math:`Some math stuff goes here` regular text could go here...
相反,我正在做多行的东西,通常像 LaTeX 中的 eqnarray
:
.. math::
DividendYield &=& \frac{DVT(t)}{CurrentMarketCap} \\
Avg_Assets &=& \biggl( A/B \biggr) \textrm { when B is not zero...}
目前,我收到 Sphinx 错误(生成的文档页面看起来像乱码),内容如下:
Unknown LaTeX command: textrm
\biggl
也是如此。对于下划线,它总是将其解释为好像我在表示下标,但如果我使用 \textunderscore
或其他技巧,它就会抛出与上述相同类型的错误。
数学模式中的下划线、textrm
命令和大分隔符是我使用过的每个原生 TeX 包的极其基本的部分。那么,为什么无法通过 Sphinx 访问它们?
更新
我正在处理的一个特定 Python 文件会为我计算账面净值数据。所以在下面,当你看到有关 BookEquity 的内容时,这就是引用。除非通过版本控制系统,否则我无法运行我们的构建文档过程,因此如果我只是修改现有文件,则最容易产生可重现的错误。
但是,我所做的只是在我的代码中添加以下类函数,以及一个简单的文档字符串。
def foo(self):
r"""
Sample docstring
.. math::
Ax &=& b \\
Cx &=& \biggl(\frac{x/y}\biggr) \textrm{ if y is not zero.}
"""
pass
然后下图是使用 Sphinx 1.1.2-1 构建文档的输出。
如果您右键单击并选择“查看图像”,您可以看到更好的版本。
最佳答案
您必须编辑 sphinx-quickstart
创建的标准配置文件,否则 sphinx 会在数学 block 处呕吐。在文件 conf.py
中,我更改了
extensions = []
到
extensions = ['sphinx.ext.pngmath']
在那之后,下面的第一个文件或多或少起作用了;
.. foo documentation master file, created by
sphinx-quickstart on Thu Oct 25 11:04:31 2012.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to foo's documentation!
===============================
Contents:
.. toctree::
:maxdepth: 2
This is the first chapter
=========================
Instead, I am doing multi-line stuff, often like eqnarray in LaTeX:
.. math::
DividendYield &=& \frac{DVT(t)}{CurrentMarketCap} \\
Avg_Assets &=& \biggl( A/B \biggr) \textrm { when B is not zero...}
它为数学片段生成了以下 LaTeX 代码:
\chapter{This is the first chapter}
\label{index:welcome-to-foo-s-documentation}\label{index:this-is-the-first-chapter}
Instead, I am doing multi-line stuff, often like eqnarray in LaTeX:
\begin{gather}
\begin{split}DividendYield &=& \frac{DVT(t)}{CurrentMarketCap} \\
Avg_Assets &=& \biggl( A/B \biggr) \textrm { when B is not zero...}\end{split}\notag\\\begin{split}\end{split}\notag
\end{gather}
我觉得选择组合使用 split 和 gather 有点奇怪,而且显然不能很好地处理您为 eqnarray 编写的代码,但这在 Sphinx 中是硬编码的。
运行 pdflatex 确实在 \end{gather}
处停止,出现错误 Extra alignment tab has been changed to\cr.
但我能够继续通过进入不间断模式。这给了我以下结果:
虽然对齐仍有问题(因为 split
和 eqnarray
环境之间的差异),但 textrm 和 biggl 似乎工作正常。 (请注意,您仍然需要在 Average_Assets
中转义下划线,但这对类(class)来说是正常的,AFAICT)。
您可能对生成的 LaTeX 代码进行后处理,例如通过替换 \begin{gather}\begin{split}
和 \end{split}\notag\\\begin{split}\end{split}\notag\end{gather}
根据您选择的数学环境。
更新:
更新的屏幕截图似乎来自网页,而不是 LaTeX 文档!所以在我看来,产生错误的是转换 LaTeX 数学符号以便浏览器可以显示的处理程序。这可能是 MathJax
或 jsMath
。通过查看代码,pngmath
会产生其他错误消息。根据this page ,您的代码片段应该在 mathjax 中工作。来自jsMath symbols page ,看起来 jsmath 不支持 \Biggl
。所以我最好的猜测是 SPhinx 配置为使用 jsMath。看一眼生成的网页的源代码,您就会知道用于呈现数学的是什么。如果我的猜测是正确的,将配置切换为使用 mathjax 并稍微调整您的等式可能会解决问题。
Update2:我可以肯定地确认它可以与 MathJax 一起正常工作(见下文)。不过,我没有安装 jsMath。
关于python - Sphinx LaTeX 标记限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13017397/
有没有办法让某些文本仅在 [draft] 选项处于事件状态时显示。 例如,当草稿选项处于事件状态时,我希望在我的标题和摘要之间出现一些文字:“草稿:未经许可不得引用”或诸如此类。 最佳答案 通常这是用
我有一个小问题,我想将 LaTeX 文档的 svn diff 插入到 另一个 LaTeX 文档,目标是显示自修订版 XXX 以来发生的变化。 但是,由于差异包含大量 LaTeX 命令,我无法将其直接包
如何用它们的定义替换所有出现的用户定义的 latex 宏? 例如,给定这个文件 旧的.tex \newcommand{\blah}[2]{#1 \to #2} ... foo \blah{egg}{s
是否可以在 LaTeX 的一个环境 block 中使用多个命令?我试过类似的东西,但没有用...... \begin{sffamily,emph} I'm sans serif and ita
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 8 年前。 Improve
我想将每个项目彼此更靠近,即减少行距,但我没有找到任何有用的东西。 \begin{itemize} \item Processor: Intel Core \textsuperscr
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我试图在 LaTeX 文档中插入四个数字,但如果我使用 subfigure 命令,我的两个数字保留在第一行,另外两个转到第二行。像这样: 我尝试的另一个解决方案是使用 minipage 命令,但 mi
我将做大量的讲义,然后将它们编译成 LaTeX,这样我就可以拥有出色的文档供将来查看。我正在尝试组织事物,以便我可以拥有一堆包含讲座笔记的小文档,然后在学期结束时将它们编译成包含所有内容的大文档。我过
我有几个引理,其中指定了常量 $C_1$、$C_2$ 等以供以后引用。当然,当我稍后在中间插入一个新的常量定义时,这很烦人。我想要的是一个宏,它可以让我为常量分配标签并为我处理编号。我在想一些事情 %
我想制作一个包含两个目录的 LaTeX 文档,例如: Contents overview 1 - Introduction 2 - Solution Detailed contents 1 - Int
我正在使用 Latex 输入一堆数字 \begin{figure}[h] \centering \subfloat 等等。 如何让 subfloat 数字转到下一页?我的意思是,我输入了大
我在 \documentclass{article}在 latex 。我如何将顾问的名字放在第一页上?我在 latex 中看到过类似 \principaladvisor{} 的例子。但这似乎是通过论文
我目前卡住了,有两个单独的词汇表:main & acronyms . Acronyms词汇表在文本中首次使用时打印脚注,但 main词汇表没有。除了 acronyms 之外,还有什么方法可以制作任何其
如何在 Latex 中定义标签和对自定义环境的相应引用? 例子: \newcounter{fpcounter} \newenvironment{fp}[2] { \stepcounter{fpcoun
我希望doxygen文档生成器根本不生成任何LaTeX文件。 HTML对我来说足够了。是否可以配置doxygen.ini来这样做? 最佳答案 如果使用doxygen.ini是doxygen的配置文件,
我有一个关于 Latex 表的简单对齐问题。在 它看起来如下: \begin{center} \begin{tabular}{| c | l | l | } \hline \tt {
我对 LaTeX 中的定理编号有疑问。我可以按小节编号,例如 Theorem 1.2.1 对于第一节第二小节中的第一个定理。但我需要它给我看 只有小节和定理的编号,而不是节编号,如下所示: Theor
在标题部分中,我引用了文档的各个部分: \section {标题\cite {abc},\cite {def}} 文本 我也在使用目录功能,但是Latex必须首先查看标题(针对目录)中的引文,并为它们
我正在写一个程序(用C语言编写,但我想那不太重要),它与LaTeX中的一些记录 Material 有关。我希望纪录片 Material 包含原始代码中的代码片段。 为了包括源代码并使其保持最新,我在文
我是一名优秀的程序员,十分优秀!