9

What is the best way to place each letter in a square as following:

enter image description here

I want to learn Chinese calligraphy and make copybooks for calligraphy by myself, any help or suggestion will be appreciated!

1
  • 1
    Depending on how serious you want this to get, I would discourage you from doing it this way. If you want to learn Chinese calligraphy, why not copy from so-called models, i.e. writings by acknowledged masters? There are many resources on-line (provided you have some knowledge of Chinese), such as 9610.com/index1.htm (Kaishu coursebook: 9610.com/xiezi/kaishu/01.htm, scroll down for image links) or shufazidian.com for individual characters by different calligraphers. You can also check youtube on how to find model books. Try out 欧阳询’s 楷书 (9610.com/oyx/07.htm). 加油! Sep 4, 2013 at 8:43

1 Answer 1

3

I'll assume that you already have access to images of characters that you can include in your LaTeX document.

Here I use tikz to create an overlay which shades out the character to allow you to trace the strokes. I don't know Chinese, but I am familiar with Japanese so please pardon the use of Japanese language terms in this MWE. (Or edit my post to correct names to something more appropriate for Chinese.)

\documentclass{article}
\usepackage{graphicx}
\usepackage{tikz}

%% optional argument for frequency---default value is 4
%% character name
\newcommand{\drawKanji}[2][4]{\noindent%
  \foreach  \x in {1,...,#1} 
    {%%
      \begin{tikzpicture}
        \node[anchor=south west,
              inner sep=0
             ] (image) at (0,0) {\includegraphics[width=1in]{#2}};
        \begin{scope}[x={(image.south east)},
                      y={(image.north west)}
                     ]
          \draw[black,
                fill opacity=0.90,
                fill=white
               ] (0,0) rectangle (1,1);
        \end{scope}
      \end{tikzpicture}}}

\begin{document}

\drawKanji{takai}

\end{document}

This produces:

enter image description here

If you're going to make a lot of these, the LaTeX document might possibly compile slowly or too slow for your taste. In that case, you might consider the following approach.

\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{graphicx}
\usepackage{tikz}

\newsavebox{\currentkanji}
%% optional argument for frequency---default value is 4
%% character name
\newcommand{\drawKanji}[2][6]{\noindent%
  \begin{lrbox}{\currentkanji}
    \begin{tikzpicture}
      \node[anchor=south west,
            inner sep=0
           ] (image) at (0,0) {\includegraphics[width=1in]{#2}};
      \begin{scope}[x={(image.south east)},
                    y={(image.north west)}
                   ]
        \draw[black,
              fill opacity=0.90,
              fill=white
             ] (0,0) rectangle (1,1);
      \end{scope}
    \end{tikzpicture}
  \end{lrbox}
  \foreach  \x in {1,...,#1} {\usebox{\currentkanji}}}

\begin{document}

\drawKanji{takai}

\end{document}

Basically, you import the image once and save it in a box and then reuse the box. This can save a bit on the time to compile since the image does not have to be repeatedly re-read.

If you add the following lines to the \drawKanji command, you can get the red lines as you have in your image:

      \draw [red,dashed] (image.south east) -- (image.north west);
      \draw [red,dashed] (image.south west) -- (image.north east);
      \draw [red]        (image.south)      -- (image.north);
      \draw [red]        (image.east)       -- (image.west);

Resulting in:

enter image description here

3
  • 1
    This is an excellent answer. I specially like your style of typing out the \draw commands, as it greatly improves the readability of the code.
    – yannisl
    Sep 6, 2013 at 6:04
  • Dear A.Ellett, how to have access to images of characters? Sep 6, 2013 at 23:58
  • @EdenHarder If you don't have images of the characters already, I'm not really sure what to recommend other than search the web for examples you're looking for.
    – A.Ellett
    Sep 7, 2013 at 0:33

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .