TeXShop, pLaTeXを使用している者です。たまたま某塾のテキストを見る機会があって,添付画像のような出力を得たいと思いました。
これまでTeXが原稿用紙のような出力が苦手であると思っていたので,このように実現されていることに驚き,自分でもそのような出力が得たいと思った次第です。
添付画像では字数が70字ですが,この字数も自分で指定できるような仕様にしたいと考えております。
よろしくお願いいたします。
LaTeX の命令だけでつくるなら,picture 環境を使うと楽でしょう。
ちょっとつくってみました。
雑につくったので,ブラッシュアップしないとダメかもですが。
\makeatletter
\def\masu#1{\noindent\vbox{\vskip4mm\hbox{%
\@tempcnta=#1\relax \divide\@tempcnta by 20\relax
\@tempcntb=\@tempcnta\relax \multiply\@tempcntb by-20\relax
\advance\@tempcntb by #1\relax
\ifnum\@tempcntb=\z@\relax \@tempcntb=20\relax
\else \advance \@tempcnta by \@ne\relax
\fi
\edef\@nQ{\the\@tempcnta}\edef\@nR{\the\@tempcntb}%
\advance\@tempcnta by \m@ne \relax
\@tempcntb=-\@tempcntb\relax \advance\@tempcntb by 20\relax
\edef\@Nq{\the\@tempcnta}\edef\@Nr{\the\@tempcntb}%
\unitlength=6mm
\begin{picture}(20,\@nQ)
\put(4.5,\@nQ){\makebox(0,0)[b]{\raise0.5mm\hbox{5}}}
\put(9.5,\@nQ){\makebox(0,0)[b]{\raise0.5mm\hbox{10}}}
\put(14.5,\@nQ){\makebox(0,0)[b]{\raise0.5mm\hbox{15}}}
\put(19.5,\@nQ){\makebox(0,0)[b]{\raise0.5mm\hbox{20}}}
\multiput(0,1)(0,1){\@nQ}{\line(1,0){20}}
\multiput(1,0)(1,0){\@nR}{\line(0,1){\@nQ}}
\multiput(20,1)(-1,0){\@Nr}{\line(0,1){\@Nq}}
{\thicklines
\put(0,0){\line(1,0){\@nR}} \put(\@nR,1){\line(1,0){\@Nr}}
\put(0,\@nQ){\line(1,0){20}} \put(0,0){\line(0,1){\@nQ}}
\put(\@nR,0){\line(0,1){1}} \put(20,1){\line(0,1){\@Nq}}}
\end{picture}}\vskip2mm}}
\makeatother
使い方は \masu{70} です。(引数はマス目の数)
ちょっとつくってみました。
雑につくったので,ブラッシュアップしないとダメかもですが。
\makeatletter
\def\masu#1{\noindent\vbox{\vskip4mm\hbox{%
\@tempcnta=#1\relax \divide\@tempcnta by 20\relax
\@tempcntb=\@tempcnta\relax \multiply\@tempcntb by-20\relax
\advance\@tempcntb by #1\relax
\ifnum\@tempcntb=\z@\relax \@tempcntb=20\relax
\else \advance \@tempcnta by \@ne\relax
\fi
\edef\@nQ{\the\@tempcnta}\edef\@nR{\the\@tempcntb}%
\advance\@tempcnta by \m@ne \relax
\@tempcntb=-\@tempcntb\relax \advance\@tempcntb by 20\relax
\edef\@Nq{\the\@tempcnta}\edef\@Nr{\the\@tempcntb}%
\unitlength=6mm
\begin{picture}(20,\@nQ)
\put(4.5,\@nQ){\makebox(0,0)[b]{\raise0.5mm\hbox{5}}}
\put(9.5,\@nQ){\makebox(0,0)[b]{\raise0.5mm\hbox{10}}}
\put(14.5,\@nQ){\makebox(0,0)[b]{\raise0.5mm\hbox{15}}}
\put(19.5,\@nQ){\makebox(0,0)[b]{\raise0.5mm\hbox{20}}}
\multiput(0,1)(0,1){\@nQ}{\line(1,0){20}}
\multiput(1,0)(1,0){\@nR}{\line(0,1){\@nQ}}
\multiput(20,1)(-1,0){\@Nr}{\line(0,1){\@Nq}}
{\thicklines
\put(0,0){\line(1,0){\@nR}} \put(\@nR,1){\line(1,0){\@Nr}}
\put(0,\@nQ){\line(1,0){20}} \put(0,0){\line(0,1){\@nQ}}
\put(\@nR,0){\line(0,1){1}} \put(20,1){\line(0,1){\@Nq}}}
\end{picture}}\vskip2mm}}
\makeatother
使い方は \masu{70} です。(引数はマス目の数)
tabular環境じゃ駄目なんですかね。(^_^;)
% pLaTeX
\documentclass[dvipdfmx]{jsarticle}
\begin{document}
\begin{tabular}{|*{20}{p{1zw}|}}
\multicolumn{5}{r}{5}&%
\multicolumn{5}{r}{10}&%
\multicolumn{5}{r}{15}&%
\multicolumn{5}{r}{20}\\
\hline
&&&&&&&&&&&&&&&&&&&\\
\hline
&&&&&&&&&&&&&&&&&&&\\
\hline
&&&&&&&&&&&&&&&&&&&\\
\hline
&&&&&&&&&&\multicolumn{10}{r}{}\\
\cline{1-10}
\end{tabular}
\end{document}
% pLaTeX
\documentclass[dvipdfmx]{jsarticle}
\begin{document}
\begin{tabular}{|*{20}{p{1zw}|}}
\multicolumn{5}{r}{5}&%
\multicolumn{5}{r}{10}&%
\multicolumn{5}{r}{15}&%
\multicolumn{5}{r}{20}\\
\hline
&&&&&&&&&&&&&&&&&&&\\
\hline
&&&&&&&&&&&&&&&&&&&\\
\hline
&&&&&&&&&&&&&&&&&&&\\
\hline
&&&&&&&&&&\multicolumn{10}{r}{}\\
\cline{1-10}
\end{tabular}
\end{document}
出遅れましたが、参考になれば ...
picture 環境での実装の考えたたのですが、tikz で実装。
最大、6つの点の座標を求め、閉じた線分を描くようにしました。。
各文字の枠は grid を使うが、横枠数で割り切れないときは
左側と右側の部分に分けて grid で描いてみました。。
出遅れたので、横枠数の変更や「文字枠の大きさ」も
オプションで指定できる様にしてみました。
ただし文字枠の大きさを変更すると文字数目安の数値が
若干上すぎるのが気になります。
picture 環境での実装の考えたたのですが、tikz で実装。
最大、6つの点の座標を求め、閉じた線分を描くようにしました。。
各文字の枠は grid を使うが、横枠数で割り切れないときは
左側と右側の部分に分けて grid で描いてみました。。
出遅れたので、横枠数の変更や「文字枠の大きさ」も
オプションで指定できる様にしてみました。
ただし文字枠の大きさを変更すると文字数目安の数値が
若干上すぎるのが気になります。