Bài viết này sẽ hướng dẫn bạn cách mở rộng các chuỗi điều khiển expl3
bên trong bảng, đặc biệt là với gói tabularray
. Chúng ta sẽ xem xét một vấn đề cụ thể, đó là lỗi
"Misplaced alignment tab character &
" và cung cấp giải pháp chi tiết để khắc phục nó. Nếu bạn đang gặp khó khăn khi sử dụng expl3
với
tabularray
, đây là bài viết dành cho bạn.
Khi cố gắng sử dụng các chuỗi điều khiển expl3
trong bảng, bạn có thể gặp phải lỗi sau: "Misplaced alignment tab character &
". Điều này thường xảy ra vì các ký tự
&
(được sử dụng để phân tách các ô trong bảng) không được phân tích cú pháp đúng cách.
Ví dụ, đoạn mã sau có thể gây ra lỗi:
\documentclass{article}
\usepackage{tabularray}
\usepackage{expl3}
\ExplSyntaxOn
\cs_new:Npn \dummy_row: { automatic & automatic & 1 & 2 & 3 & 6 & 0 & 0 & 0 \\ }
\NewDocumentCommand \printtable { } {
\begin{longtblr}
{
colspec = {X[l] l c c c c c c c},
row{1} = {font=\bfseries},
vlines,
hlines,
}
\SetCell[r=2,c=2]{c} Exercise
& & \SetCell[c=7]{c} Difficulty~Levels \\
* & & 1 & 2 & 3 & $\Sigma$ & $\Delta 1$ & $\Delta 2$ & $\Delta 3$ \\
% \dummy_row:
manual & manual & 1 & 1 & 1 & 3 & 0 & 0 & 0 \\
\end{longtblr}
}
\ExplSyntaxOff
\begin{document}
\printtable
\end{document}
Lỗi này cho thấy rằng các ký tự &
trong \dummy_row:
không được phân tích đúng cách khi chúng xuất hiện trong môi trường bảng.
Để khắc phục vấn đề này, bạn cần hướng dẫn tabularray
mở rộng chuỗi điều khiển expl3
. Điều này có thể được thực hiện bằng cách sử dụng tùy chọn
expand
trong môi trường longtblr
.
Đây là mã nguồn đã sửa đổi:
\documentclass{article}
\usepackage{tabularray}
\usepackage{expl3}
\ExplSyntaxOn
\cs_new_protected:Npn \dummy_row: { automatic & automatic & 1 & 2 & 3 & 6 & 0 & 0 & 0 \\ }
\NewDocumentCommand \printtable { } {
\begin{longtblr}[
expand=\dummy_row:
]
{
colspec = {X[l] l c c c c c c c},
row{1} = {font=\bfseries},
vlines,
hlines,
}
\SetCell[r=2,c=2]{c} Exercise
& & \SetCell[c=7]{c} Difficulty~Levels \\
* & & 1 & 2 & 3 & $\Sigma$ & $\Delta 1$ & $\Delta 2$ & $\Delta 3$ \\
\dummy_row:
manual & manual & 1 & 1 & 1 & 3 & 0 & 0 & 0 \\
\end{longtblr}
}
\ExplSyntaxOff
\begin{document}
\printtable
\end{document}
Trong giải pháp này, chúng ta đã thêm expand=\dummy_row:
vào tùy chọn của môi trường longtblr
. Điều này hướng dẫn tabularray
mở rộng
\dummy_row:
trước khi xử lý nội dung bảng, do đó loại bỏ lỗi. Ngoài ra, \cs_new_protected:Npn
được sử dụng thay vì \cs_new:Npn
Tùy chọn expand
yêu cầu tabularray
mở rộng macro được chỉ định trước khi sử dụng nó trong bảng. Điều này đảm bảo rằng tất cả các ký tự đặc biệt, bao gồm cả
&
, được phân tích đúng cách. Bằng cách mở rộng \dummy_row:
trước, tabularray
sẽ thấy các ô được phân tách một cách chính xác.
Lưu ý rằng việc sử dụng \cs_new_protected:Npn
thay vì \cs_new:Npn
là một biện pháp phòng ngừa để đảm bảo an toàn khi mở rộng các macro expl3
. Nó ngăn ngừa các macro
expl3
khỏi việc mở rộng quá sớm hoặc theo những cách không mong muốn.
Bằng cách sử dụng tùy chọn expand
trong tabularray
, bạn có thể dễ dàng mở rộng các chuỗi điều khiển expl3
và tạo các bảng phức tạp mà không gặp phải lỗi
"Misplaced alignment tab character
". Hy vọng hướng dẫn này hữu ích cho bạn trong việc sử dụng expl3
với tabularray
.
Bài viết liên quan