kanji-sheets/kanjiLib.tex

226 lines
5.9 KiB
TeX

\usepackage[most]{tcolorbox}
\usepackage{xcolor}
\usepackage{anyfontsize}
\usepackage{tikz}
\definecolor{myGreen}{RGB}{72, 194, 78}
% ---------------------------------------------------------------------------- %
% JLPT Section %
% ---------------------------------------------------------------------------- %
\newcommand{\jlptSection}[1]{
\section*{\uppercase{#1}}
\begin{center}
\fontsize{16}{16}
\input{./data/tables/#1.tex}
\end{center}
\localtableofcontents
\break
}
% ---------------------------------------------------------------------------- %
% Header line %
% ---------------------------------------------------------------------------- %
\newcommand{\taughtIn}[1]{
Taught in: #1 \newline
}
\newcommand{\jlptLevel}[1]{
JLPT Level: #1 \newline
}
\newcommand{\strokeCount}[1]{
Stroke count: #1 \newline
}
\newcommand{\kanji}[1]{
\begin{center}
\resizebox{\textwidth}{!}{
\begin{tikzpicture}
\fill[rounded corners=2pt, fill=myGreen, draw=black] (0,0) rectangle (1,1);
\draw (0.5,0.23) node[white, anchor=base, scale=2]{#1};
\end{tikzpicture}
}
\phantomsection
\addcontentsline{toc}{subsection}{#1}
\end{center}
}
\newcommand{\radicalHeader}[1]{
\begin{center}
\resizebox{.4\textwidth}{!}{
\begin{tikzpicture}
\draw[thick] (0,0) rectangle (1,1);
\draw (0.5,0.23) node[anchor=base, scale=2]{#1};
\end{tikzpicture}
}
\end{center}
}
\newcommand{\kanjiPageHeader}[5]{
\begin{minipage}{0.3\textwidth}
\begin{flushleft}
\taughtIn{#2}
\jlptLevel{#3}
\strokeCount{#4}
\end{flushleft}
\end{minipage} \hfill
\begin{minipage}{0.3\textwidth}
\kanji{#1}
\end{minipage} \hfill
\begin{minipage}{0.3\textwidth}
\begin{flushright}
\radicalHeader{#5}
\end{flushright}
\end{minipage}
\vspace{1cm}
}
% ---------------------------------------------------------------------------- %
% Meaning %
% ---------------------------------------------------------------------------- %
\newtcolorbox{meaningBox}{ %TODO: Make the box autoshrink horizontally while still making newlines when it's full.
enhanced,
colback=black!20,
left=15pt,
right=15pt,
top=15pt,
bottom=15pt,
width=\textwidth,
hbox,
capture=minipage
}
\newcommand{\kanjiMeaning}[1]{
\begin{center}
\begin{meaningBox}
\Large #1
\end{meaningBox}
\end{center}
}
% ---------------------------------------------------------------------------- %
% Kunyomi and Onyomi %
% ---------------------------------------------------------------------------- %
\newtcolorbox{kunyomiBox}{
enhanced,
attach boxed title to top left={yshift=-12pt,xshift=10pt},
colback=blue!20,
colframe=blue!60,
left=15pt,
right=15pt,
top=15pt,
bottom=5pt,
title={\fontsize{15}{20}\textcolor{white}{\textbf{訓読み}}},
colbacktitle=blue!60,
width=\textwidth
}
\newcommand{\kunyomi}[1]{
\begin{kunyomiBox}
\fontsize{15}{20}
#1
\end{kunyomiBox}
}
\newtcolorbox{onyomiBox}{
enhanced,
attach boxed title to top left={yshift=-12pt,xshift=10pt},
colback=red!20,
colframe=red!60,
left=15pt,
right=15pt,
top=15pt,
bottom=5pt,
title={\fontsize{15}{20}\textcolor{white}{\textbf{音読み}}},
colbacktitle=red!60,
width=\textwidth,
}
\newcommand{\onyomi}[1]{
\begin{onyomiBox}
\fontsize{15}{20}
\textbf{\textcolor{myGreen!80!black}{#1}}
\end{onyomiBox}
\vspace{0.5cm}
}
% ---------------------------------------------------------------------------- %
% Kanji Drawing Box %
% ---------------------------------------------------------------------------- %
\newCJKfontfamily\drawingKanji[
Path = {./font/},
Extension = .ttf,
]{Choumei}
\newCJKfontfamily\drawingFirstKanji[
Path = {./font/},
Extension = .ttf,
]{KanjiStrokeOrders}
\newcommand{\kanjiRow}[1]{
\resizebox{\textwidth}{!}{
\begin{tikzpicture}[font=\drawingKanji, anchor=base]
\clip (-0.1,-0.1) rectangle (14.1,6.1);
% Main Frame
\draw[line width=1.6pt, rounded corners=4pt] (0, 0) rectangle (14, 6);
% Horizontal lines
\draw (0,2) -- (14,2);
\draw (0,4) -- (14,4);
% Vertical lines
\draw (2,0) -- (2,6);
\draw (4,0) -- (4,6);
\draw (6,0) -- (6,6);
\draw (8,0) -- (8,6);
\draw (10,0) -- (10,6);
\draw (12,0) -- (12,6);
% Grid Top
\draw[dashed, opacity=.5] (0,5) -- (14,5);
\draw[dashed, opacity=.5] (1,4) -- (1,6);
\draw[dashed, opacity=.5] (3,4) -- (3,6);
\draw[dashed, opacity=.5] (5,4) -- (5,6);
\draw[dashed, opacity=.5] (7,4) -- (7,6);
\draw[dashed, opacity=.5] (9,4) -- (9,6);
\draw[dashed, opacity=.5] (11,4) -- (11,6);
\draw[dashed, opacity=.5] (13,4) -- (13,6);
% Grid Bottom
\draw(0,1) -- (14,1);
\draw (1,0) -- (1,2);
\draw (3,0) -- (3,2);
\draw (5,0) -- (5,2);
\draw (7,0) -- (7,2);
\draw (9,0) -- (9,2);
\draw (11,0) -- (11,2);
\draw (13,0) -- (13,2);
% Big Characters
\draw (0.95,4.42) node[scale=5, font=\drawingFirstKanji]{#1};
\draw (3,4.3) node[scale=5, opacity=.2, inner sep=0pt]{#1};
\draw (5,4.3) node[scale=5, opacity=.15]{#1};
\draw (7,4.3) node[scale=5, opacity=.12]{#1};
\draw (9,4.3) node[scale=5, opacity=.08]{#1};
\draw (11,4.3) node[scale=5, opacity=.04]{#1};
% Small characters
\draw (0.5,1.15) node[scale=2]{#1};
\draw (0.5,0.15) node[scale=2, opacity=.3]{#1};
\draw (1.5,1.15) node[scale=2, opacity=.2]{#1};
\draw (1.5,0.15) node[scale=2, opacity=.15]{#1};
\draw (2.5,1.15) node[scale=2, opacity=.1]{#1};
\draw (2.5,0.15) node[scale=2, opacity=.05]{#1};
\end{tikzpicture}
}
}