質問ですが,前置きが長いです.
動機
論文を書いていて,定理や補題の中で使用するenumerate環境を引用するときに,”定理 3.1 (i) より” とか”補題 2.2 (iii) により”といった言い回しが頻繁にあって,定理のラベルとリストのラベルを管理するのが大変になってきました.
リストのラベルだけを引用したら,それが属する定理環境の情報は自動で補完するというものぐさなことをやりたくなりました.
theoremやlemmaの環境を
\newtheorem{theo}{定理}
\newtheorem{lemm}{補題}
と定めたとしたときに
\newcommand{\setenvtheo}{\renewcommand{\theenumi}{定理~\thetheo~(\roman{enumi})}}
\newcommand{\setenvlemm}{\renewcommand{\theenumi}{補題~\thelemm~(\roman{enumi})}}
\newcommand{\setenvnormal}{\renewcommand{\theenumi}{(\roman{enumi})}
と環境毎にenumiに関するラベルのフォーマットを定義して,
\begin{theo}
\setenvtheo
本文記述
\end{theo}
\setenvnormal
というように毎回ラベルフォーマットを変更するということを考えたのですが,環境毎に命令を作るのは定義が長くなるので,\setenvという命令と\resetenvという命令だけを作成し,\setenvで,\setenvtheoや\setenvlemmのような効果を,\resetenvだけで\setenvnormalのような効果を得るように改造しようと考えました.つまりどの環境でenumerateを使っているのかを,そのときのtheoremカウンタとtheorem実体名("定理"とか"補題"の文字列のこと)を読みとることで自動補完にできないかと考えました.カウンタに関してはtexコードの解説が豊富にあったのでなんとかなりそうなのですが.
質問
\c@theo, \c@lemm などでカウンタの値は取り出せると思うのですが,theoの印字される名前"定理"やlemmの印字される名前"補題"はどういう変数に記憶されているのでしょうか.(\begin{theo}\end{theo} で"定理"という文字列が定理の最初に印字されているので必ずどこかに記憶されているはずだと思ったのですが...)
質問
description環境で \item[hogehoge] としたときに文字列hogehogeを取得するうまい方法はありませんか.こちらの方は文字列hogehogeがどこかでまた使われるというわけではなさそうなので,description環境を変更するかmylist環境で文字列を何かの変数に突っ込む必要があるのかもしれません...
どうぞよろしくお願いいたします.