添付画像のような出力を得たいです

添付画像のような出力を得たいです

- むぎ もち の投稿
返信数: 5
TeXShop, pLaTeXを使用している者です。たまたま某塾のテキストを見る機会があって,添付画像のような出力を得たいと思いました。
これまでTeXが原稿用紙のような出力が苦手であると思っていたので,このように実現されていることに驚き,自分でもそのような出力が得たいと思った次第です。
添付画像では字数が70字ですが,この字数も自分で指定できるような仕様にしたいと考えております。
よろしくお願いいたします。
添付 スクリーンショット 2022-11-27 21.50.47.png
むぎ もち への返信

Re: 添付画像のような出力を得たいです

- みなも の投稿
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} です。(引数はマス目の数)
むぎ もち への返信

Re: 添付画像のような出力を得たいです

- TONE Kozaburo の投稿
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}
TONE Kozaburo への返信

Re: 添付画像のような出力を得たいです

- みなも の投稿
> tabular環境じゃ駄目なんですかね。(^_^;)

マクロ化せずにその場で必要数だけマス目を生成
というならまさにその通りですね。

むぎ もち さんの希望が
「単なる再現」なのか「頻繁に使うのでマクロ化したい」なのか
にもよると思いますが。

一応,tabular 環境でマクロ化したものも挙げますね。
(毎回投稿が長いのもアレなので,今回は添付ファイルにします。)
繰り返しの制御中 tabular 環境を開始したくないので
トークンレジスターを使ったため,結構面倒に。。。

使い方は \Masu{70} です。
みなも への返信

Re: 添付画像のような出力を得たいです

- むぎ もち の投稿
みなも さま,TONE Kozaburo さま,早速お答えいただきありがとうございます。返信が遅くなり申し訳ございません。
おかげさまで望み通りの出力を得ることができました。とても感謝しております。ありがとうございました。
※ちなみに,当初は「単なる再現」を考えておりましたが,使用頻度を考え,マクロ化したものを使用させていただくことにしました。
むぎ もち への返信

Re: 添付画像のような出力を得たいです

- 和田 勇 の投稿
出遅れましたが、参考になれば ...

picture 環境での実装の考えたたのですが、tikz で実装。
最大、6つの点の座標を求め、閉じた線分を描くようにしました。。
各文字の枠は grid を使うが、横枠数で割り切れないときは
左側と右側の部分に分けて grid で描いてみました。。

出遅れたので、横枠数の変更や「文字枠の大きさ」も
オプションで指定できる様にしてみました。

ただし文字枠の大きさを変更すると文字数目安の数値が
若干上すぎるのが気になります。