Zotero

一、常规设置

1、Zotero与Onedrive联动

mklink /j “C:\Users\Lenovo\Zotero\storage” “F:\OneDrive\Zotero\storage”

2、常规中自定义文件名格式:

zotero 命名格式

{{ year suffix="_"}}
{{ title truncate="100" }}
({{journalAbbreviation }})
{{if language == "zh"}}
_{{firstCreator}}
{{elseif language =="zh-CN"}}
_{{firstCreator}}
{{else}}
_{{creators  max="1" suffix=" et al"}}
{{ endif }}

image.png

![image.png](Zotero.assets/image 1.png)

![image.png](Zotero.assets/image 2.png)

![image.png](Zotero.assets/image 3.png)

![image.png](Zotero.assets/image 4.png)

二、Zotero插件

![image.png](Zotero.assets/image 5.png)

![image.png](Zotero.assets/image 6.png)

1、easyscholar网址:https://www.easyscholar.cc/

![image.png](Zotero.assets/image 7.png)

QQ_1743403794985.png

QQ_1743403806644.png

QQ_1743403831452.png

2、笔记模板——进去新建条目

![image.png](Zotero.assets/image 8.png)

(1)PaperNote


<!-- Title -->
<h1 style="color:#193c47; background-color:#eef9fd; padding:8px;">
  ${(() => {
    const date = topItem.getField("date").split('T')[0];
    const title = topItem.getField("title");
    const titleTranslation = topItem.getField("titleTranslation");
    if (date && titleTranslation) {
      return `(${date}) ${title} (${titleTranslation})`;
    } else if (date) {
      return `(${date}) ${title}`;
    } else {
      return `${title}`;
    }
  })()}
</h1>

<!-- Meta Data -->
<table>
  <!-- Author -->
  <tr>
    <td style="color:#193c47; background-color:#dbeedd; padding:8px;">
      <b>Author:</b> ${topItem.getCreators().slice(0, 10).map((v) => v.firstName + " " + v.lastName).join("; ") + (topItem.getCreators().length > 10 ? "; et al." : ";")}
    </td>
  </tr>

  <!-- Journal -->
  <tr>
    <td style="color:#193c47; background-color:#f3faf4; padding:8px;">
      <b style="color:#193c47;">Journal: 
      <b style="color:#FF0000">
        ${topItem.getField('publicationTitle')},
      </b>
      ${(()=>{
        const volume = topItem.getField('volume');
        const issue = topItem.getField('issue');
        const pages = topItem.getField('pages');
        const year = topItem.getField('date').split('-')[0];
        let line = "";
        if (volume) {
          line += volume;
          if (issue) {
            line += '(' + issue + ')';
            line += pages ? ": " + pages + "," : ","
          } else {
            line += pages ? ": " + pages + "," : ","
          }
        } else if (issue) {
          line += '(' + issue + ')';
          line += pages ? ": " + pages : ","
        } else {
          line += pages ? pages + "," : ""
        }
        line += year ? " " + year + "." : ""; 
        return line;
      })()}
      </b>
    </td>
  </tr>

  <!-- Journal Tags -->
  <tr>
    <td style="color:#193c47; background-color:#dbeedd; padding:8px;">
      <b>Journal Tags: </b>
      <!-- In Zotero7, the tags of Ethereal Style plugin are referenced. Please install Ethereal Style in advance. -->
      ${{
      let space = " ㅤㅤ ㅤㅤ"
      return Array.prototype.map.call(
        Zotero.ZoteroStyle.api.renderCell(topItem, "publicationTags").childNodes,
        e => {
          e.innerText =  space + e.innerText + space;
          return e.outerHTML
        }
        ).join(space)
      }}$
    </td>
  </tr>

  <!-- Local Link -->
  <tr>
    <td style="color:#193c47; background-color:#f3faf4; padding:8px;">
      ${(() => {
        const attachments = Zotero.Items.get(topItem.getAttachments());
        const pdf = attachments.filter((i) => i.isPDFAttachment());
        if (pdf && pdf.length > 0) {
          return `<b>Local Link: </b><a href="zotero://open-pdf/0_${pdf[0].key}">${pdf[0].getFilename()}</a>`;
        } else if (attachments && attachments.length > 0) {
          return `<b>Local Link: </b><a href="zotero://open-pdf/0_${attachments[0].key}">${attachments[0].getFilename()}</a>`;
        } else {
          return `<b>Local Link: </b>`;
        }
      })()}
    </td>
  </tr>
  
  <!-- DOI or URL -->
  <tr>
    <td style="color:#193c47; background-color:#dbeedd; padding:8px;">
      ${(() => {
        const doi = topItem.getField("DOI");
        if (doi) {
          return `<b>DOI: </b><a href="https://doi.org/${topItem.getField('DOI')}">${topItem.getField('DOI')}</a>`;
        } else {
          return `<b>URL: </b><a href="${topItem.getField('url')}">${topItem.getField('url')}</a>`;
        }
      })()}
    </td>
  </tr>
  
  <!-- Abstract -->
  <tr>
    <td style="color:#193c47; background-color:#f3faf4; padding:8px;">
      ${(() => {
        const abstractTranslation = topItem.getField('abstractTranslation');
        if (abstractTranslation) {
          return `<b>Abstract Translation: </b><i>${abstractTranslation}</i>`;
        } else {
          return `<b>Abstract: </b><i>${topItem.getField('abstractNote')}</i>`;
        }
      })()}
    </td>
  </tr>
  
  <!-- Tags -->
  <tr>
  <td style="color:#193c47; background-color:#dbeedd; padding:8px;">
    <!-- Filter and display tags starting with # -->
    <b>Tags:</b> ${topItem.getTags().map(tagObj => tagObj.tag.startsWith('#') ? tagObj.tag + ' ,':'').join(' ') || ''}
  </td>
  </tr>

  <!-- Note Date -->
  <tr>
    <td style="color:#193c47; background-color:#f3faf4; padding:8px;">
      <b>Note Date: </b>${new Date().toLocaleString()}
    </td>
  </tr>

