\pageref,但对于列

\pageref,但对于列

我需要指向页面上的标签,但由于我的文本分为两列,因此我还想包含列(1 或 2)。有没有办法找出标签位于哪一列?

\documentclass{icgg}
\begin{document}
\section{First chapter}
\label{explanation}
Some text explaining some things.
...
... see page \pageref{explanation} for ...

\end{document}    

我想使用类似的东西:

see page \pageref{explanation}, column \columnref{explanation} for ...

可能的?

ps.该文档类是别人提供的,定义了双列格式。

答案1

这是一种尝试。

icgg.cls加载hyperref。我们创建一个新命令,该命令在每次发出命令\collabel时执行。\label

例如,如果您在文档的同一位置创建了\label{foo}一个名为 的新标签,如果您想知道所引用的列,则必须使用命令。col:foo\label{foo}\columnref{col:foo}

这是一个例子(在您的文档中替换\documentclass[twocolumn]{article} \usepackage{hyperref}\documentclass{icgg}

\documentclass[twocolumn]{article}
\usepackage{hyperref}
\usepackage{lipsum} %only for the example

\makeatletter
\AtBeginDocument{%
\let\oldlabel\label
\newcommand*\collabel[1]{%
  \begingroup
    \protected@write\@auxout{}{%
      \string\newlabel{col:#1}{%
        {\if@firstcolumn 1\else 2\fi}%
        {}%
        {}%
        {}%
        {}%
      }%
    }%
  \endgroup
}
\renewcommand*\label[1]{%
  \collabel{#1}\oldlabel{#1}
}
\def\columnref#1{%
  \HyRef@StarSetRef{#1}\@firstoffive
}
}
\makeatother

\begin{document}

\section{First section}\label{sec:first}
\lipsum[1-4]

\section{Second section}\label{sec:second}
\lipsum[1-3]\label{sec:third}

Section \ref{sec:first} starts at page \pageref{sec:first} in column \columnref{col:sec:first}, 
while section \ref{sec:second} starts at page \pageref{sec:second} in column \columnref{col:sec:second}

\end{document} 

输出:

enter image description here

放大相关部分:

enter image description here

请注意,该命令\if@firstcolumn有时无法检测正确的列,因此您可能会有一些错误的引用。

相关内容