2012-02-16 43 views
2

LaTeXマクロ(たとえば\ newcommand)を使用すると、ページ内のスペースを占有します。ここに私が直面している問題を示すためのコード例があります。MathJaxの newcommandマクロによる不要な余分なスペース

URL: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で移行のヒントを確認してください(将来の読者のためにあなたの投稿を更新するかもしれません)。 –

答えて

3

この問題の解決策をMathJaxコミュニティから学びました。

\newcommandの空白を最小化するには、\newcommandをすべて\( ... \)にすることができます。例:http://jsfiddle.net/qQ9P9/

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

HTMLの<head>セクションでマクロを定義することで、完全にすべての余分な空白を削除することが可能です。例:私は自分の段落(またはDIV)でnewcommand定義を入れた後、noneにそのdisplay属性を設定されて何をしてきた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の場合、これには少なくとも1つの欠点があります:あなたが言うことができるのは、あなたのマクロが取る引数の数だけであるので、 '\ def'スタイルの区切り引数をこの方法で使うことはできません。したがって、テキスト内で '\ def'を使う方がより柔軟です。 –

2

:未来から

<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> 
関連する問題