demo.html 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Markdown-it with MathJax</title>
  6. <!-- 引入 MathJax CDN -->
  7. <!-- <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> -->
  8. <!-- <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> -->
  9. <!-- <script async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.0/es5/tex-chtml.min.js"></script> -->
  10. <script type="text/javascript" async
  11. src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
  12. </head>
  13. <body>
  14. <div id="content"></div>
  15. <div class="latexDiv">
  16. $$P_{待估} = \\frac{1/a}{1/a+1/b+1/c}*P_A+\\frac{1/b}{1/a+1/b+1/c}*P_B+\\frac{1/c}{1/a+1/b+1/c}*P_C$$
  17. 臭氧层的形成与耗损是一个复杂的化学过程,它涉及到大气中氧气(O2)的转化,尤其是在平流层中。其主要反应过程可以通过两个关键步骤来描述:
  18. 1. **形成过程(光解反应)**:
  19. - 当分子氧气(O2)吸收太阳紫外线(hν)时,会发生光解,生成一个氧原子(O·)和一个未结合的氧分子(0·O2)。这一反应可以用化学方程式表示为:
  20. \[
  21. \mathcal{O}_{2} + h\nu \rightarrow O· + O·O
  22. \]
  23. - 接着,这两个氧原子会相互结合生成一个臭氧分子(O3),即:
  24. \[
  25. O· + O·O \rightarrow O_3
  26. \]
  27. 这些反应吸收了大量的紫外线,起到了地球生物的天然防晒屏作用。
  28. 2. **耗损过程(还原反应)**:
  29. - 臭氧分子在受到紫外线激发后,可能发生两个反应:一是直接返回到氧气状态,释放出一个氧原子,反应为:
  30. \[
  31. O_3 + h\nu \rightarrow O_2 + O·
  32. \]
  33. - 另一反应是臭氧与另一个氧原子结合,生成两个氧气分子,即:
  34. \[
  35. O_3 + O· \rightarrow 2O_2
  36. \]
  37. 这两个过程共同维持了臭氧层的动态平衡。
  38. 总的来说,平流层中的臭氧通过不断的生成与耗损,形成了一个微妙的平衡,这个平衡对于阻挡有害紫外线对地球表面生物至关重要。尽管紫外线照射不断促使臭氧的分解,但同样数量的臭氧通过上述反应得以再生,确保了地球生命得以在适宜的环境中繁衍。
  39. 在水务工程中,有许多公式用于计算不同方面的参数,例如水流量、水压、水处理效率等。这里我给出一个简单的水流量计算公式,通常用于估算水管中的平均流速:
  40. **平均流速公式 (对于圆形管道)**:
  41. \[ V = \frac{Q}{A} \]
  42. 其中:
  43. - \( V \) 是平均流速(通常以米每秒 m/s 表示),
  44. - \( Q \) 是流量(以立方米每秒 m³/s 或升每秒 L/s 表示,取决于单位要求),
  45. - \( A \) 是管道截面积(对于圆形管道,\( A = \pi r^2 \),其中 \( r \) 是管道半径,单位为米 m)。
  46. 如果你需要其他类型的水务公式或者具体情境下的计算,请提供更多的信息,我会给出相应的公式或详细的解答。
  47. </div>
  48. <script src="https://markdown-it.github.io/markdown-it.js"></script>
  49. <script>
  50. // 初始化 markdown-it
  51. const md = window.markdownit();
  52. // 假设你的Markdown内容存储在一个变量中
  53. const markdownContent = `你的Markdown内容,包括 LaTeX 公式如: $$P_{待估} = \\frac{1/a}{1/a+1/b+1/c}*P_A+\\frac{1/b}{1/a+1/b+1/c}*P_B+\\frac{1/c}{1/a+1/b+1/c}*P_C$$`;
  54. // 使用 markdown-it 渲染Markdown到HTML
  55. const htmlContent = md.render(markdownContent);
  56. // 将渲染后的HTML插入到页面中
  57. document.getElementById('content').innerHTML = htmlContent;
  58. // MathJax.js
  59. let isMathjaxConfig = false// 用于标识是否配置
  60. const initMathjaxConfig = () => {
  61. if (!window.MathJax) {
  62. return
  63. }
  64. window.MathJax.Hub.Config({
  65. showProcessingMessages: false, // 关闭js加载过程信息
  66. messageStyle: 'none', // 不显示信息
  67. // jax: ['input/TeX', 'output/HTML-CSS'],
  68. tex2jax: {
  69. inlineMath: [['$', '$'], ['\\(', '\\)']], // 行内公式选择符
  70. displayMath: [['$$', '$$'], ['\\[', '\\]']], // 段内公式选择符
  71. skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code', 'a'] // 避开某些标签
  72. },
  73. 'HTML-CSS': {
  74. availableFonts: ['STIX', 'TeX'], // 可选字体
  75. showMathMenu: false // 关闭右击菜单显示
  76. }
  77. })
  78. isMathjaxConfig = true // 配置完成,改为true
  79. }
  80. const MathQueue = function (elementId) {
  81. if (!window.MathJax) {
  82. return
  83. }
  84. window.MathJax.Hub.Queue(['Typeset', window.MathJax.Hub, document.getElementsByClassName(elementId)]) // 根据class
  85. window.MathJax.Hub.Queue(['Typeset', window.MathJax.Hub, document.getElementById(elementId)]) // 根据id
  86. }
  87. if (MathJax.isMathjaxConfig) { // 是否配置MathJax
  88. MathJax.initMathjaxConfig()
  89. }
  90. MathJax.MathQueue('latexDiv') // 渲染对应的id/class
  91. </script>
  92. </body>
  93. </html>
  94. const open = () => {
  95. window.MathJax.config = {
  96. tex: {
  97. inlineMath: [['$', '$'], ['\\(', '\\)']],
  98. displayMath: [['$$', '$$'], ['\\[', '\\]']],
  99. processEscapes: true,
  100. macros: {
  101. RR: '{\\bf R}',
  102. bold: ['{\\bf #1}', 1],
  103. },
  104. },
  105. svg: {
  106. scale: 1.2,
  107. fontCache: 'global',
  108. },
  109. options: {
  110. skipHtmlTags: ['script', 'noscript', 'style', 'textarea', 'pre'],
  111. ignoreClass: 'MJX_ignore',
  112. },
  113. loader: {
  114. // paths: { mathjax: 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.0/es5/tex-chtml.min.js' },
  115. load: ['input/tex-full', 'output/svg', 'adapter/liteDOM'],
  116. }
  117. }
  118. if (window.MathJax) {
  119. window.MathJax.startup.promise.then(() => {
  120. const element = document.getElementById('box');
  121. window.MathJax.typesetPromise();
  122. window.MathJax.typesetPromise([element])
  123. .then(() => {
  124. console.log('公式已渲染');
  125. })
  126. .catch((error) => {
  127. console.error('公式渲染失败:', error);
  128. });
  129. });
  130. }
  131. }