宜しくお願い致します。
(1)
1+2=3 (1.1.1)
ではなく
(1) 1+2=3 (1.1.1)
という風に行頭番号(1)と参照番号(1.1.1)を一行で出力させたくて下記のようにしました。
\begin{enumerate}
\begin{fleqn}\begin{align}
\item \label{123} $1+2=3$ \label{456}
\end{align}\end{fleqn}
\end{enumerate}
「! LaTeX Error: Command \item invalid in math mode.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.」
となり,\mbox{\item \label{123}}と\mboxで括ったら
「! LaTeX Error: Something's wrong--perhaps a missing \item.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.」
となりました。どうすれば解決できますでしょうか?
ひとまずはそんなに複雑に考える必要はないんです
たとえば
\begin{enumerate}
\item $y=ax^2+bx+c$ \hfill (1.1.1)
\end{enumerate}
による結果が得たいものであれば
それを順次マクロにすればいいのです
まず,それらしく入力しようと思うと
\begin{enumerate}
\item
\begin{EqInEnumerate}
y=ax^2+bx+c
\end{EqInEnumerate}
\end{enumerate}
なんてのはそれらしいでしょう.だったら,
EqinEnumerate環境ってのを最初のものになるように
さだめればいいのです
\def\EqInEnumrate{%
$\disylaystyle %%%別行だての形に
}
\def\endEqinEnumerate{%
$\hfill(1.1.1)\par}
これじゃあ,数式番号がまずい
(番号固定だし,だから増えていかない)から
\def\endEqinEnumerate{%
$\hfill
\refstepcounter{equation}%
(\theequation)\par}
これでうごくかは試してないのでわかりませんが,
ざっくり考えるならこんな感じです.
目標の結果を得る入力をまず力技ででも
何ででもでっちあげて,それをマクロ化して,
可変にすべき部分を取り出していって,
徐々に抽象化していくとこの手のものは
なんとかなります.
もう少し手をいれて,
位置揃いもしたい,改ページもしたいとなると
eqnarray環境の定義を真似するということを
思いつきます.
\itemと\halignをうまく配置するという方針です.
#たぶん可能だろうけどかなりめんどくさくなりそう.
改ページを考えないなら
array環境のtオプションを使うのもありだと思います.
========
本格的に処置しようとなると
list系環境なので相当複雑です.
\itemで実際に見出しを出す処理はややこしいのです.
\itemの処理の中で\@inlabelなるものを追いかけて,
それをequationなりeqnarrayなりと連携させた上で
\itemの処理の一部を横取りした
equationなりeqnarrayなりを書くことになります.
amsmath互換にするとなると・・・
もう考えたくないです.
たとえば
\begin{enumerate}
\item $y=ax^2+bx+c$ \hfill (1.1.1)
\end{enumerate}
による結果が得たいものであれば
それを順次マクロにすればいいのです
まず,それらしく入力しようと思うと
\begin{enumerate}
\item
\begin{EqInEnumerate}
y=ax^2+bx+c
\end{EqInEnumerate}
\end{enumerate}
なんてのはそれらしいでしょう.だったら,
EqinEnumerate環境ってのを最初のものになるように
さだめればいいのです
\def\EqInEnumrate{%
$\disylaystyle %%%別行だての形に
}
\def\endEqinEnumerate{%
$\hfill(1.1.1)\par}
これじゃあ,数式番号がまずい
(番号固定だし,だから増えていかない)から
\def\endEqinEnumerate{%
$\hfill
\refstepcounter{equation}%
(\theequation)\par}
これでうごくかは試してないのでわかりませんが,
ざっくり考えるならこんな感じです.
目標の結果を得る入力をまず力技ででも
何ででもでっちあげて,それをマクロ化して,
可変にすべき部分を取り出していって,
徐々に抽象化していくとこの手のものは
なんとかなります.
もう少し手をいれて,
位置揃いもしたい,改ページもしたいとなると
eqnarray環境の定義を真似するということを
思いつきます.
\itemと\halignをうまく配置するという方針です.
#たぶん可能だろうけどかなりめんどくさくなりそう.
改ページを考えないなら
array環境のtオプションを使うのもありだと思います.
========
本格的に処置しようとなると
list系環境なので相当複雑です.
\itemで実際に見出しを出す処理はややこしいのです.
\itemの処理の中で\@inlabelなるものを追いかけて,
それをequationなりeqnarrayなりと連携させた上で
\itemの処理の一部を横取りした
equationなりeqnarrayなりを書くことになります.
amsmath互換にするとなると・・・
もう考えたくないです.
本田さんがマクロ作成の流れを詳しく説明してくれました。
ただ、DION Emily さんのこれまでの書き込みから想像するに、
これで自分でなんとかするのは少し難しいかなという気がします。
DION Emily さんに align 環境を使っている目的を訊ねたところ、
>> 桁揃えの希望があるのでしょうか。
> いえ,特に等号の桁ぞろえは望みません。あくまで行数をできるだけ節約する為です。
というご回答でしたが、align 環境には行を詰めたりするような機能はないはずなので、
この「行数を節約するため」というのは、 align 環境を使っていた目的ではなくて、
箇条書きの番号と数式と数式番号をすべて1行に収めることの目的だろうと想像します。
そうすると結局 align 環境を使う目的がはっきりしません。
おそらくですが、amsmath のディスプレイ数式環境に equation, align, gather, などの種類があって、
それぞれに使用目的が違うのだというようなことを把握されていないのではないでしょうか?
(これらの環境の説明は、おそらくお手元のシステムの /texmf/source/latex/amslatex/math/amsldoc.tex にあると思います)
それで、単に数式番号をつけるためだけの目的で align 環境を使っていたと。
(そもそもディスプレイ数式とインライン数式の違いを上付きや下付きの体裁の違い程度だと思っているのかも)
もしもそうなら、ディスプレイ数式にせずに数式番号だけを付けるようにできれば解決ですね。
(これが本田さんの説明してくれたことだと思います。
が、タイプミスがあるようです。
\EqInEnumrate → \EqInEnumerate
\disylaystyle → \displaystyle
\endEqinEnumerate → \endEqInEnumerate)
と、いろいろ想像を交えて書かせていただいたので、はずれているかもしれません、
DION Emily さん、いかがでしょうか?
ただ、DION Emily さんのこれまでの書き込みから想像するに、
これで自分でなんとかするのは少し難しいかなという気がします。
DION Emily さんに align 環境を使っている目的を訊ねたところ、
>> 桁揃えの希望があるのでしょうか。
> いえ,特に等号の桁ぞろえは望みません。あくまで行数をできるだけ節約する為です。
というご回答でしたが、align 環境には行を詰めたりするような機能はないはずなので、
この「行数を節約するため」というのは、 align 環境を使っていた目的ではなくて、
箇条書きの番号と数式と数式番号をすべて1行に収めることの目的だろうと想像します。
そうすると結局 align 環境を使う目的がはっきりしません。
おそらくですが、amsmath のディスプレイ数式環境に equation, align, gather, などの種類があって、
それぞれに使用目的が違うのだというようなことを把握されていないのではないでしょうか?
(これらの環境の説明は、おそらくお手元のシステムの /texmf/source/latex/amslatex/math/amsldoc.tex にあると思います)
それで、単に数式番号をつけるためだけの目的で align 環境を使っていたと。
(そもそもディスプレイ数式とインライン数式の違いを上付きや下付きの体裁の違い程度だと思っているのかも)
もしもそうなら、ディスプレイ数式にせずに数式番号だけを付けるようにできれば解決ですね。
(これが本田さんの説明してくれたことだと思います。
が、タイプミスがあるようです。
\EqInEnumrate → \EqInEnumerate
\disylaystyle → \displaystyle
\endEqinEnumerate → \endEqInEnumerate)
と、いろいろ想像を交えて書かせていただいたので、はずれているかもしれません、
DION Emily さん、いかがでしょうか?
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12158507867
のmuskmelon_panさんの解答が利用できるかと思います。
のmuskmelon_panさんの解答が利用できるかと思います。
ご回答誠に有難うございます。
http://tex.stackexchange.com/questions/199520/enumerating-the-align-environment
を参考に下記のコードをコンパイルできました。
eqnarray環境で表示される数式に後置される普通の数式番号(1.2.3)を出力させるにはどうすればいいのでしょうか?
http://tex.stackexchange.com/questions/199520/enumerating-the-align-environment
を参考に下記のコードをコンパイルできました。
eqnarray環境で表示される数式に後置される普通の数式番号(1.2.3)を出力させるにはどうすればいいのでしょうか?
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{amsmath} \newcounter{algostep} \newcommand\step{\stepcounter{algostep}\hskip\parindent\thealgostep.} \usepackage{etoolbox} \BeforeBeginEnvironment{flalign}{\setcounter{algostep}{0}} \begin{document} \setcounter{equation}{42} Text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text. \begin{flalign} &\step & a & = b + c \label{label1} & \\ &\step & q & = e + f \label{label2} \\ &\step & z & = a + d \label{label3} \end{flalign} Text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text. \begin{flalign} &\step & z & = a + d \label{label3} & \\ &\step & q & = e + f \label{label2} \\ &\step & a & = b + c \label{label1} \end{flalign} \end{document}
ご回答誠に有難うございます。仰る通り下記のようにして上手くいきました。
ほぼ90%です。
最後にあと2つだけお許しください。
一つ目は
\arabic{part}→\arabic{chapter}に変更したのですがどの章に
「\begin{flalign}
&\step a = b + c \label{label1}& \\
&\step q = e + f \label{label2} \\
&\step z = a + d \label{label3}
\end{flalign}」
を置いても章番号の欄は常に1のままなのですが,どうすれば章番号に反応してくれるようになるのでしょうか?
二つ目は
\begin{fleqn}\begin{align}\end{align}\end{fleqn}環境では
\renewcommand{\labelenumi}{$\lbag${\rm \arabic{enumi}}$\rbag$}
として\itemは飾り括弧とアラビア数字で出力させてるのですが,
\stepででも飾り括弧とアラビア数字で出力されるにはどうすればいいのでしょうか?
(\newcounter{algostep}のalgostepをどうにか変更すればいいのだと推測はしたのですが、、)
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\newcounter{algostep}
\newcommand\step{\stepcounter{algostep}\hskip\parindent\thealgostep.}
\usepackage{etoolbox}
\BeforeBeginEnvironment{flalign}{\setcounter{algostep}{0}}
\makeatletter
\renewcommand{\theequation}{\arabic{chapter}.\arabic{section}.\arabic{equation}}
\@addtoreset{equation}{section}
\makeatother
\begin{document}
\begin{flalign}
&\step a = b + c \label{label1}& \\
&\step q = e + f \label{label2} \\
&\step z = a + d \label{label3}
\end{flalign}
\end{document}
ほぼ90%です。
最後にあと2つだけお許しください。
一つ目は
\arabic{part}→\arabic{chapter}に変更したのですがどの章に
「\begin{flalign}
&\step a = b + c \label{label1}& \\
&\step q = e + f \label{label2} \\
&\step z = a + d \label{label3}
\end{flalign}」
を置いても章番号の欄は常に1のままなのですが,どうすれば章番号に反応してくれるようになるのでしょうか?
二つ目は
\begin{fleqn}\begin{align}\end{align}\end{fleqn}環境では
\renewcommand{\labelenumi}{$\lbag${\rm \arabic{enumi}}$\rbag$}
として\itemは飾り括弧とアラビア数字で出力させてるのですが,
\stepででも飾り括弧とアラビア数字で出力されるにはどうすればいいのでしょうか?
(\newcounter{algostep}のalgostepをどうにか変更すればいいのだと推測はしたのですが、、)
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\newcounter{algostep}
\newcommand\step{\stepcounter{algostep}\hskip\parindent\thealgostep.}
\usepackage{etoolbox}
\BeforeBeginEnvironment{flalign}{\setcounter{algostep}{0}}
\makeatletter
\renewcommand{\theequation}{\arabic{chapter}.\arabic{section}.\arabic{equation}}
\@addtoreset{equation}{section}
\makeatother
\begin{document}
\begin{flalign}
&\step a = b + c \label{label1}& \\
&\step q = e + f \label{label2} \\
&\step z = a + d \label{label3}
\end{flalign}
\end{document}
1.
文書クラスは、article.clsでなく、book.clsですか?chapterは、article.clsに定義されていません。chapterが定義されている文書クラスをお使いで、数式番号(1.2.3)の"1"が章番号に対応するなら、
\renewcommand{\theequation}{\arabic{part}.\arabic{section}.\arabic{equation}}
を
\renewcommand{\theequation}{\arabic{chapter}.\arabic{section}.\arabic{equation}}
として下さい。
2.
\newcommand\step{\stepcounter{algostep}\hskip\parindent\thealgostep}
を
\newcommand\step{\stepcounter{algostep}\hskip\parindent(\thealgostep)}
として下さい。
文書クラスは、article.clsでなく、book.clsですか?chapterは、article.clsに定義されていません。chapterが定義されている文書クラスをお使いで、数式番号(1.2.3)の"1"が章番号に対応するなら、
\renewcommand{\theequation}{\arabic{part}.\arabic{section}.\arabic{equation}}
を
\renewcommand{\theequation}{\arabic{chapter}.\arabic{section}.\arabic{equation}}
として下さい。
2.
\newcommand\step{\stepcounter{algostep}\hskip\parindent\thealgostep}
を
\newcommand\step{\stepcounter{algostep}\hskip\parindent(\thealgostep)}
として下さい。
ご回答誠に有難うございます。
> 文書クラスは、article.clsでなく、book.clsですか?
\documentclass[10pt,oneside]{book}
としてます。
\renewcommand{\theequation}{\arabic{chapter}.\arabic{section}.\arabic{equation}}
\newcommand\step{\stepcounter{algostep}\hskip\parindent(\thealgostep)}
と訂正して上手くいきました。\(^o^)/
もう99%目的が達成です!!!!
あと1%は
\begin{enumerate}
\item \label{1} Let $1+1=2$.\begin{eqnarray}\label{2}
a+b=c.
\end{eqnarray}
\item \label{3} Let $2+3=5$\begin{eqnarray}\label{4}
c+d=e.
\end{eqnarray}
\end{enumerate}
は\item番号も数式番号も参照できますよね。
でも\step番号を参照しようと
\begin{flalign}
&\step \label{1} \mbox{Let } 1+1=2. a+b=c \label{2} & \\
&\step \label{3} \mbox{Let } 2+3=5 c+d=e \label{4} \\
\end{flalign}
とした所,下記のエラーが出てしまいました。どうすれば解決できますでしょうか?
! Package amsmath Error: Multiple \label's: label '1' will be lost.
See the amsmath package documentation for explanation.
Type H <return> for immediate help.
> 文書クラスは、article.clsでなく、book.clsですか?
\documentclass[10pt,oneside]{book}
としてます。
\renewcommand{\theequation}{\arabic{chapter}.\arabic{section}.\arabic{equation}}
\newcommand\step{\stepcounter{algostep}\hskip\parindent(\thealgostep)}
と訂正して上手くいきました。\(^o^)/
もう99%目的が達成です!!!!
あと1%は
\begin{enumerate}
\item \label{1} Let $1+1=2$.\begin{eqnarray}\label{2}
a+b=c.
\end{eqnarray}
\item \label{3} Let $2+3=5$\begin{eqnarray}\label{4}
c+d=e.
\end{eqnarray}
\end{enumerate}
は\item番号も数式番号も参照できますよね。
でも\step番号を参照しようと
\begin{flalign}
&\step \label{1} \mbox{Let } 1+1=2. a+b=c \label{2} & \\
&\step \label{3} \mbox{Let } 2+3=5 c+d=e \label{4} \\
\end{flalign}
とした所,下記のエラーが出てしまいました。どうすれば解決できますでしょうか?
! Package amsmath Error: Multiple \label's: label '1' will be lost.
See the amsmath package documentation for explanation.
Type H <return> for immediate help.
ちょっと進行中の流れとは違う方向ですが、
私のほうでも別案をまとめてみたので一応書いてみます。
まず問題点の分析です。問題なのは次の点ですね。
\item を使った箇条書きの項目中に数式番号付きの数式を入れたいが、
数式番号を付けるにはディスプレイ数式にするしかなく、
そうすると不用な改行や縦方向の空白が入ってしまう。
望ましい状態は、
数式を置く行の頭に \item による番号がついたうえで同時に末尾に数式番号が付く、
ということになるでしょう。
そのための方策としては、大きく分けて、
(A) 数式環境の中で、式の左側に箇条書き番号をつける
(B) 箇条書きの項目の中で(ディスプレイ形式にせずに)数式番号をつける
のいずれかが考えられます。
(A)は本田さんが示してくれた方法で、
(B)はOlive Oil さんの紹介されたサイトを参考に DION Emily さんがやってみて、現在調整中の方法ですね。
私が思うに、(B)よりも(A)のほうが素直で筋がよいように思います。
というのも、
(B)のほうは、箇条書きという 複数項目を束ねている構造を、
その構造を断ち切って項目ごとに数式に埋め込まねばならないのに対して、
(A)のほうは、数式番号を伴った数式を箇条書きの中にコンパクトに埋め込めばよく、
数式と数式番号が組になっている構造を分断しません。
ただし、(A)の場合には、数式番号を付けられるのが通常ディスプレイ数式に限られているのを、
インライン数式にもつけられるようにする必要があります。
下の例は(A)を実装してみたものです。本田さんの例では数式番号を自前で操作していたのに対して、
数式番号を付ける処理を amsmath の内部マクロを拝借してやってみたものです。
ただし、amsmath はわりと頻繁に内部マクロを変えてしまうので、うまく動くかをバージョンごとに確かめる必要があります。
項目番号と数式番号のそれぞれを \label で参照できるようです。
\documentclass{book}
\usepackage{amsmath}
\makeatletter
%\let\MakeDisplayTag\make@display@tag% 昔の amsmath 用
\def\MakeDisplayTag{\refstepcounter{equation}\tagform@\theequation}% 最近の amsmath 用
\makeatother
\begin{document}
\chapter{Aaa}
\chapter{Bbb}
\chapter{Ccc}
\section{aa}
\begin{equation}
1+1=2
\end{equation}
\section{bb}
\begin{enumerate}
\item \label{i:2}$1+2=3$\hfil\MakeDisplayTag\label{e:2}
\item \label{i:3}$2+3=5$\hfil\MakeDisplayTag\label{e:3}
\end{enumerate}
項目\ref{i:3}(ページ\pageref{i:3})は項目\ref{i:2}(ページ\pageref{i:2})の次の項目で、
式\ref{e:3}(ページ\pageref{e:3})は式\ref{e:2}(ページ\pageref{e:3})より従う。
\end{document}
私のほうでも別案をまとめてみたので一応書いてみます。
まず問題点の分析です。問題なのは次の点ですね。
\item を使った箇条書きの項目中に数式番号付きの数式を入れたいが、
数式番号を付けるにはディスプレイ数式にするしかなく、
そうすると不用な改行や縦方向の空白が入ってしまう。
望ましい状態は、
数式を置く行の頭に \item による番号がついたうえで同時に末尾に数式番号が付く、
ということになるでしょう。
そのための方策としては、大きく分けて、
(A) 数式環境の中で、式の左側に箇条書き番号をつける
(B) 箇条書きの項目の中で(ディスプレイ形式にせずに)数式番号をつける
のいずれかが考えられます。
(A)は本田さんが示してくれた方法で、
(B)はOlive Oil さんの紹介されたサイトを参考に DION Emily さんがやってみて、現在調整中の方法ですね。
私が思うに、(B)よりも(A)のほうが素直で筋がよいように思います。
というのも、
(B)のほうは、箇条書きという 複数項目を束ねている構造を、
その構造を断ち切って項目ごとに数式に埋め込まねばならないのに対して、
(A)のほうは、数式番号を伴った数式を箇条書きの中にコンパクトに埋め込めばよく、
数式と数式番号が組になっている構造を分断しません。
ただし、(A)の場合には、数式番号を付けられるのが通常ディスプレイ数式に限られているのを、
インライン数式にもつけられるようにする必要があります。
下の例は(A)を実装してみたものです。本田さんの例では数式番号を自前で操作していたのに対して、
数式番号を付ける処理を amsmath の内部マクロを拝借してやってみたものです。
ただし、amsmath はわりと頻繁に内部マクロを変えてしまうので、うまく動くかをバージョンごとに確かめる必要があります。
項目番号と数式番号のそれぞれを \label で参照できるようです。
\documentclass{book}
\usepackage{amsmath}
\makeatletter
%\let\MakeDisplayTag\make@display@tag% 昔の amsmath 用
\def\MakeDisplayTag{\refstepcounter{equation}\tagform@\theequation}% 最近の amsmath 用
\makeatother
\begin{document}
\chapter{Aaa}
\chapter{Bbb}
\chapter{Ccc}
\section{aa}
\begin{equation}
1+1=2
\end{equation}
\section{bb}
\begin{enumerate}
\item \label{i:2}$1+2=3$\hfil\MakeDisplayTag\label{e:2}
\item \label{i:3}$2+3=5$\hfil\MakeDisplayTag\label{e:3}
\end{enumerate}
項目\ref{i:3}(ページ\pageref{i:3})は項目\ref{i:2}(ページ\pageref{i:2})の次の項目で、
式\ref{e:3}(ページ\pageref{e:3})は式\ref{e:2}(ページ\pageref{e:3})より従う。
\end{document}
これ、別のトピックでほぼ同じ解決策がすでに出されていたようですね。
このトピックと同じく DION Emilyさんによって立てられた
「文中の数式に通し番号をつけて\labelもセットするには?」
https://okumuralab.org/tex/mod/forum/discuss.php?d=1067
です。
憶えておられるでしょうか?
そこで tat tsan さんによって出された回答がそうです。
そこでも指摘されているようですが、
やはり一度まとまった解説を通読していただくのがよいと思います。
システムにはすでに amsldoc.pdf があるでしょうし。
このトピックと同じく DION Emilyさんによって立てられた
「文中の数式に通し番号をつけて\labelもセットするには?」
https://okumuralab.org/tex/mod/forum/discuss.php?d=1067
です。
憶えておられるでしょうか?
そこで tat tsan さんによって出された回答がそうです。
そこでも指摘されているようですが、
やはり一度まとまった解説を通読していただくのがよいと思います。
システムにはすでに amsldoc.pdf があるでしょうし。
すみません。二つ上の
「2017年 01月 04日(水曜日) 02:45 - 北見 けん の投稿」
について、読み返してみたら致命的な間違いがありました。
方向性として挙げていた(A)と(B)が意図したものと逆になっていて、
そのあとの論説との対応が真逆になっていました。
あれではわけがわかりませんね。申し訳ありません。
間違っていたところを修正したうえで再掲させていただきます。
修正は、論説部分で (A)→(B), (B)→(A) としただけです。
======== 以下修正して再掲 ========
ちょっと進行中の流れとは違う方向ですが、
私のほうでも別案をまとめてみたので一応書いてみます。
まず問題点の分析です。問題なのは次の点ですね。
\item を使った箇条書きの項目中に数式番号付きの数式を入れたいが、
数式番号を付けるにはディスプレイ数式にするしかなく、
そうすると不用な改行や縦方向の空白が入ってしまう。
望ましい状態は、
数式を置く行の頭に \item による番号がついたうえで同時に末尾に数式番号が付く、
ということになるでしょう。
そのための方策としては、大きく分けて、
(A) 数式環境の中で、式の左側に箇条書き番号をつける
(B) 箇条書きの項目の中で(ディスプレイ形式にせずに)数式番号をつける
のいずれかが考えられます。
(B)は本田さんが示してくれた方法で、
(A)はOlive Oil さんの紹介されたサイトを参考に DION Emily さんがやってみて、現在調整中の方法ですね。
私が思うに、(A)よりも(B)のほうが素直で筋がよいように思います。
というのも、
(A)のほうは、箇条書きという 複数項目を束ねている構造を、
その構造を断ち切って項目ごとに数式に埋め込まねばならないのに対して、
(B)のほうは、数式番号を伴った数式を箇条書きの中にコンパクトに埋め込めばよく、
数式と数式番号が組になっている構造を分断しません。
ただし、(B)の場合には、数式番号を付けられるのが通常ディスプレイ数式に限られているのを、
インライン数式にもつけられるようにする必要があります。
下の例は(B)を実装してみたものです。本田さんの例では数式番号を自前で操作していたのに対して、
数式番号を付ける処理を amsmath の内部マクロを拝借してやってみたものです。
ただし、amsmath はわりと頻繁に内部マクロを変えてしまうので、うまく動くかをバージョンごとに確かめる必要があります。
項目番号と数式番号のそれぞれを \label で参照できるようです。
\documentclass{book}
\usepackage{amsmath}
\makeatletter
%\let\MakeDisplayTag\make@display@tag% 昔の amsmath 用
\def\MakeDisplayTag{\refstepcounter{equation}\tagform@\theequation}% 最近の amsmath 用
\makeatother
\begin{document}
\chapter{Aaa}
\chapter{Bbb}
\chapter{Ccc}
\section{aa}
\begin{equation}
1+1=2
\end{equation}
\section{bb}
\begin{enumerate}
\item \label{i:2}$1+2=3$\hfil\MakeDisplayTag\label{e:2}
\item \label{i:3}$2+3=5$\hfil\MakeDisplayTag\label{e:3}
\end{enumerate}
項目\ref{i:3}(ページ\pageref{i:3})は項目\ref{i:2}(ページ\pageref{i:2})の次の項目で、
式\ref{e:3}(ページ\pageref{e:3})は式\ref{e:2}(ページ\pageref{e:3})より従う。
\end{document}
「2017年 01月 04日(水曜日) 02:45 - 北見 けん の投稿」
について、読み返してみたら致命的な間違いがありました。
方向性として挙げていた(A)と(B)が意図したものと逆になっていて、
そのあとの論説との対応が真逆になっていました。
あれではわけがわかりませんね。申し訳ありません。
間違っていたところを修正したうえで再掲させていただきます。
修正は、論説部分で (A)→(B), (B)→(A) としただけです。
======== 以下修正して再掲 ========
ちょっと進行中の流れとは違う方向ですが、
私のほうでも別案をまとめてみたので一応書いてみます。
まず問題点の分析です。問題なのは次の点ですね。
\item を使った箇条書きの項目中に数式番号付きの数式を入れたいが、
数式番号を付けるにはディスプレイ数式にするしかなく、
そうすると不用な改行や縦方向の空白が入ってしまう。
望ましい状態は、
数式を置く行の頭に \item による番号がついたうえで同時に末尾に数式番号が付く、
ということになるでしょう。
そのための方策としては、大きく分けて、
(A) 数式環境の中で、式の左側に箇条書き番号をつける
(B) 箇条書きの項目の中で(ディスプレイ形式にせずに)数式番号をつける
のいずれかが考えられます。
(B)は本田さんが示してくれた方法で、
(A)はOlive Oil さんの紹介されたサイトを参考に DION Emily さんがやってみて、現在調整中の方法ですね。
私が思うに、(A)よりも(B)のほうが素直で筋がよいように思います。
というのも、
(A)のほうは、箇条書きという 複数項目を束ねている構造を、
その構造を断ち切って項目ごとに数式に埋め込まねばならないのに対して、
(B)のほうは、数式番号を伴った数式を箇条書きの中にコンパクトに埋め込めばよく、
数式と数式番号が組になっている構造を分断しません。
ただし、(B)の場合には、数式番号を付けられるのが通常ディスプレイ数式に限られているのを、
インライン数式にもつけられるようにする必要があります。
下の例は(B)を実装してみたものです。本田さんの例では数式番号を自前で操作していたのに対して、
数式番号を付ける処理を amsmath の内部マクロを拝借してやってみたものです。
ただし、amsmath はわりと頻繁に内部マクロを変えてしまうので、うまく動くかをバージョンごとに確かめる必要があります。
項目番号と数式番号のそれぞれを \label で参照できるようです。
\documentclass{book}
\usepackage{amsmath}
\makeatletter
%\let\MakeDisplayTag\make@display@tag% 昔の amsmath 用
\def\MakeDisplayTag{\refstepcounter{equation}\tagform@\theequation}% 最近の amsmath 用
\makeatother
\begin{document}
\chapter{Aaa}
\chapter{Bbb}
\chapter{Ccc}
\section{aa}
\begin{equation}
1+1=2
\end{equation}
\section{bb}
\begin{enumerate}
\item \label{i:2}$1+2=3$\hfil\MakeDisplayTag\label{e:2}
\item \label{i:3}$2+3=5$\hfil\MakeDisplayTag\label{e:3}
\end{enumerate}
項目\ref{i:3}(ページ\pageref{i:3})は項目\ref{i:2}(ページ\pageref{i:2})の次の項目で、
式\ref{e:3}(ページ\pageref{e:3})は式\ref{e:2}(ページ\pageref{e:3})より従う。
\end{document}
ソースファイルが付いていないので、どう試してみたのかわかりませんが、
おそらくということで書いてみます。
> なにが原因でしょうか?
私の書いた例の通りであれば、数式と数式番号の間は \hfil で隔てられています。
\hfil は無限に伸びられるグル―ですが、もしもひとつの行に複数の \hfil があると、
その \hfil 達が伸び代を均等に分け合うことになります。
試した画像を見ると、数式番号が数式と板面右端とのちょうど真ん中あたりにあるようですから、
<数式> \hfil (数式番号) \hfil 板面右端
のような状況なっているのでしょう。数式番号の後の \hfil は、
段落末尾に自動的に補われる \hskip\parfillskip によるものだと思います。
(\parfillskip は通常 0pt plus 1fil に設定されているので、\hfil と同じ効果があります。)
と、原因はこんなところですが、一連の書き込みを拝見するに、
あまり理解できていないままに行き当たりばったりであれこれいじって混乱している様子ですね。
上の説明もあまりピンと来ないかもしれません。
もしそうなら、今回に限っては、
おそらく \hfil を \hfill にすればご希望通りになるんじゃないかと思います。
\hfill も無限に伸びるグル―ですが、その伸び代は \hfil より高位の無限大になるので、
自動で補われる \parfillskip の影響を受けずに伸び代を独り占めできます。
とはいえ、対症療法的なアドバイスを何度も受けても身につかずに、
また似たような問題でつまづくことを繰り返しているのを見ると、
アドバイスをしても砂に水を撒くような心持ちです。
## これは一般的な話ですが、LaTeX(TeX) の仕組みや使い方を身につけるためだけに
## そんなに時間は割けないというのは確かにその通りだとはいえ、
## 似たような質問をしないで済む程度には、理解を深めていただければなぁと思いました。
## そのための質問などであれば、アドバイスのし甲斐もありますね。
おそらくということで書いてみます。
> なにが原因でしょうか?
私の書いた例の通りであれば、数式と数式番号の間は \hfil で隔てられています。
\hfil は無限に伸びられるグル―ですが、もしもひとつの行に複数の \hfil があると、
その \hfil 達が伸び代を均等に分け合うことになります。
試した画像を見ると、数式番号が数式と板面右端とのちょうど真ん中あたりにあるようですから、
<数式> \hfil (数式番号) \hfil 板面右端
のような状況なっているのでしょう。数式番号の後の \hfil は、
段落末尾に自動的に補われる \hskip\parfillskip によるものだと思います。
(\parfillskip は通常 0pt plus 1fil に設定されているので、\hfil と同じ効果があります。)
と、原因はこんなところですが、一連の書き込みを拝見するに、
あまり理解できていないままに行き当たりばったりであれこれいじって混乱している様子ですね。
上の説明もあまりピンと来ないかもしれません。
もしそうなら、今回に限っては、
おそらく \hfil を \hfill にすればご希望通りになるんじゃないかと思います。
\hfill も無限に伸びるグル―ですが、その伸び代は \hfil より高位の無限大になるので、
自動で補われる \parfillskip の影響を受けずに伸び代を独り占めできます。
とはいえ、対症療法的なアドバイスを何度も受けても身につかずに、
また似たような問題でつまづくことを繰り返しているのを見ると、
アドバイスをしても砂に水を撒くような心持ちです。
## これは一般的な話ですが、LaTeX(TeX) の仕組みや使い方を身につけるためだけに
## そんなに時間は割けないというのは確かにその通りだとはいえ、
## 似たような質問をしないで済む程度には、理解を深めていただければなぁと思いました。
## そのための質問などであれば、アドバイスのし甲斐もありますね。