çŸåšã®MathJaxå®è£ ã¯ãçŸä»£ã®äžçã§ã¯å®å šãšã¯èŠãªãããŠããããããã©ã«ãã®Content-Security-PolicyïŒhttp://www.w3.org/TR/CSP/ïŒããããŒã§ã¯äœ¿çšã§ããªã次ã®æ©èœã䜿çšããŠããŸãã
åé¡ïŒ2ïŒãä¿®æ£ããå¿ èŠããããã©ããã¯è°è«ã®äœå°ããããŸãããContent-Security-Policyã«ã¯ãMathJaxãä¿¡é Œã§ããã¹ã¯ãªãããšããŠå®è¡ããã®ã«ååãªç²åºŠããªããåæã«ä»ã®ãã¹ãŠã®JavaScriptã解éããªããããå°ãªããšãïŒ1ïŒãä¿®æ£ããå¿ èŠããããŸããç¹å¥ã«ä¿¡é Œããããã¡ã€ã«ã çŸåšãMathJaxã䜿çšãããå Žåã¯ãã©ãã§ãevalïŒïŒãèš±å¯ããå¿ èŠããããŸãã ãã®åé¡ïŒ1ïŒã¯ããã°ïŒ130ãåŒãèµ·ãããŸãïŒMathJaxã¯ECMAScript 5ã®å³å¯ã¢ãŒããšäºææ§ããããŸããïŒã
çŸåšãMathJaxãæ©èœãããå¯äžã®æ¹æ³ã¯ãããŒã«ã«ã«ã€ã³ã¹ããŒã«ãããMathJaxã³ãŒãã䜿çšããŠããå Žåã§ãã次ã®CSP HTTPããããŒã䜿çšããããšã§ãïŒFirefox 13.0以äžã§ã¯éæšå¥šã®ãoptionsãããããŒãå«ãŸããŠããŸãïŒã
X-Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; options eval-script
X-WebKit-CSP: default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'
ãããã®ããããŒã«ãããCSPãæäŸããä¿è·ãå¯èœã«ãªããMathJaxãããŒãžã³ã³ãã³ããšåããªãªãžã³ããé åžãããŠããå Žåã§ããMathJaxãæ©èœããããã«ãªããŸãã
å®å
šã§ãªãè©äŸ¡ã¯ç§ã«ãšã£ãŠã倧ããªåé¡ã§ãã éããªãChromeã¯ããã¹ãŠã®æ¡åŒµæ©èœã«eval
ã®äœ¿çšãçŠæ¢ããã³ã³ãã³ãã»ãã¥ãªãã£ããªã·ãŒãæ¡çšããããã«åŒ·å¶ããŸãã çŸåšãããã«æºæ ããããã«Readiumãã¢ããã°ã¬ãŒãããããšããŠããŸãããããã䜿çšããŠMathJaxã䜿çšããããšã¯ã§ããŸããã
+1
ã¿ããªããããšãã 調ã¹ãŠã¿ãŸãã
åãªãäºåçãªæŽæ°ã§ãã ããã€ãã®åé¡ãããã«ä¿®æ£ã§ããããã§ãïŒChromeã¹ãã¢ã«ãšã£ãŠã¯ååã ãšæããŸãïŒã ãã ããããã©ãŒãã³ã¹ãã©ã®ããã«äœäžââãããã¯ããããŸããããæ³åã®ãšãããããã¯æªãçµæã«ãªãå¯èœæ§ããããŸãã @dpvcãããããã詳现ã«èª¿ã¹ãããããããã€ãã®å®éšçãªãã©ã³ããäœæã§ããããã«ãªã£ãããææ°æ å ±ããç¥ããããŸãã
ç¹å®ã®ã³ãŒãã«é¢ããè¿œå ã®ã³ã¡ã³ãã質åãææ¡ãããå Žåã¯ããç¥ãããã ããã
ç§ã¯ãããèªåã§èª¿ã¹ãã®ã«å°ãæéãè²»ãããŸããã ææå°æ©ã®æé©åããããå¿ èŠãããããã§ãã æååã®è©äŸ¡ã¯ãã¯ããŒãžã£ãäœæãããããéãã¯ãããŸããã
ãŸãã eval()
ãå®è¡ã§ãããã©ããã確èªããããã ãã«ãMathjaxãããŒããããã¹ãŠã®ããŒãžã§eval()
ãå®è¡ããã¹ãã§ã¯ãããŸããã åºæ¬çã«ãããã¯è¡ãå¿
èŠããããŸãã
new Function()
åŒã³åºãã¯é床ã®ããã§ã¯ãªããã¡ã¢ãªã®ããã§ãã new Function()
ã¯ã¯ããŒãžã£ãäœæããªããããããŒã«ã«ã¹ã³ãŒããä¿æããŸããã ããã¯ãªããžã§ã¯ãæåããã°ã©ãã³ã°ã¢ãã«ã®äžå¿ã§ãããå€ãã®ãªããžã§ã¯ãã䜿çšãããŠãããããã¡ã¢ãªäœ¿çšéã«åœ±é¿ãäžããå¯èœæ§ããããŸãã æè¿ã®ãã©ãŠã¶ã§ã¯ãã¹ããè¡ã£ãŠããŸããã
eval
ã®äœ¿çšæ³ã«é¢ããŠã¯ãMathJaxã¯ã€ã³ã©ã€ã³æ§æãããã¯ãåŠçããããã«ããã䜿çšããŸãããçŸæç¹ã§ã¯ç°¡åã«çœ®ãæããããšã¯ã§ããŸããã ãããã£ãŠãMathJaxã®ãå®å
šãªãããŒãžã§ã³ã§ã¯ãå€éšæ§æãã¡ã€ã«ã䜿çšããå¿
èŠããããŸãïŒããã¯åé¡ã§ã¯ãªãã¯ãã§ããããšã«ããã»ãã¥ãªãã£ããªã·ãŒã«æ²¿ã£ãŠããå¯èœæ§ããããŸãïŒã åç
§ããeval
åŒã³åºãã¯ã eval
ãå®è¡ã§ãããã©ãããå€æããããã§ã¯ãªããã°ããŒãã«åå空éã§å®è¡ã§ãããã©ãããå€æããããã®ãã®ã§ãïŒãã¹ãŠã®ãã©ãŠã¶ãŒã«åœãŠã¯ãŸãããã§ã¯ãããŸããïŒã ã»ãã¥ãªãã£ã®ããŒãºã«å¯Ÿå¿ã§ããããŒãžã§ã³ã§ã¯ããããåé€ããå¿
èŠãããããšãèªèããŠããŸãã
ããã¯ãJavaScriptã§ã¯ããŒãžã£ãæ©èœããæ¹æ³ã§ã¯ãããŸããã ããŒã«ã«ã¹ã³ãŒãã®ãã¹ãŠãä¿æããããã§ã¯ãããŸããã é¢æ°ã䜿çšãããã®ã ãããã£ããã£ããŸãã CONSTRUCTOR
é¢æ°ã¯ãããŒã«ã«ã¹ã³ãŒãããäœã䜿çšãããã¯ããŒãžã£ãŒãäœæããããã®ã³ã¹ãã¯ããããŸããã ããã¯ãååšããªãã£ãåé¡ã®ææå°æ©ãªæé©åã§ãã
eval
ã«é¢ããéããç§ã®ãã€ã³ãã¯ãå¿
èŠããªãå Žåãç¹ã«å®å
šã§ãªãeval()
ã䜿çšããã³ãŒãã®å Žåã¯ãããŒãžäžã§ã³ãŒããå®è¡ããã¹ãã§ã¯ãªããšããããšã§ãã ãã®EVAL
é¢æ°ã¯ãMathjaxãã€ã³ã©ã€ã³æ§æã«å«ãŸããŠããå Žåã«ã®ã¿äœ¿çšãããããå¿
èŠã«ãªããŸã§ãã¹ããå®è¡ããªãã§ãã ããã ããããå®éã«ã¯ããªãæ§æã¯å®è¡å¯èœã³ãŒãã§ãªããã°ãªããªãã®ã§ããããã é¢æ°ã«æž¡ãããã®ã¯ãå®éã«ã¯JSONã®ãã£ã³ã¯ã«ãããŸããã JSONãæž¡ããŠè§£æããMathJAXã«é¢æ°ãåŒã³åºãããŠã¿ãŸãããïŒ
ããã¯ãJavaScriptã§ã¯ããŒãžã£ãæ©èœããæ¹æ³ã§ã¯ãããŸããã ããŒã«ã«ã¹ã³ãŒãã®ãã¹ãŠãä¿æããããã§ã¯ãããŸããã é¢æ°ã䜿çšãããã®ã ãããã£ããã£ããŸãã
ç©äºã¯ããã»ã©æ確ã§ã¯ãªããšæããŸãã ãŸããããã¯ãã³ãŒãã®ãã®éšåãèšè¿°ããã2008幎ã«ã¯ããã§ã¯ãããŸããã§ããã ä»æãã¹ããå®è¡ãããšããããã®æç¹ã§äœ¿çšãããŠããSafariãFirefoxãOperaãIEã®ããŒãžã§ã³ããã¹ãŠã説æãããšããã«æ©èœããããšã確èªããŸããïŒäœ¿çšããå€æ°ã«é¢ä¿ãªããã¹ã³ãŒããã§ãŒã³å šäœãã¯ããŒãžã£ãŒã«ä¿æãããŸããïŒã ïŒã ãããåç §ããŠãããµã€ãã¯ä»æïŒæšæ¥ã¯çšŒåããŠããïŒããŠã³ããŠããããã§ãã®ã§ã詳现ã¯ç¢ºèªã§ããŸããããECMAScript262ä»æ§ã®äžéšã ã£ãã®ãèŠããŠããŸãã
SafariãChromeãFirefoxãããã³IEã®çŸåšã®ããŒãžã§ã³ã¯ã説æã©ããã«æ©èœããŠããããã«èŠããããããã以éãç¶æ³ãå€åããŠããŸãã å€æŽãçºçããã®ã¯Safari4ãFirefox 3.6ãIE9ã®ããã§ãã ãã¹ãããå€ãããŒãžã§ã³ã®Chromeããªãã®ã§ãããã§ã®å±¥æŽãããããŸããã IE8ã¯å€ãåäœãããŸãããOpera12ã¯ãŸã åäœããŸãã ã¢ãã€ã«ããã€ã¹ããã§ãã¯ããŠããŸããã ãããã®ãã©ãŠã¶ã®äžéšã¯MathJaxã®ãµããŒããªã¹ãã«å«ãŸããŠãããããMathJaxå šè¬ã«ã€ããŠèæ ®ããå¿ èŠãããåé¡ã§ãã ãã¡ãããããªãã®ããŒãºã«åãããŠäœãã解決ã§ãããšç¢ºä¿¡ããŠããŸãã
JSONããŒã¿ã®å Žåãæ§æãããã¯ã¯åãªãMathJax.Hub.Config()
åŒã³åºã以äžã®ãã®ã§ããå¯èœæ§ããããŸãã ããšãã°ãã€ãã³ããªã¹ããŒãã€ã³ã¹ããŒã«ããããTeXå
¥åjaxã«é¢æ°ãè¿œå ããŠãè¿œå ã®ã³ãã³ããå®è£
ãããã§ããŸãã ãããã«ã¯å®è¡å¯èœã³ãŒããå«ãŸããŠãããããJSONããŒã¿ã®äžéšã«ããããšã¯ã§ããŸããã ãã®æ©èœã¯åžžã«äœ¿çšãããããã§ã¯ãããŸããããå®éã®Webãµã€ãã§äœ¿çšãããŠããããšã¯ç¢ºãã§ãã ããã«ããã¹ãŠã®ã¿ãŒã²ãããã©ãŠã¶ã«JSONã©ã€ãã©ãªãçµã¿èŸŒãŸããŠããããã§ã¯ãªãããã解æãå®è¡ããã«ã¯è¿œå ã®ã©ã€ãã©ãªãå¿
èŠã«ãªããŸãã ïŒç¢ºãã«ä¹ãè¶ããããªãããã§ã¯ãããŸããããããŠã³ããŒãããã³ãŒããå¢ããŸããïŒ
ãããå€æŽãããš+1ãããïŒãšãããïŒGithubãMathJaxããŠã£ãã§åã³èš±å¯ããããã«ãªããŸãã
@ketchãã®ç¹ã«é¢ããŠGithubãçºèšããããã®ãªãã¡ã¬ã³ã¹ã¯ãããŸããïŒ ãã®åé¡ãGithubWikiã®ã»ãã¥ãªãã£ã«ã©ã®ããã«åœ±é¿ãããããããŸããã
@pkraãããåå ãã©ããã¯ããããŸããããããã ãšæããŸãã ç§ã¯ãã®ããŒãžã®ã³ã¡ã³ãã«ãã£ãŠããã«å°ãããŸããïŒ
ãããŠãåç §ããŠãã ãã
https://github.com/blog/1477-content-security-policy
MathJaxã®ãµããŒãã¯ãCSPæ©èœã®å®è£ ãšåæã«æ¶æ» ãããšæããŸãã
ããããšããããã¯é¢çœãã§ãã ãã®2ã€ãé¢é£ããŠããã®ãã©ããã¯ããããŸãããã誰ãç¥ã£ãŠããã®ã§ãããããgithubããŒã ã¯ãMathJaxãåé€ããçç±ã«ã€ããŠå ¬ã«è©±ãåã£ãããšã¯ãããŸããã 圌ãã®ã»ããã¢ããã«ãšã£ãŠå®éã«ã¯åé¡ã§ã¯ãªãäœããçç±ã ã£ããšããããããã¯æ®å¿µãªããšã§ãã
CSPã«æºæ ããããã®+1ã
+1
ç§ã¯ãã®ã¹ã¬ãããèªãã§ããããéåžžã«æ å ±çã§ããªãåãããªãããšãçºèŠããŸããã ç§ã¯ã圌ã[github]ãã»ãã¥ãªãã£ã®åé¡ã§execãCSPã®ãããªãã®ãé²ãããããèš±å¯ããªãã ãããšããç§ã®äž»åŒµãè³ããã€ããã§ãã
ãã®ã³ãŒããµã³ãã«ãšéå»ã®ããŒãžã§ã³ã®ç¥è©±çãªã³ã³ãã¥ãŒã¿ã®äŒæ¿ã«æããããŠããããšã«å ããŠãããã§ãéåžžã«èå³æ·±ããšæããŸãããããŠãæ©èœãç¶ç¶ããŠäœ¿çšã§ããããã«ããå¿ èŠããããšããç«å ŽãåããŸãããããã¯å¹žãã劚ããããšã¯ãããŸãããã»ãã¥ãªãã£é¢é£ã®äžçã§MathJAXã䜿çšãããã¹ã
ã¡ãªã¿ã«ãMathJaxãåé€ããçç±ã«ã€ããŠGithubãµããŒãã«ã¡ãŒã«ãéããŸããã è¿ä¿¡ã¯æ¬¡ã®ãšããã§ãã
CSPããã®çç±ã®1ã€ã§ããã ãã®ä»ã®çç±ã«ã¯ãããã©ãŒãã³ã¹ã®åé¡ãããã³ããŒãã¡ã³ããã³ã¹ãå«ãŸããŸãã åé€ããçç±ãåãé€ããå Žåã¯ãè¿œå ããããšãæ€èšãããããããŸãããããããçŽæããããšã¯ã§ããŸããã
@ketchã«æè¬ããŸããããã¯ç¥ã£ãŠãããšè¯ãããšã§ãã
@dpvcããã次ã®ãã€ã«ã¹ããŒã³ã«è¿œå ããå¿ èŠããããŸããïŒ
ïŒ+1ïŒ
@pkra ãè¿œå ããäºå®ã§ããã ãŸã ãªã¹ãã®äžã§ããã»ã©æ°å€çã«äžãã£ãŠããŸããã§ããã
@dpvcå³ã ãããä¿®æ£ããã«ã¯ãå€§å¹ ãªå€æŽïŒç¹ã«ã€ã³ã©ã€ã³æ§æã®å ŽåïŒãå¿ èŠãã©ãããã€ãŸãããŒãžã§ã³ãžã£ã³ãã匷å¶ããå¿ èŠããããã©ãããã»ãšãã©èããŠããŸããã
MathJaxå€æ°ãä»ããæ§æãå¯èœã«ããããã«è¡ã£ãå€æŽã«ããããžã£ã³ãããã«æ§æãå«ããããšãã§ããããã«ãªããŸãã äžäœäºææ§ããããMathJax.jsã®ãå®å šãªãããŒãžã§ã³ãå¥éäœæããªããŠãå®è¡ã§ãããšç¢ºä¿¡ããŠããŸãã ãã¡ãããéçºäžã«ã¢ã³ããŒã¬ã³ããäœåã«æã蟌ããããªäœããçŸããå¯èœæ§ããããŸãã ãŸã æžãããŠããªããããã¹ããããŠããŸããã
MathJaxãå®å šã«ããããã®+1ã ã»ãã¥ãªãã£äžã®æžå¿µããããã®çŽ æŽãããã©ã€ãã©ãªãæ¬çªç°å¢ã§äœ¿çšã§ããªãã®ã¯æ®å¿µã§ãã
ãã®åé¡ã«é¢ããé²å±ã¯ãããŸããïŒ Chromeæ¡åŒµæ©èœãåããããŒãžã«MathJaxãããã°ã©ã ã§æ¿å
¥ããããšããŠããŸãããã¬ã³ã¬ã®å£ã§ã¯ãªãã«ããŠããå°ãªããšããŸãšããªå
åºãªå£ã«ã¶ã€ãã£ãŠããŸãã emichael / texthingsïŒ4ã§èª¬æãããŠããããã«ãç§ã®æ倧ã®åé¡ã¯MathJax.js:265
ã§ãã ç§ã¯ãžã®åŒã³åºããæé€ããããšãã§ããŸãã
new Function()
äžèšã®ããã«ã¯ããŒãžã£ã«å€æããããšã§éåžžã«ç°¡åã§ããã eval
ãŸãã¯ã€ã³ã©ã€ã³ã¹ã¯ãªããã䜿çšããŠåé¿ããæ¹æ³ãããããŸããã
ç·šéïŒç§ã¯ãŠãŒã¶ãŒã«å®å šã§ãªãè©äŸ¡ãšå®å šã§ãªãã€ã³ã©ã€ã³ãCSPã«è¿œå ãããªãã·ã§ã³ãäžããããšã«ãªããŸããããMathJaxãå®å šãªCSPã«è¿œå ããããã®é·æçãªä¿®æ£ã¯çŽ æŽãããã§ãããã ïŒ+1ïŒ
@emichael ã次ã®ãªãªãŒã¹ïŒæ¥æã«äºå®ïŒã«å€æŽãå«ããäºå®ã§ããããŸã è¡ã£ãŠããŸããã ãã®çç±ã®1ã€ã¯ãå®éã«ããããã¹ãããæ¹æ³ïŒãããå¿ èŠãšããç°å¢ãã»ããã¢ããããæ¹æ³ïŒã調ã¹ãŠããªãããšã§ãã ã©ããèŠãã°ããããæå°éã®ãã¹ãç°å¢ãäœã§ãããã«ã€ããŠã®ææ¡ãããã ããã°ãããã¯åœ¹ã«ç«ã¡ãŸãã
ãŸããevalã«é¢ãããšã©ãŒã¯ãå®è¡æãŸãã¯ã³ã³ãã€ã«æã«çºçããŸããïŒ ã€ãŸããMathJax.jsã«evalåŒã³åºããå«ãŸããŠããå Žåãããã䜿çšãããŠããªãå Žåã§ãçºçããŸããããããšãevalãå®éã«è©Šè¡ãããå Žåã«ã®ã¿çºçããŸããïŒ ç§ãä»æ§ãèªãã ããšã¯ããããå®è¡æãšã©ãŒã§ããã¹ãã ãšç€ºåããŠãããããã¯ç§ã«ãšã£ãŠç©äºãããè¯ãããã§ãããããããªãã¯çããç¥ã£ãŠãããããããªããšæããŸããã
ãã¹ããµãŒããŒãããå Žåã¯ãå¿çããããŒã§Content-Security-Policyãèšå®ããã ãã§ãã script-src
ã«'unsafe-eval'
ãŸãã¯'unsafe-inline'
ãå«ãŸããŠããªãããšã確èªããŠãã ããïŒGitHubèªäœãè¯ãäŸã§ãïŒã ããã§ãªãå Žåã¯ãæå°éã®Chromeæ¡åŒµæ©èœã䜿çšããŠãããããŒãèªåã§æ¿å
¥ã§ããŸãã
ã©ã³ã¿ã€ã ãšã©ãŒã§ãã
ããããšãã äœãã§ãããèŠãŠãããŸãã
evalã³ãã³ãã¯ãã€ã³ã©ã€ã³æ§æãããã¯ãåŠçããããã«ã®ã¿äœ¿çšãããŸãïŒãã®å Žåãã°ããŒãã«å€æ°ãã©ã®ããã«åŠçããããããã¹ãããããã®æåã®ã³ãã³ãããããŸãïŒã æåã®èšå®ã¯ãã€ã³ã©ã€ã³æ§æã䜿çšããããŸã§å»¶æã§ããŸããã€ã³ã©ã€ã³æ§æã®äœ¿çšãé¿ããå Žåã¯ãããã§å¯ŸåŠããå¿ èŠããããŸãã v2.3ã§ã¯ãïŒãã®åé¡ã解決ããããã®æºåãšããŠïŒevalãªãã§ã€ã³ã©ã€ã³æ§æãè¡ãæ°ããæ¹æ³ãè¿œå ãããããevalåŒã³åºããããªã¬ãŒããã«HTMLãã¡ã€ã«å ã«MathJaxæ§æãå«ããããšãã§ããŸãã
OKã new Function()
ãševal()
ã®åŒã³åºããåé€ããããããäœæããŸããã ããã¯ææ°ã®éçºãã©ã³ãã«åºã¥ããŠããŸãããå¿
èŠã«å¿ããŠãf220993ã«ãªã¹ããããŠããå€æŽãMathJax.js
ã®ãã¹ã¿ãŒã³ããŒã«ãå ããããšãã§ããã¯ãã§ãã ã€ã³ã©ã€ã³ã¹ã¿ã€ã«ãèš±å¯ããå¿
èŠããããŸãïŒå®éã«ã¯ãããåé¿ããããšã¯ã§ããŸããïŒã about:blank
ãžã®ãã©ã³ãåç
§ãããã®ã§ãMathJaxã¯ïŒãããã¯ãŒã¯ã¢ã¯ã»ã¹ãè¡ããªããŠãïŒæ¬ èœããŠãããã©ã³ããžã®å¿çããã¹ãã§ããããã about:
ãfont-src
ã«è¿œå ããããšããå§ãããŸãã
è¯ãïŒ ã¹ã¿ã€ã«ã«'unsafe-inline'
ã絶察ã«å¿
èŠãªçç±ãããããŸãã
script-src 'unsafe-inline'
æš©éã«é¢ããéããç§ãæ£ããç解ããŠããã°ãã¹ã¯ãªããã¯ããŠãŒã¶ãŒãæåã«ã€ã³ã©ã€ã³MathJaxæ§æãå«ããå Žåã«ã®ã¿ã€ã³ã©ã€ã³åãããŸãã script-src
ã«'unsafe-inline'
ããªããŠããã¹ãŠãæ©èœããå¯èœæ§ããããããããã§åé¡ãããŸããã ãã ããããã¥ã¡ã³ãã§èšåããå¿
èŠããããŸãã
ã€ã³ã©ã€ã³ã¹ã¯ãªããã«ã€ããŠã®ããªãã®ç解ã¯æ£ããã§ãã 䜿çšããå¿
èŠã®ãªãã€ã³ã©ã€ã³æ§æãããã¯ã䜿çšããŠããå Žåãé€ãã script-src 'unsafe-inline'
ã¯å¿
èŠãããŸããã ããŒã«ã«ã®MathJaxæ§æãã¡ã€ã«ïŒ config=
ã«è¿œå ïŒã䜿çšããããéåžžã¯MathJax.Hub.Config()
ã«æž¡ããªããžã§ã¯ãã«MathJax
å€æ°ãèšå®ããéåžžã®ã¹ã¯ãªãããã¡ã€ã«ã䜿çšã§ããŸãã MathJax.Hub.Config()
ãããŠãMathJax.jsãããŒãããã¹ã¯ãªããã®_å_ã«ãã®ãã¡ã€ã«ãããŒãããŸãã ããšãã°ã
var MathJax = {
tex2jax: {
inlineMath: [['$','$'],['\\(','\\)']],
procesEscapes: true
}
};
mathjax-config.js
ãšãããã¡ã€ã«ã«å
¥ããŠãã
<script src="mathjax-config.js"></script>
<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script>
ãããããªãã®èŠä»¶ãåŠçããããšãé¡ã£ãŠããŸãã
確ãã«ããã§ãã è¿ éãªä¿®æ£ãããããšãïŒ
ããã»ã©éãã¯ãªãã£ããšèšã人ãããŸããïŒãã®åé¡ã¯2幎éå ¬éãããŠããŸãïŒïŒã次ã®ãªãªãŒã¹ã«åããŠããŒã¯ãä»ããŠããšã«ããããã«åãæãã£ãŠããã®ã§ãã³ã¡ã³ãã¯æ¬¡ã®ããã«ãªããŸãããé©åãªæéã
=>ããŒãžãããŸããã
ã§ã¯ã誰ããgithubã«mathjaxãèš±å¯ããããã«äŸé ŒããããšããããŸããïŒ mathjaxã§ã¬ã³ããªã³ã°ããããã«ãgithubã®åé¡ã§texãèšè¿°ã§ããdotjsãã¡ã€ã«ãäœæããããšã¯ãŸã ã§ããŸãã...
ïŒããã®äŸ-httpïŒ//stackoverflow.com/questions/16889421/how-to-insert-javascript-to-enable-mathjax-on-github-wiki-pages-倱æããŸããïŒ
ããã«ã¡ã¯ã
ç§ã¯çŸåšãgithubããŒãžã§jekyllãµã€ãããã¹ãããŠããããã®èšäºã«åŸã£ãŠãããã€ã³ã¯ã«ãŒããã¡ã€ã«ã«ä»¥äžãè¿œå ããŠããŸãã
<script type="text/javascript"
src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
ããã¯httpsãŸãã¯httpã§åäœããã¯ãã§ãã ãã ããhttpsã䜿çšããŠããã°ããã©ãŠã¶ã«ããŒããããšãã¯ãªãã¯ããŠå®å šã§ãªãã¹ã¯ãªãããèš±å¯ãããŸã§ãããã°ãæ··ä¹±ããŠããããã«èŠããŸãã ã©ãããã°ãããä¿®æ£ã§ããŸããïŒ
@silkyç¹å®ã®AFAWKã¯ãããŸããã ã¯ã©ã€ã¢ã³ãåŽã¯ããããããªããšæããŸãããMathJaxããŒãã¯çç£çãªä»£æ¿æ段ãæäŸããå¯èœæ§ããããŸãã
@ diego898äžè¬çãªè³ªåã¯ã http ïŒ//groups.google.com/forum/#ïŒforum / mathjax-usersã§ããé©åã«é©åããŸãã ã©ã€ãããŒãžããã©ãŠã¶ãOSã®è©³çŽ°ãªã©ãžã®ãªã³ã¯ãåžžã«å«ããŠãã ãããããããšãããããŸãã
@pkraãã®åé¡ã«é¢é£ãããã°ãªã®ãããããšãèªåã®æ§æã®åé¡ãªã®ãããããªãã£ããšç解ããŠããŸã
@ diego898åé¡ãããŸããã ããªãã説æããŠããããšã¯ããã®åé¡ã«é¢é£ããŠããããã«ã¯èãããŸããã
ç§ã¯ãŸã ãã®åé¡ãèŠãŠããŸãã https://github.com/mathjax/MathJax/issues/1988ãåç §ããŠãã ããã
@kaushalmodi ãåé¡ãåé¿ããæ¹æ³ã«ã€ããŠã®äžèšã®ç§ã®ã³ã¡ã³ãããŸãã¯ããªãããªã³ã¯ããŠããåé¡ãžã®ç§ã®ã³ã¡ã³ããåç §ããŠãã ããã ã¹ã¯ãªããã®å®è¡ãå¶éããCSPã䜿çšããŠããå Žåã¯ãMathJaxã®æ§ææ¹æ³ãå€æŽããå¿ èŠããããŸãã
å ã®åé¡ã®ïŒ2ïŒã¯è§£æ±ºãããŸãããïŒ mathjaxv3ã¯ãŸã æ¿å ¥ããŠããããã§ã
æãåèã«ãªãã³ã¡ã³ã
@kaushalmodi ãåé¡ãåé¿ããæ¹æ³ã«ã€ããŠã®äžèšã®ç§ã®ã³ã¡ã³ãããŸãã¯ããªãããªã³ã¯ããŠããåé¡ãžã®ç§ã®ã³ã¡ã³ããåç §ããŠãã ããã ã¹ã¯ãªããã®å®è¡ãå¶éããCSPã䜿çšããŠããå Žåã¯ãMathJaxã®æ§ææ¹æ³ãå€æŽããå¿ èŠããããŸãã