On Wed, Aug 11, 2021 at 10:56 AM John Kitchin <jkitc...@andrew.cmu.edu> wrote:
> This is a bad idea to me. It is only a fuzzy link (what you call a typed > internal link) if no one has defined it as an external link. As soon as that > happens, then you will lose the export behavior defined for fuzzy links, and > get the behavior defined by the export function. The syntax for these is the > same (I guess a fuzzy link must be wrapped in [[ ]], but an external link may > also be wrapped that way). I don't see a way to differentiate these. I guess this is a key question then; sounds like maybe internal links are too loosely defined? BTW, I was using the language from the org-mode manual to avoid confusion. https://orgmode.org/manual/Internal-Links.html >> 2. extend citations, per your idea here, which to me means the >> org-cite code would need to be revised and expanded to handle both >> cross-references and citations, but do so distinctly. > > I don't think so. You only have to extend them where you want to have the > capability. org-cite can stay a citation only body of code, and if you want > cross-references too you just use my processors, or write one that does what > you want. Except now, org-cite and all the extant processors assume a citation-reference key corresponds to a bibliographic (mostly either bibtex or csl json) entry, which identifies an external source. Surely that has implications for compatibility if adding cross-referencing, unless existing code is changed to account for that? With your suggestion, for example, I presume org-cite-insert would be used to insert and edit cross-references, rather than org-insert-link or org-insert-cross-reference? Aside from whether that makes sense from a UX perspective, those references wouldn't be found unless a UI explicitly accounted for them. And an activate processor that wasn't updated would treat them as bad citations. Maybe the changes would be small; IDK. Hopefully Nicolas can weigh in on this. > You don't have to. Your processors should fail gracefully in any case, > because you just cannot control what people will do with the styles. The issue for me is less what you are proposing to do with styles (which in my case I construct from org-cite-supported styles), than with citation-reference. Per above, a citation-reference is just not a cross-reference. IDK; perhaps if this path makes sense in the end, it might be cleaner to add a citation-cross-reference element, or maybe even better to just have a parallel cross-reference object that borrows some of the design of org-cite? > The biggest issue with 1 is I don't think it is possible to differentiate > internal typed links from external links because they use the same syntax. It > would be very difficult to support and troubleshoot a scenario where the same > syntax shows different behavior depending on whether an external link is > defined or not. Finally, it is so close to what org-ref already does, I think > it is too tricky to differentiate [[ref:label]] from [[ref/:label]], etc. > > Maybe these links would look different enough (as external links) that it > would be really clear you were not using org-ref. > > ref/:@label > ref/eq:@label > ref/page:@label > ref/name:@label > ref/c:@label > ref/C:@label > > However, this doesn't support using prefix/suffix text, which is one of the > main reasons the cite syntax came to be. OK. That would be another requirement that tips the balance to citation, or something very similar. Bruce