AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Docx Scientific Formatting

skill-s-choung-research-skills-docx-scientific-formatting · by s-choung

A Claude skill from s-choung/Research-Skills.

No reviews yet
0 installs
10 views
0.0% view→install

Install

$ agentstack add skill-s-choung-research-skills-docx-scientific-formatting

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-s-choung-research-skills-docx-scientific-formatting)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Docx Scientific Formatting? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Scientific Word Document Formatting

python-docx + lxml로 .docx 파일의 과학 기술 문서 포맷팅을 수정할 때 참조하는 스킬.

Triggers: docx 수정, Word 포맷팅, 아래첨자, 위첨자, chemical formula formatting, 화학식 포맷

Chemical Formula Rules

Subscript (아래첨자)

  • 화학식 숫자: SnO2 -> SnO2, Ti4O7 -> Ti4O7, H2O, CO2, O3 등
  • 이온 화학식: Ru0.3Ti0.7O2 -> Ru0.3Ti0.7O2
  • 텍스트 라벨: ObridH -> ObridH, Sncus -> Sncus, Ni_cus -> Nicus
  • 열역학 기호: eta_TD -> etaTD

Superscript (위첨자)

  • 이온 전하: Ru2+ -> Ru2+, Sn4+ -> Sn4+, Cl- -> Cl-
  • 산화 상태: Fe3+, Cu2+
  • 중간체 표기: O, O2, O3* (asterisk는 위첨자 아님, 그대로 유지)

Italic (이탤릭)

  • 오비탈 표기: 2p, 4d, d(z2), dxy, dxz 등 orbital label은 italic
  • 결정면: (110), (120) 등은 italic 아님 (Miller index)
  • 라틴어/외래 표현: in-situ, operando, a priori 등은 italic

Unicode -> Word 정식 포맷 변환

Unicode 아래첨자/위첨자 문자를 Word의 w:vertAlign 속성으로 변환:

Unicode subscript: ₀₁₂₃₄₅₆₇₈₉ₓ -> 0123456789x + vertAlign=subscript
Unicode superscript: ⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻ -> 0123456789+- + vertAlign=superscript

python-docx 구현 패턴

Run 분할 (하나의 run에서 일부만 서식 변경)

import copy
from docx.oxml.ns import qn
from lxml import etree

def split_and_format(run_element, before, target, after, fmt):
    """Run을 3개로 분할: before(원본) + target(서식적용) + after(원본)"""
    parent = run_element.getparent()
    idx = list(parent).index(run_element)
    
    # 원본 run: before 텍스트
    t = run_element.find(qn('w:t'))
    t.text = before
    t.set(qn('xml:space'), 'preserve')
    
    # target run: 서식 적용
    fmt_el = copy.deepcopy(run_element)
    fmt_t = fmt_el.find(qn('w:t'))
    fmt_t.text = target
    fmt_t.set(qn('xml:space'), 'preserve')
    rpr = fmt_el.find(qn('w:rPr'))
    if rpr is None:
        rpr = etree.SubElement(fmt_el, qn('w:rPr'))
        fmt_el.insert(0, rpr)
    
    if fmt == 'sub':
        for va in rpr.findall(qn('w:vertAlign')):
            rpr.remove(va)
        va = etree.SubElement(rpr, qn('w:vertAlign'))
        va.set(qn('w:val'), 'subscript')
    elif fmt == 'sup':
        for va in rpr.findall(qn('w:vertAlign')):
            rpr.remove(va)
        va = etree.SubElement(rpr, qn('w:vertAlign'))
        va.set(qn('w:val'), 'superscript')
    elif fmt == 'italic':
        i_el = etree.SubElement(rpr, qn('w:i'))
        i_el.set(qn('w:val'), 'true')
    
    parent.insert(idx + 1, fmt_el)
    
    # after run
    if after:
        rest_el = copy.deepcopy(run_element)
        rest_t = rest_el.find(qn('w:t'))
        rest_t.text = after
        rest_t.set(qn('xml:space'), 'preserve')
        # 서식 초기화 (복사된 원본 서식 유지, vertAlign만 제거)
        rest_rpr = rest_el.find(qn('w:rPr'))
        if rest_rpr is not None:
            for va in rest_rpr.findall(qn('w:vertAlign')):
                rest_rpr.remove(va)
            for it in rest_rpr.findall(qn('w:i')):
                rest_rpr.remove(it)
        parent.insert(idx + 2, rest_el)

주의사항

  • Run 분할 시 원본 run의 text를 before로 변경하고, target/after는 새 run으로 insert
  • after 텍스트에 target 문자열이 포함되지 않도록 주의 (중복 방지)
  • xml:space='preserve' 필수 (공백 보존)
  • 기존 vertAlign 제거 후 새로 추가 (누적 방지)
  • 역순으로 처리하거나, insert 후 index 갱신 필요

번역체 주의 (과학 용어)

영어 원문 그대로 쓸 것 (한글 음차 금지)

학계에서 한국어로 안 쓰는 용어는 영어 원문 유지:

| 한글 음차 (X) | 영어 원문 (O) | |---|---| | 캐릭터라이제이션 | characterization | | 밸런스 밴드 | valence band | | 피복률 | coverage | | 오버레이어 | overlayer | | 디스크립터 | descriptor | | 컨덕션 밴드 | conduction band | | 헤테로정션 | heterojunction | | 메커니즘 | mechanism |

번역체 표현 수정

| 번역체 (X) | 자연스러운 표현 (O) | 원어 | |---|---|---| | 진화 메커니즘 | 발생 메커니즘 | evolution mechanism | | 활성 사이트 | 활성점 | active site | | 결정적인 역할 | 주요 역할 | crucial role |

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.