emath BBS (Read Only)

新規発言一覧最新記事過去一覧検索HOME

No.12826  zahyou環境を自作マクロに組み込むと余分な空白が現れる
発言者: KEN
発言日: 2015 09/23 04:07
はじめまして。
emathにはいつもお世話になり、こちらの掲示板にも幾度となく救われています。
今回、初めて質問させていただきます。

現在、emathを用いて数学マーク式問題の解答一覧のマクロを作っています。
以下のソースのように、ア以降、順に縦に解答を並べながら、横に配点を示した表を目標にしています。
その際、zahyou*環境を利用しているのですが、図の左側に余分な空白が現れてしまいます。
図のサイズが大きくなるにつれ、空白も大きくなります。
何か打開策を授けてはいけないでしょうか。

以下、ソースです。
emathの配列や計算を多用しているため見にくいとは思いますが、ご容赦ください。
よろしくお願いします。

\documentclass[11pt,a4paper]{jsarticle}
\usepackage[dvipdfmx]{graphicx}
\usepackage{emathPp}
\usepackage{emathPs}
%
% マーク式解答一覧作成
% フォーマット:\markKaitou{#1,#2;#3,#4;以下略}
% #1,#2:解答の数字文字をベタ打ち,配点
% #3,#4:解答の数字文字をベタ打ち,配点
% 以下略
% 問題の区切りはセミコロン(;)
\makeatletter
\def\markKaitou#1{%
        % 文字列を;でばらし、一時的に配列fooに格納
        % 要素の個数は\kkosuuに格納(つまり、\kkosuu:問題数)
        \hairetusyokika{foo}
        \argsep{#1}{;}{foo}\kkosuu
        % 各要素を,でばらす
        % 前方を配列@AnSwerへ、後方を配列@TenSuuへ
        % @AnSwerを1文字ずつバラバラにしたものを配列@AAnSwerへ
        % @AnSwerの文字数を配列@Kosuuへ
        \hairetusyokika{@AnSwer} % 解答(バラバラ前)
        \hairetusyokika{@AAnSwer} % 解答(バラバラ後)
        \hairetusyokika{@TenSuu} % 点数
        \hairetusyokika{@Kosuu} %各問の文字数
        \Ifor\@loop{0}{\kkosuu}\Do{%
                \IAdd{\@loop}{1}\@MyCnt
                \strsep{\hairetu{foo}{\@MyCnt}}{,}\@a\@aa
                \strlen{\@a}\kosuu
                \hairetutuika{@Kosuu}{\kosuu}
                \hairetutuika{@AnSwer}{\@a}
                \hairetutuika{@TenSuu}{\@aa}
                \Ifor\l@@op{0}{\kosuu}\Do{%
                        \headchar{\@a}\@MoZi\nokori
                        \hairetutuika{@AAnSwer}{\@MoZi}
                \let\@a\nokori}%
        }%
        \hairetucsv{@AAnSwer}\Acsv
        \hairetusyokika{Afoo}
        \argsep{\Acsv}{,}{Afoo}\SouSuu
        \IMul{\SouSuu}{-1}\@KaTan
        \ISub{\@KaTan}{1}\KaTan
%%%%% ここまで計算部分
%%%%% ここから出力部分
\begin{zahyou*}[ul=5mm,xscale=2,haiti=t](0,4)(\KaTan,0)
        \linethickness{.8pt}
        \Drawline{(0,0)(4,0)}
        \Put{(0.5,-0.5)}[c]{番号}
        \Put{(1.5,-0.5)}[c]{解答}
        \Put{(2.5,-0.5)}[c]{配点}
        \Put{(3.5,-0.5)}[c]{結果}
        \Drawline{(0,-1)(4,-1)}
        %%%%%% 番号・解答を出力
        %%%%%% 横罫線はすべて描画
        \def\yval{-1.5}
        \def\dval{-2}
        \Ifor\ival{0}{\SouSuu}\Do{%
                \IAdd{\ival}{1}\qval
                \Put{(0.5,\yval)}[c]{ア}
                \Put{(1.5,\yval)}[c]{$\hairetu{@AAnSwer}{\qval}$}
                \Drawline{(0,\dval)(4,\dval)}
                \Sub{\yval}{1}\yyval
                \Sub{\dval}{1}\ddval
                \let\yval\yyval
                \let\dval\ddval
        }%
        %%%%%% 配点を出力
        %%%%%% 複数段にまたがる場合は縦方向の中心に配置
        %%%%%% さらに、またがる横罫線を白で覆う
        \def\yval{-1.5}
        \def\dval{-2}
        \Ifor\ival{0}{\kkosuu}\Do{%
                \IAdd{\ival}{1}\qval
                \def\aNswer{\hairetu{@Kosuu}{\qval}}
                \Sub{\aNswer}{1}\dmval
                \Sub{\yval}{\dmval}\ykval
                \def\A{(2.5,\yval)}
                \def\B{(2.5,\ykval)}
                \Bunten\A\B11\P
                \Sub{\ykval}{1}\yval
                \Ifor\jval{0}{\dmval}\Do{%
                        \Drawline<iro=white>{(2,\dval)(4,\dval)}
                        \ISub{\dval}{1}\ddval
                        \let\dval\ddval
                }%
                \Put\P[c]{\hairetu{@TenSuu}{\qval}}
                \Sub{\dval}{1}\ddval
                \let\dval\ddval
        }%
        %%%%%% 縦罫線を描画
        \Drawlines{(0,0)(0,\KaTan);(1,0)(1,\KaTan);(2,0)(2,\KaTan);(3,0)(3,\KaTan);(4,0)(4,\KaTan)}
\end{zahyou*}}
\makeatother
%
\begin{document}
%%%
\fbox{
\markKaitou
{1,2;12,3;123,4;1234,5}
}\par
\fbox{
\markKaitou
{1,2;12,3;123,4}
}\par
\fbox{
\markKaitou
{1,2;12,3}
}
%%%
\end{document}

▼関連発言

12826:zahyou環境を自作マクロに組み込むと余分な空白が現れる [KEN] 09/23 04:07
 └12827:Re:zahyou環境を自作マクロに組み込むと余分な空白が現れる [飯島 徹] 09/23 05:28
  └12828:Re[2]:zahyou環境を自作マクロに組み込むと余分な空白が現れ.. [KEN] 09/23 06:11
   └12829:Re[3]:zahyou環境を自作マクロに組み込むと余分な空白が現.. [田中徹] 09/23 10:57
    └12830:Re[4]:zahyou環境を自作マクロに組み込むと余分な空白が.. [KEN] 09/23 22:46<-last

  返信フォーム [引用]
名 前 保存
題 名
メール省略可
★質問では,問題点を例示する完全なTeXファイル
 (\documentclass から \end{document} まで)
 を示していただくのが解決の早道です。
★エラーが出る場合は,ログファイルから
 エラーメッセージをコピー&ペーストしてください。
★この板では,投稿者が改行を入れない限り
 延々と右に続きます。適宜,改行を入れてください。
発 言
URL 省略可
PASSWORD
書き込む
◆ emath と無関係な話題はご遠慮願います。

Pass 保存


CGIROOM