-
-
Save QWxleA/c7f08e8feded332736a6b376045d0fe4 to your computer and use it in GitHub Desktop.
| --- | |
| title: "{{title | safe}}" | |
| alias: {% if ShortTitle %}"{{shortTitle | safe}}"{% endif %} | |
| Year: {{date | format("YYYY")}} | |
| tags: type/source | |
| Authors: {{authors}}{{directors}} | |
| --- | |
| {#- These can be changed -#} | |
| {#- This is the order in which the annotations are ordered -#} | |
| {%- | |
| set categoryHeading = { | |
| "orange": "Main ideas and conclusions", | |
| "yellow": "Ordinary notes", | |
| "blue": "Quote / quotable", | |
| "green": "Important To Me", | |
| "red": "Disagree With Author", | |
| "purple": "Interesting side-point", | |
| "magenta": "Methodology", | |
| "grey": "Definitions and concepts" | |
| } | |
| -%} | |
| {%- | |
| set categoryIcon = { | |
| "orange": "💡", | |
| "yellow": "📚", | |
| "blue": "💬", | |
| "green": "💚", | |
| "red": "⛔", | |
| "purple": "💭", | |
| "magenta": "⚙️", | |
| "grey": "🧩" | |
| } | |
| -%} | |
| {#- ---------- Don't make any changes under here --------- #} | |
| {%- macro minEditDate() -%} | |
| {%- set tempDate = "" -%} | |
| {%- for a in annotations -%} | |
| {%- set testDate = a.date | format("YYYY-MM-DD#HH:mm:ss") -%} | |
| {%- if testDate < tempDate or tempDate == ""-%} | |
| {%- set tempDate = testDate -%} | |
| {%- endif -%} | |
| {%- endfor -%} | |
| {%- for a in notes -%} | |
| {%- set testDate = a.dateModified | format("YYYY-MM-DD#HH:mm:ss") -%} | |
| {%- if testDate < tempDate or tempDate == ""-%} | |
| {%- set tempDate = testDate -%} | |
| {%- endif -%} | |
| {%- endfor -%} | |
| {{tempDate }} | |
| {%- endmacro -%} | |
| {# infer latest note date #} | |
| {%- macro maxEditDate() -%} | |
| {%- set tempDate = "" -%} | |
| {%- for n in annotations -%} | |
| {%- set testDate = n.date | format("YYYY-MM-DD#HH:mm:ss") -%} | |
| {%- if testDate > tempDate or tempDate == ""-%} | |
| {%- set tempDate = testDate -%} | |
| {%- endif -%} | |
| {%- endfor -%} | |
| {%- for n in notes -%} | |
| {%- set testDate = n.dateModified | format("YYYY-MM-DD#HH:mm:ss") -%} | |
| {%- if testDate > tempDate or tempDate == ""-%} | |
| {%- set tempDate = testDate -%} | |
| {%- endif -%} | |
| {%- endfor -%} | |
| {{tempDate}} | |
| {%- endmacro -%} | |
| {#- handle | characters in zotero strings used in MD -#} | |
| {% macro formatCell(cellText) -%} | |
| {{ cellText | replace("|","❕")}} | |
| {%- endmacro %} | |
| {#- TAGS: handle space characters in zotero tags -#} | |
| {%- set space = joiner(' ') -%} | |
| {%- macro printTags(rawTags) -%} | |
| {%- if rawTags.length > 0 -%} | |
| {%- for tag in rawTags -%} | |
| #{{ tag.tag | lower | replace(" ","_") }} {{ space() }} | |
| {%- endfor -%} | |
| {%- endif -%} | |
| {%- endmacro %} | |
| {%- | |
| set zoteroColors = { | |
| "#ff6666": "red", | |
| "#f19837": "orange", | |
| "#5fb236": "green", | |
| "#ffd400": "yellow", | |
| "#2ea8e5": "blue", | |
| "#a28ae5": "purple", | |
| "#e56eee": "magenta", | |
| "#aaaaaa": "grey" | |
| } | |
| %} | |
| # {{title}} | |
| > [!info]- Info - [**Zotero**]({{desktopURI}}) {% if DOI %}| [**DOI**](https://doi.org/{{DOI}}){% endif %} | Local {% for attachment in attachments | filterby("path", "endswith", ".pdf") %}[**PDF**](file:///{{attachment.path | replace(" ", "%20")}}){%- endfor %} | |
| {% if ShortTitle %}> Short title: {{shortTitle | safe}}{% endif -%} | |
| > Authors: {% for c in creators %}[[{{c.firstName}} {{c.lastName}}]] {% endfor %} | |
| {% if publicationTitle %}> Publication: {{publicationTitle | safe}}{% endif -%} | |
| > Type: {{itemType}} | |
| > Year: {{date | format("YYYY")}} | |
| > Zotero links: [Item]({{select}}) {% if pdfZoteroLink %}PDF: {{pdfZoteroLink}}{% endif %} | |
| > Web links: {% if itemType == "webpage" %}[{{title}}]({{url}}){%else%}[Item]({{uri}}){%endif%} {% if pdfLink %}PDF: {{pdfLink}}{% endif %} | |
| > {{printTags(note.tags)}} | |
| > | |
| > **History** | |
| > Date item added to Zotero: [[{{dateAdded | format("YYYY-MM-DD")}}]] | |
| > First date annotations or notes modified: [[{{minEditDate() | truncate(10,true,"")}}]] | |
| > Last date annotations or notes modified: [[{{maxEditDate()| truncate(10,true,"")}}]] | |
| {%- if relations.length > 0 %} | |
| {{ "" }} | |
| > [!abstract] Related Zotero items ({{ relations.length}}): | |
| > | |
| > | title | proxy note | desktopURI | | |
| > | --- | --- | --- | | |
| {%- for r in relations %} | |
| > | {{formatCell(r.title)}} | [[@{{r.citekey}}]] | [Zotero Link]({{r.desktopURI}}) | {% if rel.DOI %}> DOI: {{rel.DOI}}{% endif %} | | |
| {%- endfor -%} | |
| {{ "" }} | |
| {%- endif %} | |
| {% if notes.length > 0 %} | |
| > [!note] Notes ({{notes.length}}) | |
| {{ "" }} | |
| {%- for note in notes -%} | |
| {#- Clean up note, change heading level, just in case -#} | |
| > {{ note.note | replace ("# ","### ") | replace(r/\n/g, '\n> ')}} | |
| > {{printTags(note.tags)}} | |
| > <small>📝️ (modified: {{ note.dateModified | format("YYYY-MM-DD") }}) [link](zotero://select/library/items/{{note.key}}) - [web]({{note.uri}})</small> | |
| > {{ "" }} | |
| > --- | |
| {% endfor %} | |
| {% endif -%} | |
| > [!abstract]- | |
| > {% if abstractNote %} | |
| > {{abstractNote|replace("\n"," ")}} | |
| > {% endif %} | |
| --- | |
| ## Persistant notes | |
| {% persist "notes" %} | |
| {% endpersist %} | |
| --- | |
| # Annotations | |
| <small>(Exported: [[{{exportDate | format("YYYY-MM-DD")}}]]</small>) | |
| {% for color, colorCategorie in zoteroColors %} | |
| {%- for entry in annotations | filterby ("color", "startswith", color) -%} | |
| {%- if entry.id %} | |
| {%- if entry and loop.first %}## {{categoryIcon[zoteroColors[entry.color]]}} {{categoryHeading[zoteroColors[color]]}}{% endif %} | |
| {% set annoID = ["id-", entry.id] | join | lower %} | |
| {%- persist annoID %} | |
| {%- if entry.date > lastExportDate %} | |
| {%- if entry.annotatedText %}{{categoryIcon[zoteroColors[entry.color]]}} {{ entry.annotatedText | replace(r/\n/g, ' ') }}{% endif %} | |
| {%- if entry.imageBaseName %}![[Assets/@{{citekey}}/{{entry.imageBaseName}}|300]]<br>{% endif %} | |
| {%- if entry.comment %}📝️ {{entry.comment}}{% endif %} | |
| {{printTags(entry.tags)}}<small>([{{title | truncate(50)}} p.{{entry.pageLabel}}](zotero://open-pdf/library/items/{{entry.attachment.itemKey}}?page={{entry.pageLabel}}&annotation={{entry.id}})) edited:[[{{ entry.date | format("YYYY-MM-DD")}}]]</small> | |
| {%- endif %} | |
| {% endpersist %} {# do not add "-", entry-id needs newline #} | |
| ^{{ entry.id | lower }} | |
| {% endif -%} {# /if entry.id -#} | |
| {% endfor -%} | |
| {% endfor -%} |
@lsolesen replace newlines!
{{ entry.annotatedText | replace(r/\n/g, ' ') }}
if using above template as-is, edit on line 156
Updated gist with the help of @timalexdb 's snippet (dankjewel), try it out and see if this is to your liking .
Another edit, I broke page-links, repaired
Thanks. But the issue is not the annotated text but the note.note that gets rendered without the > when there is multilines. And there it does not make sense just to remove the newlines because then it gets unreadable. lør. 29. jul. 2023 12.08 skrev Alex @.***>:
Could you post a broken annotation, so I can see what it does? i updated the template with something that might work: This is a page with an attached note with multiple paragraphs in it, rendered correctly, is that what you meant (don't look at the broken annotation, the pdf is a broken scan or something)? https://qwxlea.org/Zotero/%40clark.chalmers_1998
@lsolesen ah, responded too fast. I'm not using the same template and now don't have the time to check thoroughly, but:
{{ entry.comment | replace(r/\n/g, '\n> ')
(line 165)
Basically callout syntax requires each line, including empty, to start with '> '. Did a quick try-out with my own template and this should work, as long as you don't have newline-separated enumerations/lists or are using HTML tags to style your comments further.
If I find time in the coming days I can look into this further. More a patch than a solution but might help you on your way.
That would be great!
@timalexdb Thanks. It works when adding your suggested regex.
https://gist.github.com/QWxleA/c7f08e8feded332736a6b376045d0fe4#file-zotero-template-L163 --> Maybe it is possible to use the settings for assets from the plugin here?
For some reason I cannot get this line to render correctly - https://gist.github.com/QWxleA/c7f08e8feded332736a6b376045d0fe4#file-zotero-template-L166 - It does not render as a link.
I can see that if I remove <small> it starts rendering as a link.
Another thing is - that if I import the note twice everything under the annotations-headline gets deleted - while in the notes-section everything stays there. However, nothing is updated with new comments. I do not know whether this has something to do with the Zotero integration, Obsidian or the template.
I can see that if I remove
<small>it starts rendering as a link.
Yeah you can't use HTML tags with Markdown linking. You could try HTML linking to combine
@timalexdb It is just a little strange, as this renders correctly under the notes section:
<small>📝️ (modified: 2023-07-30) [link](zotero://select/library/items/59CJ73IB) - [web](http://zotero.org/users/4490325/items/59CJ73IB)</small>
But this under the Annotations-section does not?
<small>([Dit personlige ledelsesrum p.25](zotero://open-pdf/library/items/5KM2TWP6?page=25&annotation=N6W2LJWF)) edited:[[2023-07-30]]</small>
@lsolesen ah, might've been a bit assumptuous of me. I only got the two working when using the HTML ref style. You could try that as an alternative, or settle for regular-sized notes. The replace newline thing for me works when not using the tag (along with bulleted/numbered lists), but if you'd really like to keep it you could try the following:
{{ entry.comment | replace(r/\n/g, '</small>\n> <small>') }}
I assume this would still break numbered lists, though. And make sure the closing tag is present for your annotation already: this snippet only handles the tags surrounding a newline.
@timalexdb Very strange. The link works when in the
>[!note]
> ...
But not outside that. I will just drop the that it shows with small text - it is not too important to me.
Another thing is - that if I import a reference twice everything under the annotations-headline gets deleted - while in the notes-section everything stays there.
However, nothing is updated with new comments made in Zotero. I do not know whether this has something to do with the Zotero integration, Obsidian or the template.
@lsolesen I think that's to do with how you persist annotations in your template. So it has to do with (your implementation of) the ZI plugin
Updated with some minor edits, nothing should break. If an annotation has been imported once, it will not be imported again. The easiest way to fix things is removing and reimporting from Zotero.
Links should work, if not let me know (they work here).
@pclavell Added a Readme, let me know if it's unclear. You should not remove those markers, they are needed for persistence. They should be invisible in reading-mode
Hello! I've been using the template for a while and It's been generally nice! However, I needed to tinker with some of the settings yet I still have some issues. I'd like to ask for some help.
- The new property front matter gets broken from this. I tried removing some of the hyphens which may have been causing the issue yet the problem persisted.
- The area highlights break unless specified in the annotation side. I think there should be a part in the readme that talks about how it could be mitigated by fixing the path in the annotations part.
- The multi-line notes break unless you add the suggested regex by @timalexdb
- Changing color hierarchy does not work unless you change them at the part where hexcodes are.
Hello! I've been using the template for a while and It's been generally nice! However, I needed to tinker with some of the settings yet I still have some issues. I'd like to ask for some help.
1. The new property front matter gets broken from this. I tried removing some of the hyphens which may have been causing the issue yet the problem persisted. 2. The area highlights break unless specified in the annotation side. I think there should be a part in the readme that talks about how it could be mitigated by fixing the path in the annotations part. 3. The multi-line notes break unless you add the suggested regex by @timalexdb 4. Changing color hierarchy does not work unless you change them at the part where hexcodes are.
For 1, could you post an example of broken YAML and explain how it breaks (e.g. invalid YAML or not displaying in Obs properties format)?
@lsolesen ah, responded too fast. I'm not using the same template and now don't have the time to check thoroughly, but:
{{ entry.comment | replace(r/\n/g, '\n> ')(line 165)Basically callout syntax requires each line, including empty, to start with '> '. Did a quick try-out with my own template and this should work, as long as you don't have newline-separated enumerations/lists or are using HTML tags to style your comments further.
If I find time in the coming days I can look into this further. More a patch than a solution but might help you on your way.
I am doing something wrong. Where should this be added/what should this replace? Thanks, @timalexdb!
It might be too late, but for those who still wonder how to fix that, (@ceciliechrstnsn), replace the code on the line 174.
Before:
{%- if entry.comment %}
>[!note]
>{{entry.comment}}
{% endif -%}
After:
{%- if entry.comment %}
>[!note]
>{{entry.comment | replace(r/\n/g, '\n> ') }}
{% endif -%}
@QWxleA thanks for the template! Really enjoy using it!
Hi everyone,
I used external PDF editors on my iPad to markup my pdf's. Zotero has no problem with the interpretation of this annotations, as they show up in the app, but they don't import with this template.
Since different editors use different colors, would it be possible to insert a "default", or "other" color category which imports everything that is not annotated in one the current 8 colors?
I'm not a programmer of any kind and have been trying with ChatGPT, but it's not working.



This is a very nice template. However for multiline notes it breaks, and I have not been able to figure out how to solve it.
Were you able to solve this somehow @QWxleA?