2015-12-10 20 views
0

我使用enumitem枚舉我的變量列表。乳膠 - 如何引用該項目的文本中enumitem

我有一個變量列表,如:

\begin{enumerate} 
\item My First Cool Variable \label{var:myvar1} 
\item My Second not so Cool Variable \label{var:myvar2} 
\item My Third so so \label{var:myvar3} 
\end{enumerate} 

當I交叉引用這些項目中的一個,我得到的名單關鍵。例如,

Let us reference \ref{var:myvar2} and then my other variable \ref{var:myvar3} 

給出:

Let us reference 2 and then my other variable 3 

我想不僅是爲了能夠獲得名單的關鍵,也是整個項目的文本,所以輸出可能是這樣的:

Let us reference My Second not so Cool Variable and then my other variable My Third so so 

的目標是能寫的變量名只有一次,如果有的話變量名被修改,以更具體的東西不改變無處不在。

任何想法?我已經看到了進入enumitem-ZREF,但我無法找到我一直在尋找:/

+0

按照[參考明文]中列出的指令(http://tex.stackexchange.com/q/54854/5764)。 – Werner

+0

3年前我看到了答案。我有點希望他們現在想出了一個更清潔的方式。好吧... – elvitaluz

回答

0

Macro to capture until end-of-line as argument使用一些想法,你可以捕捉到以下內容的\item

enter image description here

\documentclass{article} 

\usepackage{environ} 

% https://tex.stackexchange.com/q/127005/5764 
\makeatletter 
\NewEnviron{wordenumerate}{% 
    \begin{enumerate} 
    \let\olditem\item 
    \def\item##1\item{\dosomething{##1}}% 
    \expandafter\@empty\BODY\item 
    \end{enumerate}% 
} 

\let\oldlabel\label 
\newcommand{\dosomething}[1]{% 
    \def\[email protected]{#1}% 
    \ifx\[email protected]\[email protected] 
    \end{enumerate} 
    \expandafter\[email protected] % to end the recursion 
    \else 
    \def\label##1{\def\@textlabel{##1}\let\label\relax}% Capture \label 
    \olditem #1 
    \ifx\label\relax 
     \def\label##1{\@bsphack\@esphack}% 
     \edef\@currentlabel{#1}% % what to do with #1 
     \expandafter\oldlabel\expandafter{\@textlabel}% 
    \fi 
    \expandafter\item   % to continue the recursion 
    \fi} 

\edef\[email protected]{\noexpand\end{enumerate}\noexpand\[email protected]\space} 
\makeatother 

\begin{document} 

\begin{wordenumerate} 
    \item First 
    \item Second\label{second} 
    \item \label{third}Last 
\end{wordenumerate} 

Item~2 is \ref{second}. Item~3 is \ref{third}. 

\end{document} 

建議使用新環境wordenumerate,因爲完全不同的\label - \ref正在發揮作用。我不會建議築巢(也使用environ因爲)別的這樣的環境。