</table>

<!-- Main Content -->
<span>
  <hr />
  <h2 style="color:#e0ffff; background-color:#66cdaa;">📜 Research Content</h2>
</span>
<p></p>
<h3>💧 Data</h3>
<p></p>
<h3>👩🏻‍💻 Method</h3>
<p></p>
<h3>⚙️ Content</h3>
<p></p>
<h3>📜 Conclusion</h3>
<p></p>

<span>
  <hr />
  <h2 style="color:#20b2aa; background-color:#afeeee;">🔁 Research Core</h2>
</span>
<p></p>
<h3>💡 Innovations</h3>
<p></p>
<h3>🧩 Shortcomings</h3>
<p></p>
<h3>📌 To be resolved</h3>
<p></p>

<span>
  <hr />
  <h2 style="color:#004d99; background-color:#87cefa;">🤔 Personal Summary</h2>
</span>
<p></p>
<h3>🙋‍♀️ Key Records</h3>
<p></p>
<h3>💭 Thought Inspiration</h3>
<p></p>

(2)PaperItem


<!-- Meta Data -->
<table>
  <!-- Title -->
  <tr>
    <td style="color:#193c47; background-color:#BAD8B6; padding:8px;">
      <b>Title:</b> ${(() => {
    const date = topItem.getField("date").split('T')[0];
    const title = topItem.getField("title");
     if (date) {
      return `(${date}) ${title}`;
    } else {
      return `${title}`;
    }
    })()}
    </td>
  </tr>

  <!-- Author -->
  <tr>
    <td style="color:#193c47; background-color:#f3faf4; padding:8px;">
      <b>Author:</b> ${topItem.getCreators().slice(0, 10).map((v) => v.firstName + " " + v.lastName).join("; ") + (topItem.getCreators().length > 10 ? "; et al." : ";")}
    </td>
  </tr>

  <!-- Journal -->
  <tr>
    <td style="color:#193c47; background-color:#dbeedd; padding:8px;">
      <b style="color:#193c47;">Journal:</b>
        ${topItem.getField('publicationTitle')},
      
      ${(()=>{
        const volume = topItem.getField('volume');
        const issue = topItem.getField('issue');
        const pages = topItem.getField('pages');
        const year = topItem.getField('date').split('-')[0];
        let line = "";
        if (volume) {
          line += volume;
          if (issue) {
            line += '(' + issue + ')';
            line += pages ? ": " + pages + "," : ","
          } else {
            line += pages ? ": " + pages + "," : ","
          }
        } else if (issue) {
          line += '(' + issue + ')';
          line += pages ? ": " + pages : ","
        } else {
          line += pages ? pages + "," : ""
        }
        line += year ? " " + year + "." : ""; 
        return line;
      })()}
      </b>
    </td>
  </tr>

  <!-- Journal Tags -->
  <tr>
    <td style="color:#193c47; background-color:#f3faf4; padding:8px;">
      <b>Journal Tags:</b>
      <!-- In Zotero7, the tags of Ethereal Style plugin are referenced. Please install Ethereal Style in advance. -->
      ${{
      let space = " ㅤㅤ ㅤㅤ"
      return Array.prototype.map.call(
        Zotero.ZoteroStyle.api.renderCell(topItem, "publicationTags").childNodes,
        e => {
          e.innerText =  space + e.innerText + space;
          return e.outerHTML
        }
        ).join(space)
      }}$
    </td>
  </tr>

 
  <!-- DOI or URL -->
  <tr>
    <td style="color:#193c47; background-color:#dbeedd; padding:8px;">
      ${(() => {
        const doi = topItem.getField("DOI");
        if (doi) {
          return `<b>DOI:</b><a href="https://doi.org/${topItem.getField('DOI')}">${topItem.getField('DOI')}</a>`;
        } else {
          return `<b>URL:</b><a href="${topItem.getField('url')}">${topItem.getField('url')}</a>`;
        }
      })()}
    </td>
  </tr>
  
  <!-- Key Records -->
  <tr>
    <td style="color:#193c47; background-color:#f3faf4; padding:8px;">
      <b>Key Records:</b>
    </td>
  </tr>
  
  <!-- Tags -->
  <tr>
  <td style="color:#193c47; background-color:#dbeedd; padding:8px;">
    <!-- Filter and display tags starting with # -->
    <b>Tags:</b> ${topItem.getTags().map(tagObj => tagObj.tag.startsWith('#') ? tagObj.tag + ' ,':'').join(' ') || ''}
  </td>
  </tr>

  <!-- Note Date -->
  <tr>
    <td style="color:#193c47; background-color:#f3faf4; padding:8px;">
      <b>Note Date:</b>${new Date().toLocaleString()}
    </td>
  </tr>

</table>

QQ_1743403929642.png

QQ_1743403957307.png

QQ_1743403987407.png


文章作者: 猴猴猴
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 猴猴猴 !
 本篇
2025-05-30 猴猴猴
下一篇 
docker-osrm docker-osrm
2024-12-28 猴猴猴
  目录