Bảng trong MathML

Khi đã biết các ký hiệu toán cơ bản, vẫn còn một vấn đề là xem xét bố cục dạng bảng, vốn có thể dùng cho các biểu thức kiểu ma trận và các bố cục toán nâng cao khác.

Các phần tử bảng của MathML

Các phần tử bảng của MathML tương tự như bảng HTML: phần tử <mtable> biểu diễn một bảng toán học, nó có các phần tử <mtr> làm phần tử con (biểu diễn các hàng), và mỗi phần tử đó lại có các phần tử <mtd> làm phần tử con (biểu diễn các ô). Phần tử <mtable> có thể được chèn ở bất kỳ đâu trong một công thức MathML. Phần tử <mtd> có thể chứa bất kỳ số lượng phần tử MathML nào và sẽ sắp xếp chúng như một vùng chứa <mrow>.

Bảng thường được dùng cho các biểu thức kiểu ma trận (bao gồm cả vectơ). Sau đây là một ví dụ cơ bản lấy từ bài viết về hàm CSS matrix():

html
<math display="block">
  <mrow>
    <mo>(</mo>
    <mtable>
      <mtr>
        <mtd>
          <mi>a</mi>
        </mtd>
        <mtd>
          <mi>c</mi>
        </mtd>
        <mtd>
          <mn>0</mn>
        </mtd>
        <mtd>
          <msub>
            <mi>t</mi>
            <mi>x</mi>
          </msub>
        </mtd>
      </mtr>
      <mtr>
        <mtd>
          <mi>b</mi>
        </mtd>
        <mtd>
          <mi>d</mi>
        </mtd>
        <mtd>
          <mn>0</mn>
        </mtd>
        <mtd>
          <msub>
            <mi>t</mi>
            <mi>y</mi>
          </msub>
        </mtd>
      </mtr>
      <mtr>
        <mtd>
          <mn>0</mn>
        </mtd>
        <mtd>
          <mn>0</mn>
        </mtd>
        <mtd>
          <mn>1</mn>
        </mtd>
        <mtd>
          <mn>0</mn>
        </mtd>
      </mtr>
      <mtr>
        <mtd>
          <mn>0</mn>
        </mtd>
        <mtd>
          <mn>0</mn>
        </mtd>
        <mtd>
          <mn>0</mn>
        </mtd>
        <mtd>
          <mn>1</mn>
        </mtd>
      </mtr>
    </mtable>
    <mo>)</mo>
  </mrow>
</math>

Cho phép ô trải dài qua nhiều hàng và cột

Điều này cũng tương tự như bảng HTML. Phần tử <mtd> chấp nhận các thuộc tính columnspanrowspan để cho biết ô trải qua nhiều hàng và cột. Bên dưới, ma trận bên trong trải qua hai cột của ma trận bên ngoài:

Note: Vì lý do lịch sử, thuộc tính MathML cho việc trải qua nhiều cột được gọi là columnspan chứ không phải colspan.

Cách dùng cho bố cục nâng cao

Ngoài việc biểu diễn các đối tượng kiểu ma trận, bảng MathML đôi khi còn được dùng cho bố cục nâng cao bên trong các công thức toán, chẳng hạn trong định nghĩa ký hiệu Legendre trên Wikipedia. Ở đây, các trường hợp khác nhau được viết trên ba hàng khác nhau trong khi các giá trị và điều kiện được đặt trên hai cột khác nhau.

Warning: Bài viết <mtable> cung cấp thêm nhiều tùy chọn bố cục nâng cao thông qua các thuộc tính đặc biệt như căn chỉnh hoặc khoảng cách. Những thuộc tính này xuất hiện trước các tương đương CSS và ban đầu được thiết kế cho các bộ hiển thị không nhận biết CSS. Tuy nhiên, chúng có thể không được triển khai trong mọi trình duyệt. Trong tương lai, rất có thể các cách dùng <mtable> chỉ để bố cục (tức không phải đối tượng kiểu ma trận thực sự) sẽ được thay thế bằng các lựa chọn thay thế dựa trên CSS.

Tóm tắt

Trong bài viết này, chúng ta đã xem xét các phần tử <mtable>, <mtr><mtd>, là các phần tử tương đương với những phần tử HTML dùng cho bảng. Chúng ta đã thấy cách dùng chúng để biểu diễn các đối tượng kiểu ma trận và cách chúng đôi khi được dùng cho bố cục nâng cao.

Bạn gần như đã hoàn thành mô-đun này rồi, chúng ta chỉ còn một việc nữa. Trong bài kiểm tra ba công thức toán nổi tiếng bạn sẽ dùng kiến thức mới của mình để viết lại một bài toán nhỏ bằng HTML và MathML.

Xem thêm