我需要从我的应用资源文件夹中加载javascript文件.截至目前,它确实从资源中读取图像,但由于某种原因,它不会读取javascripts.
如果html文件本身被写入资源,我已经能够呈现引用这些javascripts的html文档,但是我想通过设置UIWebView的html来呈现html/js,这样它就可以是动态的.
这是我在做的事情:
NSString * html = @"<!DOCTYPE html><html><head><title>MathJax</title></head><body><script type=\"text/x-mathjax-config\">MathJax.Hub.Config({tex2jax: {inlineMath: [[\"$\",\"$\"],[\"\\(\",\"\\)\"]]}});</script><script type=\"text/javascript\" src=\"/MathJax/MathJax.js\"></script>$$\\int_x^y f(x) dx$$<img src=\"coffee.png\"></body></html>";
NSString * path = [[NSBundle mainBundle] resourcePath];
path = [path stringByReplacingOccurrencesOfString:@"/" withString:@"//"];
path = [path stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
NSString * resourcesPath = [[NSString alloc] initWithFormat:@"file://%@/", path];
[webview loadHTMLString:html baseURL:[NSURL URLWithString:resourcesPath]];
Run Code Online (Sandbox Code Playgroud)
现在,如果我将基本URL更改为具有所需文件的服务器,则会正确加载.不需要互联网连接会很棒.任何帮助表示赞赏!;)
我发现这对于显示图像很有用:iPhone Dev:UIWebView baseUrl到Documents文件夹中的资源而不是App bundle
编辑:
我没有做字符串替换和URL编码,而是通过简单地在mainBundle上调用resourceURL来获取图像,但仍然没有执行javascript.
NSString * setHtml = @"<!DOCTYPE html><html><head><title>MathJax</title></head><body><script type=\"text/x-mathjax-config\">MathJax.Hub.Config({tex2jax: {inlineMath: [[\"$\",\"$\"],[\"\\(\",\"\\)\"]]}});</script><script type=\"text/javascript\" src=\"/MathJax/MathJax.js\"></script>$$\\int_x^y f(x) dx$$<img src=\"images/test.png\"></body></html>";
[webview loadHTMLString:setHtml baseURL:[[NSBundle mainBundle] resourceURL]];
Run Code Online (Sandbox Code Playgroud)
编辑
如果你想帮助我做一个镜头,我通过创建一个示例项目让你更容易!
https://github.com/pyramation/math-test
git clone git@github.com:pyramation/math-test.git
Run Code Online (Sandbox Code Playgroud) 更新后的帖子
好吧,我已经设法使Markdown和MathJax一起工作,实际上它相对简单.我marked和MathJax一起使用过.
$(function() {
var $text = $("#text"), // the markdown textarea
$preview = $("#preview"); // the preview div
$text.on("keyup", function() {
$preview.html( marked($text.val()) ); // parse markdown
MathJax.Hub.Queue(["Typeset", MathJax.Hub, "preview"]); // then let MathJax do its job
})
});
Run Code Online (Sandbox Code Playgroud)
现在的问题是:我认为markdown在MathJax改变它之前解析我的数学.我该如何解决?我认为它固定在Math StackOverflow上,但如何?我需要停止markdown来解析数学
更新2
这是有效的,但不确定它是否与math.stackexchange的方式相同,但它似乎与我到目前为止测试的结果产生相似/相同的结果...
$(function() {
var $text = $("#text"),
$preview = $("#preview");
$text.on("keyup", function() {
$preview.html( $text.val() );
MathJax.Hub.Queue(["Typeset", MathJax.Hub, "preview"]);
});
MathJax.Hub.Register.MessageHook("End Process", function (message) {
$preview.html( marked($preview.html()) );
});
});
Run Code Online (Sandbox Code Playgroud)
老张贴下面
在math stackexchange中,我可以将MathJax与Markdown一起使用.我想知道我需要做什么?我可以使用像marked渲染Markdown …
我在一台新机器上使用pip安装了IPython/Jupyter(带有El Capitan的Macbook Air).在我的一个相当简单的笔记本中(使用相同版本的整个堆栈创建)所有方程式(内联或非内联)突然在右侧有一条垂直线; 与嵌入图像相同的高度.
甚至对于单个内联符号也是如此$x$.我没有复杂的宏或任何奇怪的LaTeX黑客攻击.
有人知道吗?
这是一张照片.
我在做一些写作,我使用MathJax来渲染数学.我偶尔也会包含由javascript动态生成的SVG图表.那些SVG图偶尔会包含数学.
我希望使用MathJax渲染这些SVG图中的文本元素.我知道如何渲染动态数学.但是,mathjax输出是<span>s,它不是有效的SVG并且不显示.
当我将MathJax配置为使用SVG输出模式时,这仍然存在,尽管这可能是由于SVG输出模式使用不当造成的.我通过MathJax CDN链接改为http://cdn.mathjax.org/mathjax/2.1-latest/MathJax.js?config=TeX-AMS-MML_SVG,它没有产生SVG输出.我还没能让MathJax真正输出SVG元素.
我考虑使用SVG <foreignObject>标签,这是非理想的,因为(据我所知)我必须指定宽度和高度,这是不方便的.
有没有更好的方法在HTML内部将SVJ中包含MathJax渲染文本?
我在我的页面上使用mathjax,我已经读过这个:
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
"HTML-CSS": { scale: 175}
});
</script>
Run Code Online (Sandbox Code Playgroud)
应该让字体更大.但相反,它所做的一切,是它使mathjax方程的容器更大,但字体保持不变.这是为什么?如何更改字体大小?
我一直在尝试一种方法来使页面元素与其两侧的元素重叠并保持它们之间的完美居中.我的解决方案是声明position:relative并设置负值margin大致等于元素宽度的50%,但我能够得到的最接近的是元素其父宽度的百分比的一半:
<!DOCTYPE html>
<html>
<head>
<style>
.clap {
position:relative;
margin:auto -16.66%; // This element's share of the entire parent's width = 33.33%
color:#f00
}
</style>
</head>
<body>
<center>
<span style="display:inline-block">1234567890<span class="clap">1234567890</span>1234567890</span>
</center>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我正在尝试找到一个仅使用CSS的解决方案,它将使用元素本身的宽度,而不是容器的宽度.我无法使用JavaScript来执行此操作,因为我计划将其作为MathJaX修复程序嵌入到\style命令中.(据我所知,MathJaX没有在其公式中提供嵌入式HTML或JavaScript代码,所以你明白为什么它必须只有CSS.我知道它可以用脚本编写.是否可以使用CSS,或者我的努力是无望的?
更新:感谢@Daiwei的建议,我想我正在寻找合适的解决方案.谢谢你的所有答案.这是修改后的代码:
.clap {
position:absolute;
display:inline-block;
transform: translate(-50%,0);
color:#f00 // for contrast
}
Run Code Online (Sandbox Code Playgroud)
我很乐意向您展示结果,但我无法上传图片.抱歉.
另一个更新:我上面提出的解决方案最适合在一个HTML/CSS背景,但它在MathJaX打破array,matrix或类似的表格环境.具体来说,如果元素太长,它会在左侧剪辑.相对定位将元素向左移动一半,但留下了过去的空间!修补它的任何想法?
This is my main activity
package com.example.mathjax_issues;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.util.Log;
import android.view.Menu;
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView=(WebView)findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new MyWebViewClient());
webView.loadUrl("file:///android_asset/MathJax/test/sample-asciimath.html");
// String html="<!DOCTYPE html> <html> <head> <title>MathJax AsciiMath Test Page</title> <!-- Copyright (c) 2012-2013 The MathJax Consortium --> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /> <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" /> <script type=\"text/javascript\" src=\"file:///android_asset/MathJax/MathJax.js?config=AM_HTMLorMML-full\"></script> </head> <body> <p> When `a …Run Code Online (Sandbox Code Playgroud) 我正在使用MathJax在我的网站上显示公式.开箱即用,MathJax识别许多函数,例如sin,cos......,但很多函数都缺失,例如sech(双曲正割)和csch(双曲余割).我知道我仍然可以通过\text诸如的方式在公式中使用这些函数
\text{sech} u
Run Code Online (Sandbox Code Playgroud)
但是,我宁愿做\sech工作.为此,我试过了
<div style="display:none">
$\DeclareMathOperator{\sech}{sech}
\DeclareMathOperator{\csch}{csch}$
</div>
Run Code Online (Sandbox Code Playgroud)
之后<body>.(我之后也尝试添加星号DeclareMathOperator.)
这几乎可行.现在的问题是
\sech^2 u
Run Code Online (Sandbox Code Playgroud)
把广场放在上面 sech,而不是在它之后(证明).有没有办法来解决这个问题?在MathJax中定义新函数('运算符')的首选方法是什么?当然有一个好方法,因为没有全方位的双曲线函数谁能活下去?!
我是MkDocs的新手,正在写一些需要乳胶的技术文档.我已成功建立了一个小型网站,其中包含一个MkDocs主题,但它无法正确显示乳胶方程式.我按照以下说明操作:
http://www.vlfeat.org/matconvnet/developers/
以及该页面的python-markdown-mathjax链接后面的说明.我还修改了为mkdocs.yaml文件添加适当的行,类似于:
https://github.com/EdyJ/vehicle-physics-docs/blob/master/mkdocs.yml
但是,发出命令'mkdocs build'仍会导致网站无法呈现方程式.我还尝试使用mkdocs build命令添加-x mathjax标志.
我已经在网上搜索过了,现在已经有很长一段时间了.任何人都可以阐明我需要做些什么来让这两个人一起玩?