2012-02-16 30 views
2

當我使用LaTeX宏(例如\ newcommand)時,它佔用頁面中的空間。這裏是一個示例代碼來演示我面臨的問題。MathJax中的 newcommand宏不必要的額外空間

網址:http://jsfiddle.net/Lkeus/

代碼:

<!DOCTYPE html> 
<html> 
<head> 
<title>MathJax Example</title> 
<script 
type="text/javascript" 
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"> 
</script> 
</head> 
<body> 
<p> 
\(\newcommand{\N}{\mathbb{N}}\) 
\(\newcommand{\R}{\mathbb{R}}\) 
\(\newcommand{\Z}{\mathbb{Z}}\) 
Let \(x \in \N\). Then \(x^2\) is called a perfect square. 
</p> 
<p> 
Let \(x \in \N\). Then \(x^2\) is called a perfect square. 
</p> 
</body> 
</html> 

這裏是自己的頁面輸出:http://fiddle.jshell.net/Lkeus/show/

在輸出中,你可以看到,第一行後,一些空間開始。這個空間來自於那裏使用宏。 Firebug將MathJax創建的這段代碼顯示爲額外空間的原因:

<span class="math" id="MathJax-Span-1"> 
<span style="display: inline-block; position: relative; width: 0em; 
height: 0pt; font-size: 130%;"> 
<span style="position: absolute; top: -1em; left: 0em; clip: 
rect(0.856em, 1000em, 1.144em, -0.433em);"> 
<span class="mrow" id="MathJax-Span-2"></span> 
<span style="display: inline-block; width: 0pt; height: 1em;"></span> 
</span></span> 
<span style="border-left: 0em solid; display: inline-block; overflow: 
hidden; width: 0pt; height: 0em; vertical-align: 0em;"></span></span> 

我該如何擺脫這個額外的空間?

+0

從未來注:CDN .mathjax.org即將結束生命週期,請查看https://www.mathjax.org/cdn-shutting-down獲取遷移提示(也許可以爲未來的讀者更新您的文章)。 – 2017-04-21 07:48:27

回答

3

我從MathJax社區瞭解到了這個問題的一些解決方案。

有可能通過將所有\newcommand s轉換爲單\( ... \)的空白儘量減少因\newcommand。例如:http://jsfiddle.net/qQ9P9/

\(\newcommand{\N}{\mathbb{N}} 
\newcommand{\R}{\mathbb{R}} 
\newcommand{\Z}{\mathbb{Z}}\) 

它可以通過定義HTML的<head>部分宏完全去除所有多餘的空格。例如:http://jsfiddle.net/tVyJz/

<script type="text/x-mathjax-config"> 
MathJax.Hub.Config({ 
    TeX: { 
     Macros: { 
      N: "\\mathbb{N}", 
      R: "\\mathbb{R}", 
      Z: "\\mathbb{Z}" 
     } 
    } 
}); 
</script> 
+0

FWIW,這有至少一個缺點:你不能這樣使用'\ def'-style分隔參數,因爲你可以說所有的參數都是你的宏需要的。所以在文本中使用'\ def'更加靈活。 – 2014-04-01 02:33:47

2

我一直在做的是把newcommand定義自己的段落(或格),然後設置其display屬性none

<p style="display:none"> 
\(\newcommand{\N}{\mathbb{N}}\) 
\(\newcommand{\R}{\mathbb{R}}\) 
\(\newcommand{\Z}{\mathbb{Z}}\) 
</p> 
<p> 
Let \(x \in \N\). Then \(x^2\) is called a perfect square. 
</p> 
<p> 
Let \(x \in \N\). Then \(x^2\) is called a perfect square. 
</p>