名牌產生器
這個產生器能讀 .tsv
檔。使用者需要把
.tsv
檔和 .tex
檔放在同個路徑之下。
如果我們從 NTU COOL 上下載了學生名單,那我們可以用 R
把學生名單轉換成 .tsv
檔。注意這個
.tsv
檔要有兩個欄位,一個是中文名字
chinese
,另一個是英文名字
english
。
library(tidyverse)
library(readxl)
<- "Student-List.xlsx"
file_path
<- read_excel(file_path) %>%
student 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}