名牌產生器
這個產生器能讀 .tsv 檔。使用者需要把
.tsv 檔和 .tex
檔放在同個路徑之下。
如果我們從 NTU COOL 上下載了學生名單,那我們可以用 R
把學生名單轉換成 .tsv 檔。注意這個
.tsv 檔要有兩個欄位,一個是中文名字
chinese,另一個是英文名字
english。
library(tidyverse)
library(readxl)
file_path <- "Student-List.xlsx"
student <- read_excel(file_path) %>%
mutate(
english = str_extract(Name, "(?<=\\().*(?=\\))"),
chinese = str_remove(Name, " \\(.*")
)
student %>%
select(chinese, english) %>%
write_tsv("student.tsv")檔案大概要是長這樣。
chinese english
林一一 LIN, YI-Yi
張二二 CHANG, ER-ER
...
再來就是 \(\rm \LaTeX\)
的部分。這個文件會讀取 .tsv
檔,然後把學生名字和學號印在 A4 紙上。注意這個文件要用
xelatex 編譯,因為我用了 xeCJK
套件來處理中文,而且要安裝相應的字型才能正常編譯(或者改成自己有的字型)。現在使用的幾個字型都是
overleaf 上有的。漢字字型是日文的 Harano Aji
Gothic,因為有點缺字,所以缺字的地方會用 Noto Sans CJK JP
來代替。英文字型則是 IBM Plex Sans Condensed,會使用 Condesed
是因為這樣能塞下比較多的字,不至於把字縮得太小。
\documentclass[a4paper]{article}
\usepackage[margin=-10pt]{geometry}
\usepackage{fontspec}
\usepackage[AutoFallBack=true]{xeCJK}
\setCJKmainfont{Noto Sans CJK JP}
\setCJKsansfont[FallBack=Noto Sans CJK JP]{Harano Aji Gothic}
\setsansfont{IBM Plex Sans Condensed}
\usepackage{graphicx}
\pagestyle{empty}
\usepackage{csvsimple}
\usepackage{xcolor}
\definecolor{gray02}{gray}{0.2}
\newcommand{\NamePlate}[2]{%
\begin{center}
\begin{tabular}{@{}c@{}}
%---------------------------------
% (1) 第一等分:空白
\begin{minipage}[c][.25\textheight][c]{.95\textwidth}
\end{minipage}\\
\hline
%---------------------------------
% (2) 第二等分:旋轉 180° 的中英文姓名
\begin{minipage}[c][.25\textheight][c]{.95\textwidth}
\centering
\rotatebox{180}{%
\parbox{1\textwidth}{\centering
{\fontsize{65}{72}\selectfont\sffamily\bfseries\textcolor{gray02}{#1}}\\[1cm]
{\fontsize{60}{60}\selectfont\sffamily\bfseries\textcolor{gray02}{#2}}
}%
}
\end{minipage}\\
\hline
%---------------------------------
% (3) 第三等分:正常方向的中英文姓名
\begin{minipage}[c][.25\textheight][c]{.95\textwidth}
\centering
{\fontsize{65}{72}\selectfont\sffamily\bfseries\textcolor{gray02}{#1}}\\[1cm]
{\fontsize{60}{60}\selectfont\sffamily\bfseries\textcolor{gray02}{#2}}
\end{minipage}\\
\hline
%---------------------------------
% (4) 第四等分:空白
\begin{minipage}[c][.25\textheight][c]{.95\textwidth}
\end{minipage}\\
\end{tabular}
\end{center}
}
\begin{document}
\csvreader[head to column names, separator=tab]{name_tab.tsv}{}{%
\NamePlate{\chinese}{\english}
}
\end{document}