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

tikzjax 能脱离服务器用吗?

[复制链接]

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2021-10-2 18:06
回复 24# abababa
那个https是不是就变成安全链接了,也没有这个问题了。
有可能,我看 22# hbghlyj 的论坛上的 tikzjax 也是用
  1. <script src="https://tikzjax.com/v1/tikzjax.js" type="text/javascript"></script>
复制代码
来引入的。而我在这里这样弄就不行,估计就是因为我这里是 http 没 s。

geogebra 导出的代码你发来瞧瞧?

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2021-10-2 18:42
回复 25# kuing
  1. <script type="text/tikz">
  2.   \begin{tikzpicture}
  3.     \draw (0,0) circle (1in);
  4.        
  5.         \draw[->,color=black] (-2.52,0) -- (2.24,0);
  6. \foreach \x in {-2,2}
  7. \draw[shift={(\x,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[below] {\footnotesize $\x$};
  8. \draw[->,color=black] (0,-1.02) -- (0,3.12);
  9. \foreach \y in {,2}
  10. \draw[shift={(0,\y)},color=black] (2pt,0pt) -- (-2pt,0pt) node[left] {\footnotesize $\y$};
  11. \clip(-2.52,-1.02) rectangle (2.24,3.12);
  12. \draw [samples=50,rotate around={0:(0,0)},xshift=0cm,yshift=0cm] plot (\x,\x^2/2/0.5);
  13.   \end{tikzpicture}
  14. </script>
复制代码
如上代码,先是画了一个圆,然后下边的那些,是从Geogebra里导出tikz后复制的。

那如果不引用js文件呢,而是编辑那个论坛的模板,直接加一段script上去,把js文件里的内容全复制粘贴过去,不就是变成本域名下面了吗,这样就可以用了吧。不过如果像上面那样抛物线的效果不太好,用着还是不行。

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2021-10-2 19:10
回复 26# abababa

将最后那个 plot 后面改成 (\x,{(\x)^2/2/0.5}) 即可。(当然这是 tikz 逗……

GGbra 的导出也不咋嘀,像 rotate around={0:(0,0)},xshift=0cm,yshift=0cm 这些明显多余,而应该加的 smooth 却不加。

3149

主题

8386

回帖

6万

积分

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

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2021-10-2 19:16
回复 21# hbghlyj
比如这样
  1. jQuery(document).ready(function(){for(let i=0;i<jQuery("script[type='text/tikz']").length;i++){jQuery("script[type='text/tikz']")[i].innerHTML=jQuery("script[type='text/tikz']")[i].innerHTML.replaceAll("&gt;",">").replaceAll("&lt;","<")}});
复制代码

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2021-10-3 09:36
回复 27# kuing

果然如此,那还是不用其它软件导出,直接写tikz代码方便。要是这个能用tkz-euclide就更好了,画平面几何图简单,好像也能自定义命令吧,像那个网页版的katex一样,自定义出那些命令就应该都能用了。

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2021-10-4 17:21
这个如果把
  1. var scripts = document.getElementsByTagName('script');
  2.   var tikzScripts = Array.prototype.slice.call(scripts).filter(e => e.getAttribute('type') === 'text/tikz');
复制代码
这两行的第一行,改成
  1. var scripts = document.getElementsByTagName('tikz');
复制代码
然后在index.html页面里,就不用写<script>这样的脚本了,而是写
  1. <tikz type="text/tikz">
  2.   \begin{tikzpicture}
  3.     \draw (0,0) circle (1in);
  4.   \end{tikzpicture}
  5. </tikz>
复制代码
标签变成tikz了,这样就属于安全的了吧,因为听说script可能不安全。
$type tikzjax1.js (953.26 KB, 下载次数: 232) $type index.html (707 Bytes, 下载次数: 164)

3149

主题

8386

回帖

6万

积分

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

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2021-11-15 05:28
<script src="//i.upmath.me/latex.js"></script>
i.upmath.me/g/

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2021-11-15 14:26
回复 32# hbghlyj

怎么玩?直接粘贴链接吗?

  1. [img]//i.upmath.me/svg/%5Cbegin%7Btikzpicture%7D%5Bdomain%3D0%3A2%5D%0A%5Cdraw%5Bvery%20thin%5D%20(-0.1%2C-0.1)%20grid%20(2.1%2C2.1)%3B%0A%5Cdraw%5B-%3E%5D%20(-0.2%2C0)--(2.2%2C0)%20node%5Bright%5D%20%7B%24x%24%7D%3B%0A%5Cdraw%5B-%3E%5D%20(0%2C-0.2)--(0%2C2.2)%20node%5Babove%5D%20%7B%24y%24%7D%3B%0A%5Cdraw%20plot%20(%5Cx%2C%7Bsin(%5Cx%20r)%7D)%20node%5Bright%5D%20%7B%24y%3D%5Csin%20x%24%7D%3B%0A%5Cdraw%5Bcolor%3Dblue%5D%20plot%20(%5Cx%2C%5Cx)%20node%5Bright%5D%20%7B%24y%3Dx%24%7D%3B%0A%5Cend%7Btikzpicture%7D[/img]
复制代码
好像真的可以

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2021-11-15 14:30
回复 33# kuing

那是不是可以直接用
  1. [img]//i.upmath.me/svg/代码[/img]
复制代码
的形式来插图了?比如
  1. [img]//i.upmath.me/svg/\begin{tikzpicture}\draw(0,0)circle(1);\end{tikzpicture}[/img]
复制代码

不行,还是得改一下,\ 要改为 %5C
  1. [img]//i.upmath.me/svg/%5Cbegin{tikzpicture}%5Cdraw(0,0)circle(1);%5Cend{tikzpicture}[/img]
复制代码

代码可否换行?
[img]//i.upmath.me/svg/%5Cbegin{tikzpicture}
%5Cdraw(0,0)circle(1);
%5Cend{tikzpicture}[/img]
不行……

不过,万一哪天这个 i.upmath.me 挂了,这些图也全挂,非长久之计……

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2021-11-15 15:31
回复 34# kuing

那这样的话,是不是能新建一个标签,比如叫[tikzimg] [/tikzimg],然后就像草稿本那样,运行一个javascript脚本,把这个标签里的反斜线跟换行符都替换了,这样不就能正确显示了。如果那个网站坏了,那只要把这个替换的脚本删除,不做替换,就恢复成原来的tikz代码了,复制一下就能在自己电脑上直接编译了。

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2021-11-15 18:01
[img]//i.upmath.me/svg/%5Cbegin{tikzpicture}%5Cdraw[red](0,0)circle(1);%5Cend{tikzpicture}[/img]
中括号影响 BBcode 的识别,这是个大问题……

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2021-11-15 19:01
本帖最后由 abababa 于 2021-11-15 19:07 编辑 回复 36# hbghlyj
哦,原来有这样一个函数可用,谢谢。

回复 37# kuing
那能不能换成标签那种呢?就是尖括号的那种。我做了一个html文档,画的就是之前画的两个图,是用javascript替换的。

$type index2.html (1018 Bytes, 下载次数: 140)

或者单独新建一个BBCode标签,比如叫[tikzimg],然后是在帖子里,那么帖子内容应该也有一个html的标签,然后就还是用document.getElementsBy...这样的函数取得帖子的标签,然后再把帖子里的文本做一下替换,就替换[tikzimg]里面那些,不过那个after的函数我就不知道怎么用了,好像只能是对尖括号的标签这样的东西用。

3149

主题

8386

回帖

6万

积分

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

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2021-11-15 20:09
将discuz的BBcode正则表达式
  1. \[b\]([^\[]*)\[\/b\]
复制代码
改为
  1. \[b\](.*?)\[\/b\]
复制代码
即可在BBcode中使用中括号.

3149

主题

8386

回帖

6万

积分

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

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2021-11-15 20:11
例如
  1. [b]字[字[/b]
复制代码
对于第一个无法match
而对于第二个可以match

3149

主题

8386

回帖

6万

积分

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

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2021-11-15 20:22
本帖最后由 hbghlyj 于 2021-12-20 14:49 编辑 这种.*?叫做lazy quantifier或者non-greedy quantifier
developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Quantifiers
it will stop as soon as it finds a match

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2021-11-15 20:30
回复 41# hbghlyj

这样改了之后,BBCode还能嵌套吗?比如加粗的斜体这种。

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2021-11-15 22:05
回复 39# hbghlyj

在哪里改?

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2021-11-16 00:39
回复 45# hbghlyj

你上Q
Q说

3149

主题

8386

回帖

6万

积分

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

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2021-11-16 02:45
  1. document.body.innerHTML=document.body.innerHTML.replaceAll('[tikz]','<tikz>').replaceAll('[/tikz]','</tikz>');document.querySelectorAll('tikz').forEach(function(elem){elem.innerHTML='<img src="https://i.upmath.me/svg/'+encodeURI(elem.innerHTML.replaceAll('&gt;','>').replaceAll('&lt;','<'))+'">'})
复制代码

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2021-11-16 14:27
  1. [tikz]\begin{tikzpicture}[line width=2pt]
  2. \draw[red] (0,0) circle (3 and 1);
  3. \node at (0,0) {$a<p>a</p>a$};
  4. \end{tikzpicture}[/tikz]
复制代码

对了,这个不能用 \tikz{...},必须用 tikzpicture 环境[小纠结]。
环境前后换行
  1. [tikz]
  2. \begin{tikzpicture}
  3. \draw sin(1,1)cos(2,0)sin(3,-1)cos(4,0);
  4. \end{tikzpicture}
  5. [/tikz]
复制代码

\xymatrix 也可以用
  1. [tikz]
  2. \xymatrix{A \ar[r]^f \ar[d]_g & B \ar[d]^{g'} \\
  3. D \ar[r]_{f'} & C}
  4. [/tikz]
复制代码

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

GMT+8, 2025-3-4 07:22

Powered by Discuz!

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