kanji-sheets/kanjiLib.tex

256 lines
6.9 KiB
TeX

\usepackage[table]{xcolor}
\usepackage[many]{tcolorbox}
\usepackage{anyfontsize}
\usepackage{tikz}
\definecolor{kanjiColor}{RGB}{72, 194, 78}
\colorlet{kunyomiColor}{blue}
\colorlet{onyomiColor}{red}
\colorlet{meaningColor}{black}
% ---------------------------------------------------------------------------- %
% Chapter Introduction %
% ---------------------------------------------------------------------------- %
\newcommand{\tocPiece}[2]{
% For some reason, I'm not able to use \uppercase in order to use
% a single argument. In the end, I found that just using two arguments
% was going to be easier than trying to override the way the LaTeX
% kernel handles this command.
\section{#1}
\begin{center}
\fontsize{16}{16}
\rowcolors{1}{}{kanjiColor!20!white}
\input{./data/tables/#2.tex}
\end{center}
}
\setcounter{secnumdepth}{0}
\newcommand{\chapterIntroduction}[2]{
\tocPiece{#1}{#2}
\break
}
% ---------------------------------------------------------------------------- %
% Kanji Table %
% ---------------------------------------------------------------------------- %
\newenvironment{chapterTabular}[1]
{
\begin{longtable}{#1}
}
{
\end{longtable}
}
% ---------------------------------------------------------------------------- %
% Header line %
% ---------------------------------------------------------------------------- %
\newcommand{\taughtIn}[1]{
#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=kanjiColor, 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}{
tcbox width=auto limited,
capture=hbox,
enhanced,
colback=meaningColor!20,
left=15pt,
right=15pt,
top=15pt,
bottom=15pt,
arc=0pt,
outer arc=0pt,
attach boxed title to top center={yshift=-12pt, yshifttext=-6pt},
title={\fontsize{15}{20}\textcolor{white}{\textbf{意味}}},
colbacktitle=meaningColor!60,
boxed title style={arc=0pt, outer arc=0pt}
}
\newcommand{\kanjiMeaning}[1]{
\begin{center}
\begin{meaningBox}
\Large #1
\end{meaningBox}
\end{center}
}
% ---------------------------------------------------------------------------- %
% Kunyomi and Onyomi %
% ---------------------------------------------------------------------------- %
\newcommand{\emphasize}[1]{\textbf{\textcolor{kanjiColor!80!black}{#1}}}
\newtcolorbox{kunyomiBox}{
enhanced,
attach boxed title to top left={yshift=-12pt,xshift=10pt},
colback=kunyomiColor!20,
colframe=kunyomiColor!60,
left=15pt,
right=15pt,
top=15pt,
bottom=5pt,
title={\fontsize{15}{20}\textcolor{white}{\textbf{訓読み}}},
colbacktitle=kunyomiColor!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=onyomiColor!20,
colframe=onyomiColor!60,
left=15pt,
right=15pt,
top=15pt,
bottom=5pt,
title={\fontsize{15}{20}\textcolor{white}{\textbf{音読み}}},
colbacktitle=onyomiColor!60,
width=\textwidth,
}
\newcommand{\onyomi}[1]{
\begin{onyomiBox}
\fontsize{15}{20}
\textbf{\textcolor{kanjiColor!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] (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}
}
}