Hi mọi người, tìm hiểu code trên
Chuyển đổi chuỗi mã hóa
Mã bao gồm hai lớp để phân tích chuỗi
có thể thực hiện phân tích cú pháp chi tiết.
Để chuyển đổi văn bản sang
Phương pháp đánh giá Eyêu Tcầu bất kỳ phép cộng hoặc trừ nào, nhưng Ttrước tiên gọi Fbất kỳ phép nhân hoặc trừ nào, và Ftrước tiên gọi Pbất kỳ phép toán lũy thừa nào có thể. Pgọi trước để lấy mã thông báo tiếp theo. Nếu có (mã thông báo " ", v gọi đệ quy đến T.
Phiên bản
Bây giờ, tệp zip demo có chứa tệp thiết lập.
Các ứng dụng
Phiên bản
Mã đã được viết lại, cải thiện và mở rộng. Ví dụ, hiện tại nó hỗ trợ bao gồm các phương trình trong ngôn ngữ LaTex như sau:
Để thực hiện mục đích này, bằng cách đưa phương trình vào LaTex trong hộp văn bản
Phiên bản
Một số mẫu khác đã được thêm vào.
Đã có sự sắp xếp để dấu ngoặc vuông và ngoặc nhọn được phản ánh trong quá trình chuyển đổi.
Phiên bản
Đã thêm nhiều mẫu hơn.
Một số lỗi đã được vá và một số cải tiến đã được triển khai. Ví dụ, hiện tại thẻ
Phiên bản
Một số mẫu khác đã được thêm vào. Nhấn các phím chức năng F1, F2 và F12 tương ứng để chuyển đến số mẫu; chuyển đến mẫu tiếp theo; và quét các mẫu từ mẫu hiện tại (phím thoát '
Có các tính năng mới. Việc giữ nguyên dấu ngoặc đơn bằng cách sử dụng
Bây giờ, với ↓ký tự (
Ngoài ra, người dùng có thể lựa chọn giữa
Phiên bản
- Bao gồm thêm một số ví dụ.
- Một số bản sửa lỗi và cải tiến đã được thực hiện.
codeproject.com
thấy có bài hướng dẫn chuyển đổi dạng HTML
Chuyển đổi chuỗi mã hóa
MathML
thành/từ chuỗi văn bản thuần túyMã bao gồm hai lớp để phân tích chuỗi
MathML
. Lớp đầu tiên, MathToString
chuẩn bị chuỗi. Lớp thứ hai, ParseML
, thực hiện phân tích. Tương tự, để lấy mã MathML từ văn bản, một lớp chuẩn bị và lớp kia thực hiện chuyển đổi.Giới thiệu
Có vẻ như có ít tài nguyên chuyển đổi mã MathML thành văn bản thuần túy. Một lý do chính đáng là không có sự đồng thuận về cách định dạng một số biểu thức toán học. Nhưng đối với nhiều biểu thức liên quan đến toán tử (+,-,/,*,^,=), đây là một trình chuyển đổi khả thi.Các lớp học đã tham gia
LớpMathToString
chuẩn bị string
mã MathML
để class ParseML
có thể thực hiện phân tích cú pháp chi tiết.
Sự chuẩn bị
Đầu tiên, các khoảng trắng được thay thế bằng các chuỗi rỗng và một số ký tự đặc biệt cũng được thay thế. Ngoài ra, một số thẻ không liên quan đến biểu thức toán học, như stylethẻ, sẽ bị xóa. Sau đó, mã sẽ chuyển từ<mfrac>...</mfrac>
,<msup>...</msup>
, <mrow>...</mrow>
, <msqrt>...</msqrt>
các thẻ bên trong nhất sang các thẻ bên ngoài nhất, được phân tích cú pháp và thay thế, bao quanh chúng giữa các ký tự đặc biệt để sau đó chúng có thể được phục hồi theo ParseML
lớp.Sử dụng Mã
Để chuyển đổi, chỉ cần gọi phương thức chia sẻMathToString.convertToString()
:Dim converted as String = MathMLToString.convertToString(MathMLcodeToConvert)
Để chuyển đổi văn bản sang
MathML
, hãy gọi convertStringToMathML()
.Nguyên tắc cơ bản
Phương pháp phân tích cú pháp là phân tích cú pháp đệ quy-giảm dần: Phân tích biểu thức bằng phương pháp giảm dần đệ quy.Phương pháp đánh giá Eyêu Tcầu bất kỳ phép cộng hoặc trừ nào, nhưng Ttrước tiên gọi Fbất kỳ phép nhân hoặc trừ nào, và Ftrước tiên gọi Pbất kỳ phép toán lũy thừa nào có thể. Pgọi trước để lấy mã thông báo tiếp theo. Nếu có (mã thông báo " ", v gọi đệ quy đến T.
E --> T {( "+" | "-" ) T} T --> F {( "*" | "/" ) F} F --> P ["^" F] P --> v | "(" E ")" | "-" T
Phiên bản 1.0.3.0
Bây giờ, tệp zip demo có chứa tệp thiết lập.Các ứng dụng
JavaScript
, .NET
và Core
đã được mã hóa lại, vì MathML
là một ứng dụng của XML
và để phản ánh các thẻ có thể được lồng nhau 'đệ quy', ý tôi là, một phần tử có thể xuất hiện bên trong chính nó hoặc bất kỳ cấp nào bên dưới các phần tử con của nó. Ví dụ:<mfrac> <mrow> <mi>-1</mi> </mrow> <mn> <mn>3</mn> </mn> </mfrac>
Phiên bản 2.0.0.0
(2024-03-25)
Mã đã được viết lại, cải thiện và mở rộng. Ví dụ, hiện tại nó hỗ trợ bao gồm các phương trình trong ngôn ngữ LaTex như sau:\begin{array}{*{20}c} {x = \frac{{ - b \pm \sqrt {b^2 - 4ac} }}{{2a}}} & {{\text{when}}} & {ax^2 + bx + c = 0} \\ \end{array}
Để thực hiện mục đích này, bằng cách đưa phương trình vào LaTex trong hộp văn bản
MathML
và nhấp vào 'Chuyển đổi thành văn bản thuần túy', mã Latex
sẽ được thay thế bằng bản dịch sang MathML
và được chuyển đổi thành văn bản thuần túy.
Phiên bản 2.0.5.0
(2024-04-17)
Một số mẫu khác đã được thêm vào.Đã có sự sắp xếp để dấu ngoặc vuông và ngoặc nhọn được phản ánh trong quá trình chuyển đổi.
ConvertStringToMathML.EvaluateFromInnerToOuter()
là một phương pháp mới và như tên gọi của nó, nó kiểm tra từ hầu hết các cặp ngoặc đơn và/hoặc ngoặc vuông bên trong đến hầu hết các cặp ngoặc vuông bên ngoài.
Phiên bản 2.0.5.9
(2024-05-01)
Đã thêm nhiều mẫu hơn.Một số lỗi đã được vá và một số cải tiến đã được triển khai. Ví dụ, hiện tại thẻ
<mlabeledtr>
đã được tính đến.
Phiên bản 2.0.6.0
(17-05-2024)
Một số mẫu khác đã được thêm vào. Nhấn các phím chức năng F1, F2 và F12 tương ứng để chuyển đến số mẫu; chuyển đến mẫu tiếp theo; và quét các mẫu từ mẫu hiện tại (phím thoát 'Esc
' sẽ hủy quét).Có các tính năng mới. Việc giữ nguyên dấu ngoặc đơn bằng cách sử dụng
⸨ ⸩
đã được bật, ngăn ứng dụng xóa chúng. Ví dụ, khi chuyển đổi văn bản "(3)
" thành MathML
dấu ngoặc đơn bị loại bỏ. Thay vào đó, văn bản "⸨3⸩
"được chuyển đổi thành MathMLsẽ giữ nguyên chúng.Bây giờ, với ↓ký tự (
ascii 25
), sau và trước dấu ngoặc đơn, một MathML
thuộc tính stretchy='false'
đã đạt được. Vì vậy, văn bản ∫⸨5*x+2*sin⸨↓x↓⸩⸩dx
khi được dịch sang MathML
sẽ mở rộng dấu ngoặc đơn bên ngoài chứ không phải dấu ngoặc đơn bên trong xung quanh x.Ngoài ra, người dùng có thể lựa chọn giữa
MathJa
'sphiên bản 2.7.2
và 3
. Phiên bản 2 cũ hơn nhưng có ngắt dòng tài khoản, trong khi phiên bản 3 thì không.
Phiên bản 2.0.13.0
(2024-07-11)
- Bao gồm thêm một số ví dụ.- Một số bản sửa lỗi và cải tiến đã được thực hiện.
Theo CodeProject.Com