找回密码
 快速注册
搜索
楼主: abababa

tikzjax 能脱离服务器用吗?

[复制链接]

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2021-11-16 16:45
回复 49# kuing

整个替换会不会太慢,而且会不会在有些地方有问题?我觉得可以只替换帖子内容部分,就是div class="postmessage"的那个,这个是不是也能做?

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2021-11-16 17:00
回复 50# abababa

你应该是问 hbghlyj,我不清楚,暂时好像没什么问题

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2021-11-16 17:26
本帖最后由 abababa 于 2021-11-16 17:36 编辑 发一个试试

[tikz]\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=1.0cm,y=1.0cm]
\clip(-5.76,-6.46) rectangle (17.2,2.72);
\draw [line width=1.2pt,color=qqwuqq] (0,0) circle (2cm);
\draw [line width=1.2pt,color=qqwuqq] (0,2)-- (1.45,-1.38);
\draw [line width=1.2pt,color=qqwuqq] (0,2)-- (-1,-1.73);
\draw [line width=1.2pt,color=qqwuqq] (0,2)-- (0,-2);
\draw [line width=1.2pt,color=qqwuqq] (0,-2)-- (-2.84,-2);
\draw [line width=1.2pt,color=qqwuqq] (-2.84,-2)-- (0.66,0.46);
\draw [line width=1.2pt,color=qqwuqq] (-2.84,-2)-- (1.45,-1.38);
\begin{scriptsize}
\fill [color=qqqqff] (0,0) circle (1.5pt);
\draw[color=qqqqff] (0.16,0.26) node {$O$};
\fill [color=qqqqff] (0,2) circle (1.5pt);
\draw[color=qqqqff] (0.08,2.3) node {$A$};
\fill [color=qqqqff] (1.45,-1.38) circle (1.5pt);
\draw[color=qqqqff] (1.82,-1.54) node {$B$};
\fill [color=qqqqff] (-1.45,5.38) circle (1.5pt);
\draw[color=qqqqff] (-5.66,2.86) node {$B'$};
\fill [color=qqqqff] (0,-2) circle (1.5pt);
\draw[color=qqqqff] (0.08,-2.18) node {$P$};
\fill [color=qqqqff] (-1,-1.73) circle (1.5pt);
\draw[color=qqqqff] (-1.1,-1.44) node {$C$};
\fill [color=qqqqff] (-2.84,-2) circle (1.5pt);
\draw[color=qqqqff] (-3.04,-2.08) node {$T$};
\fill [color=qqqqff] (0.66,0.46) circle (1.5pt);
\draw[color=qqqqff] (0.88,0.72) node {$N$};
\fill [color=qqqqff] (-0.66,-0.46) circle (1.5pt);
\draw[color=qqqqff] (-0.88,-0.26) node {$M$};
\end{scriptsize}
\end{tikzpicture}[/tikz]

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2021-11-16 17:27
回复 52# abababa

怎么这么多乱码?

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2021-11-16 17:33
回复 53# abababa

1、勾选“禁用 Discuz!代码”
2、[ tikz ] 后面不要回车

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2021-11-16 17:38
回复 54# kuing

原来如此。那替换的时候,把tikz里的<br>都替换了就好了吧。不过看后面还有font什么的,不知道是什么。

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2021-11-16 17:42
回复 55# abababa

后面那堆估计是 color=qqwuqq 引起的(这是啥颜色),你去掉一下,再去掉“禁用 Discuz!代码”看看如何
PS、机器转码真的太……

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2021-11-16 17:47
我发现手机端似乎不行……

830

主题

4862

回帖

3万

积分

积分
36159

显示全部楼层

isee 发表于 2021-11-16 18:50
发一个试试

[tikz]\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=1.0cm,y=1.0cm]
...
abababa 发表于 2021-11-16 17:26


