您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Clean copy of KaTeX expressions without duplicates or extra line breaks
- // ==UserScript==
- // @name You.com KaTeX Copy Handler
- // @namespace http://tampermonkey.net/
- // @version 1.1
- // @description Clean copy of KaTeX expressions without duplicates or extra line breaks
- // @author Assistant
- // @match *://*.you.com/*
- // @grant none
- // @icon https://www.google.com/s2/favicons?sz=64&domain=you.com
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- // Function to extract clean text from a KaTeX element
- function extractKaTeXText(element) {
- // Get the LaTeX source from annotation if available
- const annotation = element.querySelector('.katex-mathml annotation[encoding="application/x-tex"]');
- if (annotation) {
- return annotation.textContent;
- }
- // Fallback: extract from visible content
- const baseElements = element.querySelectorAll('.katex-html .base .mord, .katex-html .base .mopen, .katex-html .base .mclose');
- return Array.from(baseElements).map(el => el.textContent).join('');
- }
- // Function to extract text from a range, handling both KaTeX and regular text
- function extractTextFromRange(range) {
- const fragment = range.cloneContents();
- const nodes = Array.from(fragment.childNodes);
- let result = '';
- nodes.forEach(node => {
- if (node.nodeType === Node.ELEMENT_NODE) {
- // Check if the node is a KaTeX element
- if (node.classList.contains('katex')) {
- result += extractKaTeXText(node);
- } else {
- result += node.textContent; // Regular element
- }
- } else if (node.nodeType === Node.TEXT_NODE) {
- result += node.textContent; // Regular text
- }
- });
- return result;
- }
- // Handle copy event
- document.addEventListener('copy', function (e) {
- const selection = window.getSelection();
- if (!selection.rangeCount) return;
- const range = selection.getRangeAt(0);
- // Extract text from the range, handling both KaTeX and regular text
- const cleanText = extractTextFromRange(range);
- // Override the clipboard data
- e.preventDefault();
- e.clipboardData.setData('text/plain', cleanText);
- });
- // Log that script is active
- console.log('KaTeX Copy Handler active');
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址