我想要的是:

我想要的是:

我想要的是:

我想引用文本行:我在文档的某个部分写了一些东西,并想在文档的其他部分引用这些特定的行。

During my experiment I have done this and that (See \evref{experiment:1}), and that was great.

....

First I took the xy and put the stuff into the tube. 
Then I did some other stuff. \evid{experiment:1}
Also I did crazy things.

我希望所有实际的线条标签都放在边距中(已经解决了这个问题)并且我希望它们是数字。

我已经做了:

我已经对代码有了相当的了解(我只显示关键部分):

\newcounter{evidcount}    
\newcommand{\evref}[1]{\hyperref[evidence:#1]{#1}}
\newcommand{\evid}[1][]{\addtocounter{evidcount}{1}%
    \marginnote{\RaggedLeft\phantomsection\label{evidence:\theevidcount}\evidcirlce{\theevidcount}}

\RaggedLeft来自包裹ragged2e

可以看出,用于参考的文本是一个运行计数器。在文档正文中,我使用这些命令如下:

During my experiment I have done this and that (See \evref{2}), and that was great.

....

First I took the xy and put the stuff into the tube. \evid
Then I did some other stuff. \evid
Also I did crazy things.

为什么这还不是我想要的:

我希望未来版本也能这样。但是,当前版本要求我知道我想要引用的特定行的运行计数器 - 如果添加了新引用,这将是一个问题。然后我必须更改所有引用。相反,我希望为引用和引用者添加一个标签。不过,显示的文本应该是运行计数器 - 就像我的第一个灰色框中看到的那样。

我该怎么做呢?

我也不想要的是:

我不想带着号码全部行,只对实际引用的行进行编号。因此,我不希望所有行都连续编号,而只希望引用的行连续编号。

此外,我不仅想要数字,还想要花哨的圆圈。为了保持可读性,上面的代码中没有这个,但我实际上使用了命令

\newcommand{\evidcirlce}[1]{
\raisebox{1pt}{%
\begin{tikzpicture}[baseline=(C.base)]%%
\node[draw,circle,inner sep=0.5pt,fill=black](C){\color{white}\scriptsize\bfseries#1};% 
\end{tikzpicture}}}

而不是简单的数字。

PS:有些人可能会说这并不好看(我写这个只是为了以防万一),那么我不得不说:

  1. 它的味道,我们无法争论味道。
  2. “漂亮”与这个问题无关。
  3. 将来我可能也会改变它,所以争论没有必要。

答案1

顺便说一句,我不知道包\Raggedleft来自哪里。这就是为什么完整的 MWE 比片段更好的原因。

\documentclass{article}
\usepackage{marginnote}
\usepackage{tikz}
\usepackage{hyperref}

\newcommand{\evidcirlce}[1]{
\raisebox{1pt}{%
\begin{tikzpicture}[baseline=(C.base)]%%
\node[draw,circle,inner sep=0.5pt,fill=black](C){\color{white}\scriptsize\bfseries#1};% 
\end{tikzpicture}}}

\newcounter{evidcount}    
\newcommand{\evid}[1]{\marginnote{\refstepcounter{evidcount}\label{#1}%
\evidcirlce{\theevidcount}}}

\begin{document}
During my experiment I have done this and that (See \ref{experiment}), and that was great.
\vfil
  First I took the xy and put the stuff into the tube.
  Then I did some other stuff. \evid{experiment}
  Also I did crazy things.

\end{document}

编辑:最终命令(由 OP 使用)

\usepackage{ragged2e} % Providing \RaggedRight
\newcounter{evidcount}

\newcommand{\evref}[2][]{\ifthenelse{\equal{#1}{}}{{\footnotesize[\ref{#2}]}}{{\footnotesize[\ref{#1}\,-\,\ref{#2}]}}}

\newcommand{\evid}[1]{%
    \marginnote{\RaggedLeft\refstepcounter{evidcount}\label{#1}%
    {\footnotesize[\theevidcount]}}%
}

相关内容