[NTG-context] Cross references to column numbers

Oliver von Criegern oliver.v.criegern at badw-muenchen.de
Tue Nov 12 13:02:35 CET 2019


Am 10.09.19 um 13:16 schrieb Hans Hagen:
> On 9/9/2019 10:05 PM, Henri Menke wrote:
>> Bump
>>
>> On 9/3/19 4:46 AM, Oliver von Criegern wrote:
>>> Dear list members,
>>>
>>> is there any way to get a cross reference to a column in a two 
>>> column layout?
>
> yes and no:
>
> no : there is not something buil tin
> yes: one can write some hack in a few lines
>
> but instead of posting such a hack (which then will a live of its own) 
> i'll add a feature:
>
> \pagereference[column:#1]
>
> \doifelsereferencefound{column:#1}{\number\referencecolumnnumber}{}
>
> in the next beta,
>
> Hans

Thanks for implementing this, but I am afraid it does not work properly, 
at least not if there are several targets following one after another.

Consider this example:


\setupcolumns[
     n=2,
]
\setuplinenumbering[
     step=5,
     method=page,
]

\def\Lab#1{%
\pagereference[#1]%
\pagereference[column:#1]%
\someline[#1]%
}

\def\Ref#1{
page \at[#1],
column \doifelsereferencefound{column:#1}{\number\referencecolumnnumber}{},
line \inlinerange[#1].
}

\starttext
\startcolumns
\startlinenumbering

REFERENCES:\par
A: \Ref{A}\par
B: \Ref{B}\par
C: \Ref{C}\par
D: \Ref{D}\par
E: \Ref{E}\par
F: \Ref{F}\par
\input lorem
TARGETS:
\Lab{A} A,
\Lab{B} B,
\Lab{C} C.
\input lorem
TARGETS:
\Lab{D} D,
\Lab{E} E,
\Lab{F} F.
\input lorem

\stoplinenumbering
\stopcolumns
\stoptext

As you will see, targets A, B and C are all in the first column, and 
targets D, E and F are all in the second column. But the references read 
as follows:

A: page 1, column 1, line 29.
B: page 1, column 1, line 29.
C: page 1, column 2, line 29.
D: page 1, column 2, line 14.
E: page 1, column 3, line 14.
F: page 1, column 3, line 14.


Best regards,
Oliver


>
>>> At least, I would need to get some value that tells me whether the 
>>> target is in the left or in the right column. How to achieve this?
>>>
>>> This is the more simplified version of the my previous question 
>>> cited below.
>>>
>>> Best regards,
>>> Oliver.
>>>
>>>
>>> Am 12.08.19 um 15:26 schrieb Oliver von Criegern:
>>>> Dear list members,
>>>>
>>>> how can I create cross references to column numbers?
>>>>
>>>> I have a two column layout with column numbers in the header 
>>>> instead of page numbers (actually, these column numbers are 
>>>> calculated from the page numbers). Now I want to create a cross 
>>>> reference that returns the column number of the target. How can I 
>>>> achieve this?
>>>>
>>>> Of course, I can get the page number with \pagereference (for the 
>>>> target) and \at (for the reference), but for calculating the column 
>>>> number (according to what I did in the header), I would also need 
>>>> to know whether the target is in the left or in the right column, 
>>>> and I can't see how I can get this information.
>>>>
>>>> For an example, see the question posted by me at stackexchange:
>>>> https://tex.stackexchange.com/questions/502944/context-cross-references-to-column-numbers 
>>>>
>>>>
>>>> Besides, I am wondering, regarding the generally very regular and 
>>>> consistent naming of commands in ConTeXt, why this is not so in the 
>>>> case of references. For example, to refer to a page, I need 
>>>> \pagereference (for the target) and \at (for the reference); to 
>>>> refer to a line, I need \someline (for the target) and \inline (for 
>>>> the reference), but only if I want it to automatically add the word 
>>>> "line" or something else before the number, otherwise I have to use 
>>>> \inlinerange. It took me some time to find that out. Wouldn't it be 
>>>> easier to have just one command for the target and another one for 
>>>> the reference, and everything else, as counters and headers to be 
>>>> returned, text to be added etc. to be configured by options?
> Because all these \in \at \about ... give back different things (a 
> title, a number, a range, a ...) and packaging all that in one macro 
> doens't make it cleaner so soon users will then wrap complex calls in 
> a macro of their own (which then can clash with some existing name).
>
> Also, the ref mechanism evolved over decades and we're not going to 
> drop compatibility.
>
> Hans
>
> -----------------------------------------------------------------
>                                           Hans Hagen | PRAGMA ADE
>               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
>        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
> -----------------------------------------------------------------
> ___________________________________________________________________________________ 
>
> If your question is of interest to others as well, please add an entry 
> to the Wiki!
>
> maillist : ntg-context at ntg.nl / 
> http://www.ntg.nl/mailman/listinfo/ntg-context
> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
> archive  : https://bitbucket.org/phg/context-mirror/commits/
> wiki     : http://contextgarden.net
> ___________________________________________________________________________________ 
>

-- 
Dr. Oliver von Criegern
Referat für IT und Digital Humanities
Bayerische Akademie der Wissenschaften
Alfons-Goppel-Str. 11
80539 München
Tel.: 089-23031-1310



More information about the ntg-context mailing list