From 99a75c52f5a0e287de0a428cffe213df2b9a33e2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A7=8B=E4=BA=8E=E5=88=9D=E8=A7=81?= <752204717@qq.com>
Date: Wed, 22 Apr 2026 14:09:33 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
getUrl.html | 171 +++++++++++++++++++++++++++++++++++++++++++++++
js/article.js | 152 ++++++++++++++++++++++++++++++++++++++++-
js/article_v1.js | 2 +-
js/article_v2.js | 7 ++
4 files changed, 329 insertions(+), 3 deletions(-)
create mode 100644 getUrl.html
diff --git a/getUrl.html b/getUrl.html
new file mode 100644
index 0000000..ec985ee
--- /dev/null
+++ b/getUrl.html
@@ -0,0 +1,171 @@
+
+
+
+
+
+ TMR 文章处理工具
+
+
+
+
+
+ 期刊文章快速跳转工具
+ 请输入期刊官网文章链接:
+
+
+
+
+
检测到自动化排版文章,请选择跳转目标:
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js/article.js b/js/article.js
index f8b406a..1d3d6f1 100644
--- a/js/article.js
+++ b/js/article.js
@@ -9,6 +9,9 @@ wmath[data-wrap="inline"] {
width: auto !important;
}
+mycite{
+ color:rgb(0, 130, 170) !important;
+}
.outiline-item-h1,.outiline-item-h1 *{
font-weight: bold;
}
@@ -7691,8 +7694,6 @@ function article_con() {
// initArticleNavList(a_ID)
console.log('result at line 7575:', result)
-
-
$('.wenzhang .wen_rong .left').css({
'background-color': '#f4fafd',
@@ -8969,7 +8970,154 @@ text-align:left;color:#333;" >${item.table.note ? item.table.note : ''
$('.wen_rong .content-box .conthtmn').append('');
}
initArticleHtml(arr, result.data.refers, html_type)
+ // 2. 渲染完成后立即重新计算并纠正顺序
+ updateCitationDisplayWithMyTable('.wen_rong .content-box .conthtmn', result.data.refers, {
+ writeInnerHTML: true,
+ hideEmptyCite: true
+ });
+
}
+/**
+ * 根据容器内 mycite/autocite 的文档顺序,按 data-id 首次出现编号并写回角标。
+
+ */
+function updateCitationDisplayWithMyTable(root, refers, opt) {
+ opt = opt || {};
+ var el = typeof root === 'string' ? document.querySelector(root) : root;
+ if (!el) return { idToNum: {}, order: [] };
+
+ // 1) 合法参考文献集合
+ var validRef = Object.create(null);
+ (refers || []).forEach(function (r) {
+ if (r && r.p_refer_id != null) validRef[String(r.p_refer_id)] = true;
+ });
+
+ function parseIds(raw) {
+ return String(raw || '')
+ .split(',')
+ .map(function (s) { return s.trim(); })
+ .filter(Boolean);
+ }
+
+ function formatNums(nums) {
+ var a = nums.filter(function (n, i, arr) { return arr.indexOf(n) === i; })
+ .sort(function (x, y) { return x - y; });
+ var out = [], i = 0;
+ while (i < a.length) {
+ var j = i;
+ while (j < a.length - 1 && a[j + 1] === a[j] + 1) j++;
+ if (j - i >= 2) out.push(a[i] + '–' + a[j]);
+ else for (var k = i; k <= j; k++) out.push(String(a[k]));
+ i = j + 1;
+ }
+ return out.join(', ');
+ }
+
+ // 2) 建一个“表格索引”:tableId -> 真实表格节点
+ // 这里把常见承载节点都尝试一遍,你可按官网实际 class 再加
+ var tableMap = Object.create(null);
+ var tableCandidates = el.querySelectorAll(
+ 'table, .myeditabledivTable, .wordTableHtml, [data-table-id], [data-amt-id], [main-id]'
+ );
+ tableCandidates.forEach(function (node) {
+ var ids = [
+ node.getAttribute('data-table-id'),
+ node.getAttribute('data-amt-id'),
+ node.getAttribute('data-id'),
+ node.getAttribute('main-id')
+ ].filter(Boolean).map(String);
+ ids.forEach(function (id) {
+ if (!tableMap[id]) tableMap[id] = node;
+ });
+ });
+
+ // 3) 全局编号状态
+ var idToNum = Object.create(null);
+ var order = [];
+ var nextNum = 1;
+
+ function assignId(id) {
+ id = String(id);
+ if (!validRef[id]) return null; // 不存在就不显示
+ if (idToNum[id] == null) {
+ idToNum[id] = nextNum++;
+ order.push(id);
+ }
+ return idToNum[id];
+ }
+
+ function paintCiteNode(node, ids) {
+ var nums = [];
+ ids.forEach(function (id) {
+ var n = assignId(id);
+ if (n != null) nums.push(n);
+ });
+ nums = nums.filter(function (v, i, a) { return a.indexOf(v) === i; })
+ .sort(function (a, b) { return a - b; });
+
+ if (!nums.length) {
+ node.removeAttribute('data-cite-label');
+ if (opt.writeInnerHTML) node.innerHTML = '';
+ if (opt.hideEmptyCite !== false) node.style.display = 'none';
+ return;
+ }
+
+ var label = formatNums(nums);
+ node.setAttribute('data-cite-label', label);
+ if (opt.writeInnerHTML) node.innerHTML = '[' + label + ']';
+ }
+
+ // 4) 扫描一个子树内 mycite/autocite
+ function scanCitesInSubtree(node) {
+ node.querySelectorAll('mycite, autocite').forEach(function (cite) {
+ paintCiteNode(cite, parseIds(cite.getAttribute('data-id')));
+ });
+ }
+
+ // 5) 主遍历:遇到 mytable 时“提前注入”对应表格引用
+ var consumedTableNode = new WeakSet();
+
+ function walk(node) {
+ if (!node || node.nodeType !== 1) return;
+ var tag = node.tagName.toLowerCase();
+
+ // 5.1 引用标签
+ if (tag === 'mycite' || tag === 'autocite') {
+ paintCiteNode(node, parseIds(node.getAttribute('data-id')));
+ return;
+ }
+
+ // 5.2 mytable 占位:在这里扫描对应表格
+ if (tag === 'mytable') {
+ var tid = String(node.getAttribute('data-id') || '').trim();
+ var tableNode = tid ? tableMap[tid] : null;
+ if (!tableNode) {
+ // 兜底:按属性再找一次
+ tableNode = el.querySelector(
+ '[data-table-id="' + tid + '"], [data-amt-id="' + tid + '"], [data-id="' + tid + '"], [main-id="' + tid + '"]'
+ );
+ }
+ if (tableNode && !consumedTableNode.has(tableNode)) {
+ scanCitesInSubtree(tableNode); // 在 mytable 位置提前计入
+ consumedTableNode.add(tableNode); // 后续真实表格处不再重复
+ }
+ return;
+ }
+
+ // 5.3 若走到真实表格节点,且已在 mytable 处消费过,则跳过
+ if (consumedTableNode.has(node)) return;
+
+ // 5.4 正常递归
+ for (var ch = node.firstElementChild; ch; ch = ch.nextElementSibling) {
+ walk(ch);
+ }
+ }
+
+ walk(el);
+
+ return { idToNum: idToNum, order: order };
+ }
+
function initArticleHtml(htmlData, refs, type) {
document.querySelectorAll('wmath').forEach(el => {
const latex = el.getAttribute('data-latex');
diff --git a/js/article_v1.js b/js/article_v1.js
index 3d0beaa..16080a8 100644
--- a/js/article_v1.js
+++ b/js/article_v1.js
@@ -226,7 +226,7 @@ justify-content: space-between;
}
.zuo_zhe_info.show {
- max-height: 300px; /* 根据实际内容调整 */
+ max-height: 1000px; /* 根据实际内容调整 */
opacity: 1;
margin-top:10px;
diff --git a/js/article_v2.js b/js/article_v2.js
index bd7ebb5..5217dd3 100644
--- a/js/article_v2.js
+++ b/js/article_v2.js
@@ -95,6 +95,12 @@ margin-left: calc((100% - 190px - 65px)/2) !important;
.thumbnailTableBox {
overflow-x: auto;
}
+.zuo_zhe_info.show {
+ max-height: 1000px; /* 根据实际内容调整 */
+ opacity: 1;
+ margin-top:10px;
+
+ }
`
document.head.appendChild(style);
@@ -1864,6 +1870,7 @@ async function initContentHtml(content, arr, refers, html_type, ArticleData) {
await initArticleHtml(arr, refers, html_type, { OriginalDataStr: OriginalDataStr, pdfStr: pdfStr, trackStr: trackStr, mhooStr: mhooStr })
+
await initRelatedArticles(ArticleData.a_ID)
await initTopics(ArticleData.a_ID)