![我想要的是:](https://linux22.com/image/319852/%E6%88%91%E6%83%B3%E8%A6%81%E7%9A%84%E6%98%AF%EF%BC%9A.png)
我想要的是:
我想引用文本行:我在文档的某个部分写了一些东西,并想在文档的其他部分引用这些特定的行。
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
顺便说一句,我不知道包\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]}}%
}