How to create a crossword puzzle in LaTeX?
I would suggest you to use the cwpuzzle
package.
I used this package a couple of weeks ago to typeset a small crossword puzzle and it worked quite well.
The content of the crossword puzzle is taken from abcteach.com. I just adapted it for the use with the cwpuzzle
package.
Code
\documentclass{article}
\usepackage[unboxed]{cwpuzzle}
\begin{document}
\begin{Puzzle}{16}{12}
|{} |[1]O |[2]P |E |R |A |T |I |O |N |{} |{} |[3]B |{} |{} |{} |.
|{} |{} |L |{} |{} |{} |{} |{} |{} |{} |{} |[4]R |A |N |G |E |.
|[5]E |{} |A |{} |[6]M |{} |{} |{} |{} |{} |{} |{} |R |{} |{} |{} |.
|S |{} |[7]C |O |O |R |D |I |N |A |T |E |G |R |I |D |.
|T |{} |E |{} |D |{} |{} |{} |{} |{} |{} |{} |R |{} |{} |{} |.
|I |{} |V |{} |E |{} |{} |{} |[8]V |A |R |I |A |B |L |E |.
|[9]M |E |A |N |{} |{} |{} |{} |{} |{} |{} |{} |P |{} |{} |{} |.
|A |{} |L |{} |[10]L |I |N |E |G |R |[11]A |P |H |{} |{} |{} |.
|T |{} |U |{} |{} |{} |{} |{} |{} |{} |X |{} |{} |{} |{} |{} |.
|I |{} |E |{} |{} |{} |[12]S |C |A |L |E |M |O |D |E |L |.
|O |{} |{} |{} |{} |{} |{} |{} |{} |{} |S |{} |{} |{} |{} |{} |.
|N |{} |{} |{} |{} |{} |{} |{} |{} |{} |{} |{} |{} |{} |{} |{} |.
\end{Puzzle}
\begin{PuzzleClues}{\textbf{Across}}
\Clue{1}{OPERATION}{Any mathematical process}
\Clue{4}{RANGE}{The lowest value in a set of numbers through the highest value in the set}
\Clue{7}{COORDINATEGRID}{A network of lines used for locating points}
\Clue{8}{VARIABLE}{Any symbol that could represent a number}
\Clue{9}{MEAN}{Average}
\Clue{10}{LINEGRAPH}{Graph that displays data using line segments}
\Clue{12}{SCALEMODEL}{A model or drawing based on a ratio}
\end{PuzzleClues}
\begin{PuzzleClues}{\textbf{Down}}
\Clue{2}{PLACEVALUE}{the positions of a single digit in the whole number}
\Clue{3}{BARGRAPH}{A graph that uses bars to display data}
\Clue{5}{ESTIMATION}{The use of rounding to determine a reasonable answer}
\Clue{6}{MODE}{The number found most often}
\Clue{11}{AXES}{The horizontal and vertical number lines used in a graph}
\end{PuzzleClues}
\end{document}
Result
Or if you prefer to have a black background:
\documentclass{article}
\usepackage[unboxed]{cwpuzzle}
\begin{document}
\begin{Puzzle}{16}{12}
|* |[1]O |[2]P |E |R |A |T |I |O |N |* |* |[3]B |* |* |* |.
|* |* |L |* |* |* |* |* |* |* |* |[4]R |A |N |G |E |.
|[5]E |* |A |* |[6]M |* |* |* |* |* |* |* |R |* |* |* |.
|S |* |[7]C |O |O |R |D |I |N |A |T |E |G |R |I |D |.
|T |* |E |* |D |* |* |* |* |* |* |* |R |* |* |* |.
|I |* |V |* |E |* |* |* |[8]V |A |R |I |A |B |L |E |.
|[9]M |E |A |N |* |* |* |* |* |* |* |* |P |* |* |* |.
|A |* |L |* |[10]L |I |N |E |G |R |[11]A |P |H |* |* |* |.
|T |* |U |* |* |* |* |* |* |* |X |* |* |* |* |* |.
|I |* |E |* |* |* |[12]S |C |A |L |E |M |O |D |E |L |.
|O |* |* |* |* |* |* |* |* |* |S |* |* |* |* |* |.
|N |* |* |* |* |* |* |* |* |* |* |* |* |* |* |* |.
\end{Puzzle}
\begin{PuzzleClues}{\textbf{Across}}
\Clue{1}{OPERATION}{Any mathematical process}
\Clue{4}{RANGE}{The lowest value in a set of numbers through the highest value in the set}
\Clue{7}{COORDINATEGRID}{A network of lines used for locating points}
\Clue{8}{VARIABLE}{Any symbol that could represent a number}
\Clue{9}{MEAN}{Average}
\Clue{10}{LINEGRAPH}{Graph that displays data using line segments}
\Clue{12}{SCALEMODEL}{A model or drawing based on a ratio}
\end{PuzzleClues}
\begin{PuzzleClues}{\textbf{Down}}
\Clue{2}{PLACEVALUE}{the positions of a single digit in the whole number}
\Clue{3}{BARGRAPH}{A graph that uses bars to display data}
\Clue{5}{ESTIMATION}{The use of rounding to determine a reasonable answer}
\Clue{6}{MODE}{The number found most often}
\Clue{11}{AXES}{The horizontal and vertical number lines used in a graph}
\end{PuzzleClues}
\end{document}
To display the solutions you just have to use the \PuzzleSolution
command that gives you the following result:
a package for crossword puzzles was introduced by brian {hamilton kelly} in tugboat 11. this package is on ctan as crosswd
and also on tex live. there are several other possibilities listed as well in a ctan search. the styles of the puzzles vary, so personal preference may play a role in your choice.