Mục đích viết file này

File này được viết ra để tự động hóa việc xây dựng đáp án của một đề thi môn xác suất thống kê, sử dụng thongke.dapan và mẫu đáp án hiện có trên github. Ưu điểm của việc này là giúp giảm bớt sai số trong tính toán và tiết kiệm được nhiều công sức

Các thư viện cần thiết

# Để cài 2 thư viện thongke và thongke.dapan, chạy câu lệnh sau (cần có devtool - cài tử CRAN)
# devtools::install_github("vungocbinh2009/thongke")
# devtools::install_github("vungocbinh2009/thongke_dapan")
library(thongke.dapan)
library(thongke)
# 3 thư viện còn lại có thể tải từ CRAN
library(whisker)
library(magrittr)
library(stringr)

Một số tùy chọn quan trọng

# Cài đặt seed random để có thể tái tạo lại đề khi cần.
# Để lấy 1 số ngẫu nhiên làm seed, ta chạy hàm sau:
# sample(x = 2147483647, size = 1)
set.seed(123)
# Biến này sẽ được chỉnh sửa sau.
generate_pdf_file <- FALSE

Nhập nội dung đề thi và giải đề.

Sau khi đã setup xong các packages, Các bạn hãy thực hiện các công việc sau tại mục này. - Nhập nội dung để thi - Sử dụng thư viện thongke để giải đề thi và knit xem đã đạt yêu chưa. - Sử dụng thư viện thongke.dapan để tạo đáp án. Mỗi đáp án cần gán vào 1 biến.

Đặt tên các câu hỏi và thêm các biến chứa câu trả lời.

# Đặt tên các câu hỏi ở đây
questions <- c("Câu 1", "Câu 2") %>%
         sprintf("\\textbf{%s}", .)

# Thêm câu trả lời vào biến answer, theo đúng thứ tự câu hỏi trong biến question.
answers <- c(answer_1, answer_2)

Đặt tên file tex ở đây

output_file <- "output.tex"
  1. Đặt tiêu đề cho phần đáp án của đề kiểm tra.
answer_title <- r"[
\begin{center}
    \textbf{\large Đáp án đề thi một môn học nào đó}

    Môn học: Một môn học nào đó - Mã lớp học: 123456 - Thời gian: Ngày tận thế.
\end{center}
]"

Quay lên mục "Một số tùy chọn quan trọng" và đặt biến generated_pdf_file <- TRUE

Bấm nút knit (phím tắt Ctrl + Shift + K) để đoạn code dưới đây làm nốt những công việc còn lại và tạo ra file tex (mọi thứ có thể hơi lâu một chút, vì cần tải khá nhiều gói lệnh)

answer_list_template <- readLines("https://raw.githubusercontent.com/vungocbinh2009/thongke.dapan/master/exam_template/answer_list_template.mustache")
answer_template <- readLines("https://raw.githubusercontent.com/vungocbinh2009/thongke.dapan/master/exam_template/answer_template.mustache")
rendered_answer_list <- NULL
for(i in seq_along(questions)) {
  data <- list(
    question = questions[i],
    answer = answers[i]
  )
  rendered_answer <- whisker.render(answer_template, data)
  rendered_answer <- str_replace_all(rendered_answer, "\n\t\t", "\n")
  rendered_answer <- str_replace_all(rendered_answer, "\n", "\n\t\t")
  rendered_answer_list <- c(rendered_answer_list, rendered_answer)
}
data <- list(
  answer_list = iteratelist(rendered_answer_list),
  answer_title = answer_title
)
rendered_exam <- whisker.render(answer_list_template, data)
writeLines(rendered_exam, output_file)

# Compile latex file to pdf
tools::texi2dvi(output_file, pdf = TRUE, clean = TRUE)
  1. Tuyệt vời, bạn đã hoàn thành việc tạo đáp án đề thi. Bạn có thể kiểm tra lại trong nội dung file tex và file pdf trước khi đưa cho người học. :tada:


vungocbinh2009/thongke.dapan documentation built on April 28, 2024, 5:34 a.m.