逮住你们在这里“图谋”了

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2021-11-16 19:08
回复 56# kuing
再试一下去掉color的,那些颜色是用Geogebra画图时加了颜色,然后软件自动生成的一些颜色,在前面有\definecolor{qqwuqq}{rgb}{0,0.39,0}这样的定义,如果去掉这些定义,在真的latex里就不能编译了,但在这里就是全变成黑色。

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2021-11-16 19:11
回复 59# abababa

果然是color的原因,那就不能直接用[color=]这种了啊,必须得在前面加些什么东西才行,比如[line width=1.2pt,color=],这样就行了,但fill里的color要加什么呢?

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2021-11-16 20:57
回复 60# abababa

color 前面加个逗号估计就可以。

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2021-11-16 21:29
引用时只引用到 [ tikz ] 而引用不到 [ /tikz ],但是单一个 [ tikz ] 也会被替换,造成错误。
能否做到匹配到完整的 [ tikz ] ... [ /tikz ] 才作替换呢?(而且不能跨楼层匹配)

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2021-11-16 21:46
回复  kuing

原来如此。那替换的时候,把tikz里的<br>都替换了就好了吧。 ...
abababa 发表于 2021-11-16 17:38
嗯,弄好了,[ tikz ] 后可以换行了

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2021-11-16 21:51
本帖最后由 hbghlyj 于 2022-8-2 22:03 编辑 我按照这个教程自己搭建了CORS proxy.好像成功了.示例如下:
  1. fetch("https://tranquil-ridge-80735.herokuapp.com/artofproblemsolving.com/m/texer/ajax.php:443", {
  2.   "headers": {
  3.    "content-type": "application/x-www-form-urlencoded; charset=UTF-8"
  4.   },
  5.   "referrer": "https://artofproblemsolving.com/",
  6.   "referrerPolicy": "origin",
  7.   "body": "action=aopscode&token=hlplshue&tex=JEEk&rerender=false","method": "POST"
  8. }).then(res => res.text()).then(res=>console.log(res))
复制代码
可以跨域请求.它的输出是aops的网页.

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2021-11-17 09:56
回复 62# kuing

昨天请网友帮着做了一下,他没替换那个尖角号,加上就行了吧:
  1. function process_tikz(tikz_str) {
  2.         var str = tikz_str.replace(/\[tikz\]|\[\/tikz\]|\n|\r|<br>/img, "");
  3.         console.log(str);
  4.         str = encodeURI(str);
  5.         return '<img src="https://i.upmath.me/svg/'+str+'" />';
  6. }
  7. var posts=document.getElementsByClassName('postmessage');
  8. for(var i = 0; i < posts.length; i++){
  9.         var post = posts[i];
  10.         var html = post.innerHTML;
  11.         html = html.replace(
  12.                 /\[tikz\]([\s\S]*?)\[\/tikz\]/igm,
  13.                 process_tikz
  14.         );
  15.         post.innerHTML = html;
  16. }
复制代码

15

主题

958

回帖

1万

积分

积分
12454

显示全部楼层

色k 发表于 2021-11-17 13:18
回复 65# abababa

这个挺好用,手机也能看了
尖括号好像不需要替换。
晚点再处理一下影响code里的代码的问题。

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2021-11-17 13:28
本帖最后由 abababa 于 2021-11-17 13:41 编辑 回复 66# 色k

