\subsection 等で改行せずに本文を続ける方法

\subsection 等で改行せずに本文を続ける方法

- 匿 名 の投稿
返信数: 5
現在大学で出題されたレポート問題を解いており,問題の出題形式に合わせてプリアンブルで

\renewcommand{thesection}{第\kansuji\arabic{section}問}
\renewcommand{thesubsection}{\arabic{section}.}
\renewcommand{thesubsubsection}{(\alph{subsubsection})}

としているのですが,これだと\subsection{}や\subsubsection{}で1.や(a)と出力された後に改行されてから解答本文が始まる形になります。
この改行をなくして設問番号を書いた後に改行せずに解答本文が続くような形式に変更したいのですが,プリアンブルにどのような記述を加えればよいでしょうか?

あと,(a),(b)の番号を\subsectionを跨ぐ毎に(a)に戻したいのでこちらもプリアンブルに

\makeatletter
\@addtoreset{subsubsection}{subsection}
\makeatother

としたのですが,上手くいきません。こちらはどうすればよいでしょうか?

2点になって恐縮ですが,よろしくお願いします。
匿 名 への返信

Re: \subsection 等で改行せずに本文を続ける方法

- 匿 名 の投稿
ご希望の体裁の場合に\subsectionや\subsubsectionを使うのは得策だとは思われないのですが,ひとまずご質問に答えるとしますと,以下のような感じでしょうか:

------------------------------------------------------------
\documentclass{jarticle}
\usepackage{plext}

%\renewcommand{thesection}{第\kansuji\arabic{section}問}
\renewcommand{\thesection}{第\Kanji{section}問}
%\renewcommand{thesubsection}{\arabic{section}.}
\renewcommand{\thesubsection}{\arabic{subsection}.}
\renewcommand{\thesubsubsection}{(\alph{subsubsection})}

\makeatletter
\renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}%
  {1.5\Cvs \@plus.5\Cvs \@minus.2\Cvs}%
%  {.5\Cvs \@plus.3\Cvs}%
  {-.5zw}%
%  {\reset@font\large\bfseries}}
  {\reset@font\normalsize\bfseries}}
\renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}%
  {1.5\Cvs \@plus.5\Cvs \@minus.2\Cvs}%
%  {.5\Cvs \@plus.3\Cvs}%
  {-.5zw}%
  {\reset@font\normalsize\bfseries}}

%\def\@seccntformat#1{\csname the#1\endcsname\quad}
\def\@seccntformat#1{\csname the#1\endcsname}
\makeatother

\begin{document}

\section{}
あいうえお

\subsection{}
かきくけこ

\subsubsection{}
さしすせそ

\subsubsection{}
たちつてと

\subsection{}

\subsubsection{}
\subsubsection{}

\end{document}
------------------------------------------------------------

[1] \section, \subsection, \subsubsectionの後で改行されるのは,\@startsectionの第5引数が正だからです.

[2] 何もしなくとも,普通はカウンタsubsubsectionはカウンタsubsectionがインクリメントされるとクリアされます(\newcounter{subsubsection}[subsection]と定義されているので).

いずれにせよ,\subsection等を使うよりも,enumerate環境や類似のパッケージを使ったほうが良いように思われます.
匿 名 への返信

Re: \subsection 等で改行せずに本文を続ける方法

- 匿 名 の投稿
回答ありがとうございます。

個人的には\subsection等を使った方が番号部分の文字が太くなるのでそっちがいいと感じたのですが,確かに箇条書き関連の環境を使用する方が楽に書けました。

出来れば,箇条書き部分のインデントを0にして左端を\sectionと並ぶようにしたいのですがそれはどのようにすればよいでしょうか?
\setlengthで\itemindentを弄ってみましたが何も変わりませんでした。
匿 名 への返信

Re: \subsection 等で改行せずに本文を続ける方法

- 匿 名 の投稿
上の2014年01月19日(日曜日)05:44の匿名です.

enumitemパッケージやeasylistパッケージを見てみたのですが,箇条書きにおいて,

[1] ラベルのみを太字にする

[2] ラベルは階層に関係なく左端に寄せる

という条件について,enumitemでは [1] がうまくいき,easylistでは [2] がうまくいきましたが,両方を満たすようには,私にはできませんでした.あとはお詳しい方にお任せいたします.

なお,

>\setlengthで\itemindentを弄ってみましたが何も変わりませんでした。

とのことですが,\itemindentの調整は,list環境の定義時でないと無理なのではないかと思います.
匿 名 への返信

Re: \subsection 等で改行せずに本文を続ける方法

- 匿 名 の投稿
直接list環境を使ってみました:

\documentclass{jarticle}
\usepackage{plext}

\newcounter{num_i}
\newcounter{num_a}[num_i]

\newenvironment{num_i}
  {\list{\textbf{\arabic{num_i}.}}
      {\usecounter{num_i}
      \setlength{\labelwidth}{2zw}
      \setlength{\labelsep}{0zw}
      \setlength{\leftmargin}{\labelwidth}
      \renewcommand{\makelabel}[1]{\makebox[\labelwidth][l]{##1}}
      }}
  {\endlist}

\newenvironment{num_a}
  {\list{\textbf{(\alph{num_a})}}
      {\usecounter{num_a}
      \setlength{\labelwidth}{2zw}
      \setlength{\labelsep}{0zw}
      \setlength{\leftmargin}{0pt}
      \renewcommand{\makelabel}[1]{\makebox[\labelwidth][l]{##1}}
      }}
  {\endlist}

\newcommand{\aiueo}{あいうえおかきくけこさしすせそたちつてとなにぬねの
  はひふへほまみむめもやゆよらりるれろわをん\par}

\renewcommand{\thesection}{第\Kanji{section}問}

\begin{document}

\section{}

\aiueo

\begin{num_i}
\item \aiueo
\item \aiueo
  \begin{num_a}
  \item \aiueo
  \item \aiueo
  \end{num_a}
\item \aiueo
  \begin{num_a}
  \item \aiueo
  \end{num_a}
\end{num_i}

\aiueo

\end{document}
匿 名 への返信

Re: \subsection 等で改行せずに本文を続ける方法

- 匿 名 の投稿
既にレポートはご提出されてしまったかも知れませんが,若干の改善(?)を:
・カウンタを使うのをやめる
・書式設定は\listの第一引数ではなく\makelabelで行う

------------------------------------------------------------
\documentclass{jarticle}

\newenvironment{answer}
  {\list{}
      {\setlength{\labelwidth}{2zw}
        \setlength{\labelsep}{0zw}
        \setlength{\leftmargin}{\labelwidth}
        \renewcommand{\makelabel}[1]{\makebox[\labelwidth][l]{\textbf{##1}}}
      }}
  {\endlist}

\begin{document}

\begin{answer}
\item[1.]
  \item[(a)]
  \item[(b)]
\item[2.]
  \item[(a)]
  \item[(b)]
\end{answer}

\end{document}
------------------------------------------------------------

description環境の場合のように\itemの引数に“1.”や“(a)”を手入力するようにしてみました.第二階層の\listもなくしました.

\sectionや\itemにカウンタを仕込むのは,\sectionや\itemの順番を後から入れ替えても正しくナンバリングされるため(著者がそれを意識しなくても済むため)なのでしょうが,今回のような場合ですと,これでは当該\subsubsection{}なり\itemなりが問の何番に対応しているのかが原稿上では分からなくなってしまいます.

なので,一見面倒そうに見えても,番号は手入力をしたほうが使い勝手が良いのではないかと思い直しました.

(結局は,わざわざ環境を定義する必要もなかったかも知れません・・・)