LoginSignup
2
2

【LaTeX】箇条書きで入れ子構造にしたくない【itemize/enumerate】

Last updated at Posted at 2024-03-17

入れ子構造を避けたい

$\LaTeX$で箇条書きをするとき、itemize環境を入れ子構造にすることがありますよね。

itemize環境
\begin{itemize}
    \item 第1階層
        \begin{itemize}
            \item 第2階層
                \begin{itemize}
                    \item 第3階層
                        \begin{itemize}
                            \item 第4階層
                        \end{itemize}
                \end{itemize}
        \end{itemize}
\end{itemize}

これは次のように出力されます。

enumerate環境でも同様です。

enumerate環境
\begin{enumerate}
    \item 第1階層
        \begin{enumerate}
            \item 第2階層
                \begin{enumerate}
                    \item 第3階層
                        \begin{enumerate}
                            \item 第4階層
                        \end{enumerate}
                \end{enumerate}
        \end{enumerate}
\end{enumerate}


この入れ子構造は可読性が低いし、打ち込むのも面倒臭い1

本記事の目的を「$\LaTeX$で深い階層まで箇条書きをする際の入れ子構造を解消すること」とします。

なお、筆者は$\LaTeX$の実行環境としてOverleafを採用しています。

解決策(1)

iitemパッケージを導入することで、入れ子構造問題を簡単に解消できます2

導入

プリアンブルに

usepackage
\usepackage{iitem}

と記載すれば使用できます。

使い方

次のコマンドを使用することで、箇条書きの各階層を出力できます。

階層 コマンド
1 \item
2 \iitem
3 \iiitem
4 \ivtem

具体例は以下の通りです。

itemize環境+iitem環境
\begin{itemize}
    \item 第1階層
        \iitem 第2階層
            \iiitem 第3階層
                \ivtem 第4階層
\end{itemize}
enumerate環境+iitem環境
\begin{enumerate}
    \item 第1階層
        \iitem 第2階層
            \iiitem 第3階層
                \ivtem 第4階層
\end{enumerate}

入れ子構造を解消し、見やすくしただけですので、出力結果はすでに示したものと同じです。

解決策(2)

easylist環境に乗り換える手もあります3easylist環境ではitemizeenumerate環境と違い、\itemでは無く§@などの記号によって箇条書きをします。

導入

プリアンブルに

usepackage
\usepackage[<options>]{easylist}

と記載すれば使用できます。<options>は箇条書きの際に使用する記号を選択できます。必要に応じて、以下のいずれかを記載します。

<options> 記号
(default) §
pilcrow
at @
sharp #
ampersand &

著者は@を採用しました。

usepackage
\usepackage[at]{easylist}

使い方

基本的には以下のように使用します。

easylist
\begin{easylist}[<style>]
    @ 第1階層
        @@ 第2階層
            @@@ 第3階層
                @@@@ 第4階層
\end{easylist}

itemizeenumerate環境とは違い、\itemでは無く@を使用して箇条書きをします。
<style>itemizeenumerateを選択すると良いでしょう。

具体的には次のように出力されます。

easylist[itemize]
\begin{easylist}[itemize]
    @ 第1階層
        @@ 第2階層
            @@@ 第3階層
                @@@@ 第4階層
\end{easylist}
easylist[enumerate]
\begin{easylist}[enumerate]
    @ 第1階層
        @@ 第2階層
            @@@ 第3階層
                @@@@ 第4階層
\end{easylist}

まとめ

解決策(1),(2) のどちらを採用しても良いと思います。一方で、出力結果のレイアウトに違いがあることに注意してください。easylist環境の方が箇条書きの間隔が広くなっています。個人的にはitemize環境とiitem環境の組み合わせのほうが好みです4

itemize環境 easylist環境
  1. たとえVSCodeのユーザースニペットを使用しようとも。

  2. iitemパッケージの公式ドキュメント

  3. easylistパッケージの公式ドキュメントの他に、このサイトでは日本語の解説があります。なお、本記事は入れ子構造の解消のみが目的なので\ListPropertiesコマンドや<style>には詳しく触れません。

  4. easylist環境の出力結果で間隔を詰める方法があればご教示頂きたいです。筆者はマクロを完全には理解していないので、このような手法によってコマンドを再定義することもできるかも知れませんが…。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2