我是这么想的,那个code其实就是想看源代码,那能不能就像latex代码那样,点一下代码然后出来一个框,里面是代码。然后我试着做了一下:
  1. function close_tikz_window(){
  2.         var tikz_window=document.getElementById('tikz_window');
  3.         if(tikz_window){
  4.                 tikz_window.remove();
  5.         }
  6. }
  7. function show_tikz_window(tikz_code){
  8.         close_tikz_window();
  9.         var tikz_window=document.createElement('div');
  10.         tikz_window.id='tikz_window';
  11.         tikz_window.style='position: fixed; z-index: 201; left: 317px; top: 228px; width: 500px;border:2px green solid;';
  12.         tikz_window.innerHTML='<div><a href="javascript:;" class="float_close" onclick="close_tikz_window();">关闭</a></div><div><pre>'+decodeURI(tikz_code)+'</pre></div>';
  13.         document.body.append(tikz_window);
  14. }
  15. function process_tikz(tikz_str) {
  16.         // 原始的tikz代码
  17.         var str = tikz_str.replace(/\[tikz\]|\[\/tikz\]|\n|\r/img, "");
  18.         str=str.replace('&lt','<').replace('&gt;','>');
  19.         var tikz_str=encodeURI(str);
  20.         //去掉换行的tikz代码
  21.         var mystr=str.replace(/<br>/img,'');
  22.         //编码
  23.         mystr = encodeURI(mystr);
  24.         //创建一个图片,点击图片时显示原始的tikz代码
  25.         var s = '<img src="https://i.upmath.me/svg/'+mystr+'" onclick="show_tikz_window(\''+tikz_str+'\');" />';
  26.         console.log(s);
  27.         return s;
  28. }
  29. var posts=document.getElementsByClassName('postmessage');
  30. for(var i = 0; i < posts.length; i++){
  31.         var post = posts[i];
  32.         var html = post.innerHTML;
  33.         html = html.replace(
  34.                 /\[tikz\]([\s\S]*?)\[\/tikz\]/igm,
  35.                 process_tikz
  36.         );
  37.         post.innerHTML = html;
  38. }
复制代码
点那个图片就能出来一个框,里面是源代码。改了一下,发现对应的有一个decodeURI函数,那先把它encodeURI,然后传到函数里,就变成能传的字符串了,然后显示的时候再decodeURI一下,就变回编码前的那样了。

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2021-11-17 14:05
回复 67# abababa

觉得用文本框好点,自动就带那个滚动条,也不用考虑内容多少的问题,都能放下:
  1. function close_tikz_window(){
  2.         var tikz_window=document.getElementById('tikz_window');
  3.         if(tikz_window){
  4.                 tikz_window.remove();
  5.         }
  6. }
  7. function show_tikz_window(tikz_code){
  8.         close_tikz_window();
  9.         var tikz_window=document.createElement('div');
  10.         tikz_window.id='tikz_window';
  11.         tikz_window.style='position: fixed; z-index: 201; left: 317px; top: 228px; width: 500px;border:2px green solid;';
  12.         tikz_window.innerHTML='<div><a href="javascript:;" class="float_close" onclick="close_tikz_window();">关闭</a></div><div><textarea style="width:99%;height:300px;">'+decodeURI(tikz_code)+'</textarea></div>';
  13.         document.body.append(tikz_window);
  14. }
  15. function process_tikz(tikz_str) {
  16.         // 原始的tikz代码
  17.         var str = tikz_str.replace(/\[tikz\]|\[\/tikz\]|<br>/img, "");
  18.         str=str.replace('&lt','<').replace('&gt;','>');
  19.         var tikz_str=encodeURI(str);
  20.         //去掉换行的tikz代码
  21.         var mystr=str.replace(/\n|\r/img,'');
  22.         //编码
  23.         mystr = encodeURI(mystr);
  24.         //创建一个图片,点击图片时显示原始的tikz代码
  25.         var s = '<img src="https://i.upmath.me/svg/'+mystr+'" onclick="show_tikz_window(\''+tikz_str+'\');" />';
  26.         console.log(s);
  27.         return s;
  28. }
  29. var posts=document.getElementsByClassName('postmessage');
  30. for(var i = 0; i < posts.length; i++){
  31.         var post = posts[i];
  32.         var html = post.innerHTML;
  33.         html = html.replace(
  34.                 /\[tikz\]([\s\S]*?)\[\/tikz\]/igm,
  35.                 process_tikz
  36.         );
  37.         post.innerHTML = html;
  38. }
复制代码

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2021-11-17 14:34
回复 68# abababa

嗯,这个好点。

str=str.replace('&lt','<').replace('&gt;','>');
这句的确是多余的,而且也没写对,不止是 lt 后面漏了 ;

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 06:59

Powered by Discuz!

× 快速回复 返回顶部 返回列表