diff options
Diffstat (limited to 'macros/luatex/latex/scikgtex/scikgtex.lua')
-rw-r--r-- | macros/luatex/latex/scikgtex/scikgtex.lua | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/macros/luatex/latex/scikgtex/scikgtex.lua b/macros/luatex/latex/scikgtex/scikgtex.lua index 94bd0c1f40..8703d66666 100644 --- a/macros/luatex/latex/scikgtex/scikgtex.lua +++ b/macros/luatex/latex/scikgtex/scikgtex.lua @@ -21,8 +21,7 @@ XMP.lines = {} XMP.namespaces = {} XMP.property_ns = {} XMP.XMP_TOP = [[<x:xmpmeta xmlns:x="adobe:ns:meta/">]] -XMP.XMP_BOTTOM = [[</rdf:RDF> -</x:xmpmeta>]] +XMP.XMP_BOTTOM = [[</x:xmpmeta>]] XMP.PACKET_END = [[<?xpacket end="r"?>]] local UUID = {} @@ -379,11 +378,15 @@ function SciKGTeX:warn_unused_command() end end -function SciKGTeX:print_entity(uri, label) - if label ~= "" then - tex.print(string.format('\\href{%s}{%s}',uri , label)) - else +function SciKGTeX:print_entity(uri, label, hyperrefloaded) + if label ~= "" and hyperrefloaded then + tex.print(string.format('\\href{%s}{%s}', uri , label)) + elseif label ~= "" then + tex.print(label) + elseif hyperrefloaded then tex.print(string.format('\\url{%s}',uri)) + else + tex.print(uri) end end @@ -595,7 +598,13 @@ function XMP:generate_xmp_string(lb_char) end for i, cb_id in pairs(sorted_contributions) do contribution = self.paper.contributions[cb_id] - self:add_line(' <orkg:hasResearchContribution>') + if i==1 then + if #sorted_contributions > 1 then + self:add_line(' <orkg:hasResearchContribution rdf:parseType="Collection">') + else + self:add_line(' <orkg:hasResearchContribution>') + end + end self:add_line( ' <orkg:ResearchContribution rdf:about="https://www.orkg.org/orkg/paper/%s">', self.paper.id .. "/" ..contribution.id @@ -611,10 +620,13 @@ function XMP:generate_xmp_string(lb_char) ) end self:add_line(' </orkg:ResearchContribution>') - self:add_line(' </orkg:hasResearchContribution>') + if i == #sorted_contributions then + self:add_line(' </orkg:hasResearchContribution>') + end end self:add_line(' </rdf:Description>') end + self:add_line('</rdf:RDF>') self:add_line(self.XMP_BOTTOM) self:add_line(self.PACKET_END) @@ -622,11 +634,11 @@ function XMP:generate_xmp_string(lb_char) end -function XMP:attach_metadata_pdfstream() +function XMP:attach_metadata_pdfstream(metadata_type) local xmp_string = self:generate_xmp_string() local new_pdf = pdf.obj { type = 'stream', - attr = '/Type/Metadata /Subtype/XML', + attr = '/Type /'..metadata_type..' /Subtype /XML', immediate = true, compresslevel = 0, string = xmp_string, @@ -654,12 +666,14 @@ end, 'at_end') -- Writing metadata packets luatexbase.add_to_callback('finish_pdffile', function() if XMP.paper then - local metadata_obj = XMP:attach_metadata_pdfstream() + if CONFORM_TO_PDFA then + catalog_key='SciKGMetadata' + else + catalog_key='Metadata' + end + local metadata_obj = XMP:attach_metadata_pdfstream(catalog_key) local catalog = pdf.getcatalog() or '' - pdf.setcatalog(catalog..string.format('/Metadata %s 0 R', metadata_obj)) - --if SciKGTeX.PRODUCE_XMP_FILE then - -- XMP:dump_metadata() - --end + pdf.setcatalog(catalog..string.format('/%s %s 0 R', catalog_key, metadata_obj)) end end, 'finish') |