スタイルファイルの質問

スタイルファイルの質問

- やなせ 太郎 の投稿
返信数: 5
ご質問させていただきたいのですが、
数学入試問題のためのマクロ作成で理解できないプログラム文字が出てきたので質問しました。

1.\@ifnextchar
2.\@tempcnta
3.\parshape

以上の3つの意味と使い方について解説をお願いできますでしょうか?
やなせ 太郎 への返信

Re: スタイルファイルの質問

- 匿 名 の投稿

え?!

先日ご質問された

> \@sfornoopについて
> 2014年 10月 25日(土曜日) 15:56 - やなせ 太郎 の投稿

とか

> \rwrapframeについて
> 2014年 10月 25日(土曜日) 16:03 - やなせ 太郎 の投稿

について何も反応されてないのに、今回また新たにご質問されたということはつまり、「回答者」 達をからかって面白がっている愉快犯ということなのでしょうか?!

匿 名 への返信

スタイルファイルの質問

- やなせ 太郎 の投稿
すみません。改行が効かなかったもので。


\def\@sfornoop#1\@@#2#3{}<\br>



\long\def\@sfor#1:=#2\do#3{%<\br>

\expandafter\def\expandafter\@fortmp\expandafter{#2}%<\br>

\ifx\@fortmp\@empty<\br>

\else<\br>

\expandafter\@sforloop#2/\@nil/\@nil\@@#1{#3}<\br>

\fi}<\br>

\long\def\@sforloop#1/#2/#3\@@#4#5{%<\br>

\def#4{#1}<\br>

\ifx #4\@nnil<\br>

\else<\br>

#5<\br>

\def#4{#2}<\br>

\ifx #4\@nnil

\else #5\@siforloop #3\@@#4{#5}

\fi

\fi}

\long\def\@siforloop#1/#2\@@#3#4{%
\def#3{#1}

\ifx #3\@nnil

\expandafter\@sfornoop

\else

#4\relax\expandafter\@siforloop

\fi


#2\@@#3{#4}}

のような感じでよろしいでしょうか?
やなせ 太郎 への返信

Re: スタイルファイルの質問

- 奥村 晴彦 の投稿
今度は1行おきにコピペされたりして,何か変ですね。

ご自分の名前のリンクをクリックして,「プロファイルの編集」をお選びいただき,「テキスト編集」の項目を「標準のウェブフォームを使用します」にして「プロファイルを更新する」ボタンを押し,書き込む際には念のため「フォーマット」を「プレインテキストフォーマット」にしていただければ,最も安全です。
やなせ 太郎 への返信

Re: スタイルファイルの質問

- 匿 名 の投稿
先日の質問に最初に回答した別の匿名です。
参考先ののページとか文献名は提示できないのですか。
秘密をようするとか。

>改行できない。
先日の文面をテキストエディタにコピペして
手動で不要なな行番号を消し、手動で改行されては
やなせ 太郎 への返信

Re: スタイルファイルの質問

- 帯田 木偶太 の投稿

\@ifnextchar は、マクロの定義の中で、そのマクロの直後に置かれているものを
判別するコマンドです。例えば \test というマクロが
    \def\test{\@ifnextchar A{:uppercase a:}{:something else:}}
と定義されている場合、
    \test A
という形で \test を使うと「:uppercase a:」と表示され、
    \test B
という形であれば「:something else:」と表示されます。

“\@ifnextchar [”という形で、マクロにオプション引数が指定されているか
どうかを判別するのが典型的な使い方です。


\@tempcnta は、スクラッチ・ユースのために用意されている
カウント・レジスター(整数変数)です。
    \@tempcnta=2\relax
のようにして代入します。
(LaTeX のカウンターとは違うので、\setcounter は使えません)


\parshape は、段落の形状を指定するコマンドです。
    \parshape n i1 l1 i2 l2 i3 l3 ... in ln
という形で指定します。ここで、n は行数、ikk 行目の
インデント幅、lkk 行目の行長を指定します。
n+1 行目以降のインデント幅・行長は、n 行目と同じになります。

例えば、
    \parshape 4 10mm 60mm 20mm 50mm 30mm 40mm 40mm 30mm
    \noindent いろはにほへとちりぬるをわかよたれそつねならむ
    うゐのおくやまけふこえてあさきゆめみしゑひもせすん
    いろはにほへとちりぬるをわかよたれそつねならむ
    うゐのおくやまけふこえてあさきゆめみしゑひもせすん
のように使います。


マクロ作成に手を染められるなら、手始めに藤田眞作さんの
『LaTeX2e まくろの八衢』あたりを読まれるとよいかと思います。
下記の URL から PDF で入手できます。
    http://xymtex.com/