Bỏ qua điều hướng
𝒯 HDSD Typst Tải ZIP
Xem trước 1.1.0 · dựa trên 1.0.6 · Typst 0.15.0+

Giữ nguyên cách gõ.
Thêm QR và phiếu tô.

Đề vẫn viết bằng #tn, #ds, #tln, #tl. Bản 1.1 tập trung tạo QR đáp án và tám phiếu OMR có thể in/tô sẵn số báo danh, mã đề. Không cần học cú pháp ngân hàng hay trộn đề.

Trạng thái: mã nguồn ở PR #3; bản gửi Typst Universe ở PR #5987. Khi PR phát hành chưa được hợp nhất, dùng @local/sang-math:1.1.0 trong ZIP; bản công khai vẫn là @preview/sang-math:1.0.6.

01 / Cách gõ quen thuộc

QR đáp án từ câu đã viết

#sang-omr-qr đọc đáp án của đề gõ bằng bốn lệnh cũ. Đặt QR ở trang dành cho giáo viên.

Typst · Ví dụ ngắn biên dịch được
#import "@local/sang-math:1.1.0": *
#show: sang-setup
#tn([Tính $2+3$.], ([$4$], True([$5$]), [$6$], [$7$]))
#pagebreak()
= QR đáp án giáo viên
#sang-omr-qr(ma-de: "0101")

Khi dùng phiếu cụ thể

Với đề đủ 12 TN, 4 Đ/S, 6 TLN, gọi #sang-omr-qr(ma-de: "0101", profile: "12-4-6ngang"). Tùy chọn profile kiểm số câu có khớp phiếu và tự chọn khổ giấy. Bỏ tùy chọn này thì QR giữ hành vi 1.0.6.

Hai QR có nhiệm vụ khác nhau

SMKEY được tạo từ đáp án của đề để giáo viên nạp key. SMOMR trên phiếu nhận dạng bố cục ô tô; nó không chứa đáp án. Giữ QR đáp án riêng khỏi bản phát học sinh.

QR mã hóa đúng dấu nháy, gạch chéo và xuống dòng trong đáp án ngắn. Gói không tự giải toán hoặc tự kiểm đáp án đúng; giáo viên cần rà soát nội dung đề.

02 / Phiếu tô

Đặt SBD và mã đề trước khi include

Nếu không gọi state, các ô để trống cho học sinh tự tô. Mã ngắn được đệm số 0 ở đầu.

Typst · SBD 1001 → 001001
#let ma-de = "0101"
#state("sbd").update("1001")
#state("made").update(ma-de)
#include "12-4-6ngang.typ"

Đặt file 12-4-6ngang.typ cạnh file đang biên dịch. SBD tối đa sáu chữ số; mã đề tối đa bốn chữ số, chỉ dùng chữ số. Xem file 02 để có đề, QR và phiếu trong một tài liệu hoàn chỉnh.

File phiếuTNĐ/STLNKhổ
12-4-6ngang.typ1246A5 ngang
thptqg-toan-2025.typ1246A4
ds-12.typ0120A4
hybrid-28tn-12ds.typ28120A4
tln-10.typ0010A4
tn-40.typ4000A4
tn-50.typ5000A4
tn-60.typ6000A4
03 / Copy và chạy

10 tình huống, 10 file Typst đầy đủ

Chọn mẫu, bấm Copy code hoặc tải file. File có #include cần tải phiếu đi kèm hoặc dùng ZIP trọn bộ.

Chạy từ ZIP

typst --version
typst compile --root . --package-path ./typst-packages examples/sang-math-1-1/01-legacy-bon-dang.typ 01.pdf
typst compile --root . --package-path ./typst-packages examples/sang-math-1-1/02-qr-va-phieu-12-4-6.typ 02.pdf

Có gì trong ZIP?

Package local 1.1.0, hai ví dụ đề bằng cú pháp 1.0.6, tám tình huống phiếu tô, tám preset OMR và README chạy nhanh. Typst 0.15.0 hoặc mới hơn (đã thử trên 0.15.1); lần đầu có thể tải phụ thuộc CeTZ, Cades và Touying.

Đang tải mẫu…

04 / Dùng trong phòng thi

Từ file Typst đến hai bản in

File 02 cho toàn bộ quy trình. Chỉ cần thay nội dung câu hỏi và đáp án, giữ nguyên bốn lệnh soạn đề.

1. Soạn và kiểm đáp án

Viết đủ số câu bằng #tn/#ds/#tln. True(...) đánh dấu phương án hoặc mệnh đề đúng; đối số đáp án của #tln đi vào QR. Giáo viên tự kiểm lại toán học và cách chấp nhận đáp án ngắn.

2. Chọn đúng profile

Gọi #sang-omr-qr(ma-de: ma-de, profile: "12-4-6ngang") cho phiếu ngang. Nếu số TN, Đ/S hoặc TLN lệch phiếu, Typst dừng với lỗi answer counts do not match profile. Với đề khác tám preset, bỏ profile: để dùng QR như 1.0.6.

3. Tạo phiếu tô

Đặt state("sbd") và state("made") ngay trước #include. Phiếu sẽ in số và tô các cột tương ứng; bỏ state thì để ô trống. Mã đề trong QR đáp án và trên phiếu phải là cùng một mã.

4. Tách bản phát

Phát đề và phiếu OMR cho học sinh. Giữ trang SMKEY cho giáo viên để nạp đáp án; phiếu học sinh chỉ mang SMOMR nhận dạng loại phiếu. Trước khi in hàng loạt, in thử một tờ và kiểm tra QR, bốn góc định vị cùng cột SBD/mã đề.

05 / Kiểm tra nhanh

Khi file chưa ra đúng phiếu

Những trường hợp dưới đây xuất hiện nhiều nhất khi copy code.

Không tìm thấy file phiếu

Tải file 12-4-6ngang.typ ở thẻ mẫu hoặc dùng ZIP. Đặt file đúng cạnh file có #include "12-4-6ngang.typ". Trong ví dụ package dùng đường dẫn omr/12-4-6ngang.typ vì file nằm trong thư mục omr.

QR báo sai số câu

Đếm lại từng lệnh #tn, #ds, #tln; #tl không có ô tô trong tám profile. Chọn profile đúng bảng ở trên. Không chỉnh số câu trên phiếu để che lỗi của đề.

SBD hoặc mã đề không tô

Đặt state trước #include và truyền chữ số trong chuỗi, ví dụ "1001". SBD nhận tối đa sáu chữ số, mã đề tối đa bốn; chữ cái, dấu cách và chuỗi quá dài sẽ làm Typst báo lỗi. SBD ngắn tự thêm số 0 ở đầu.

Import chưa có bản 1.1

Trong khi PR Typst Universe đang xét duyệt, giải nén ZIP và dùng @local/sang-math:1.1.0 cùng --package-path ./typst-packages. @preview/sang-math:1.1.0 chỉ dùng sau khi bản phát hành thực sự xuất hiện.