{ "$schema": "../_schema.json", "format": "docx", "element": "textbox", "elementAliases": [ "txbx" ], "parent": "body", "operations": { "add": true, "set": true, "get": true, "query": false, "remove": true }, "paths": { "positional": [ "/body/textbox[N]" ] }, "note": "Floating text box — a DrawingML anchored shape (wps:wsp) that carries a text body, added inside a run+paragraph. Created via `add --type textbox`; Get returns the raw drawing tree and Remove deletes the host paragraph. Set supports the spPr surface (fill / line.* / width / height / geometry) in place; position/anchor/wrap/inset/text/rotation/shadow props are add-only (use Remove + re-Add, or the raw-set path, to change those). For an empty graphic shape with no text body use `shape`; for inline pictures use `picture`.", "properties": { "text": { "type": "string", "description": "initial text placed in the text box body.", "add": true, "examples": ["--prop text=\"Sidebar note\""] }, "width": { "type": "length", "description": "box width (cm/in/pt/EMU). Default ~6cm.", "add": true, "set": true, "examples": ["--prop width=6cm"] }, "height": { "type": "length", "description": "box height (cm/in/pt/EMU). Default ~2.4cm.", "add": true, "set": true, "examples": ["--prop height=3cm"] }, "geometry": { "type": "string", "description": "preset shape outline of the box (rect, roundRect, ellipse, ...). Aliases: shape.", "aliases": ["shape"], "add": true, "set": true, "examples": ["--prop geometry=roundRect"] }, "wrap": { "type": "enum", "description": "text-wrap mode of surrounding body text around the box.", "values": ["square", "tight", "through", "topAndBottom", "behind", "front", "none"], "default": "square", "add": true, "examples": ["--prop wrap=square"] }, "hAlign": { "type": "enum", "description": "relative horizontal alignment (emits , replaces a positional offset on the X axis). Aliases: halign.", "values": ["left", "center", "right", "inside", "outside"], "aliases": ["halign"], "add": true, "examples": ["--prop hAlign=center"] }, "vAlign": { "type": "enum", "description": "relative vertical alignment (emits on the Y axis). Aliases: valign.", "values": ["top", "center", "bottom", "inside", "outside"], "aliases": ["valign"], "add": true, "examples": ["--prop vAlign=top"] }, "hRelative": { "type": "enum", "description": "what the horizontal position/alignment is measured from. Aliases: hrelative.", "values": ["margin", "page", "column", "character", "leftMargin", "rightMargin", "insideMargin", "outsideMargin"], "aliases": ["hrelative"], "add": true, "examples": ["--prop hRelative=margin"] }, "vRelative": { "type": "enum", "description": "what the vertical position/alignment is measured from. Aliases: vrelative.", "values": ["margin", "page", "paragraph", "line", "topMargin", "bottomMargin", "insideMargin", "outsideMargin"], "aliases": ["vrelative"], "add": true, "examples": ["--prop vRelative=paragraph"] }, "anchor.x": { "type": "length", "description": "horizontal position offset from hRelative origin. Alias: hposition. Ignored when hAlign is set.", "aliases": ["hposition"], "add": true, "examples": ["--prop anchor.x=2cm"] }, "anchor.y": { "type": "length", "description": "vertical position offset from vRelative origin. Alias: vposition. Ignored when vAlign is set.", "aliases": ["vposition"], "add": true, "examples": ["--prop anchor.y=1cm"] }, "fill": { "type": "color", "description": "fill color (hex/name), or 'none' for no fill. Alias: fillcolor.", "aliases": ["fillcolor"], "add": true, "set": true, "examples": ["--prop fill=EAF2FF", "--prop fill=none"] }, "fill.gradient": { "type": "string", "description": "gradient fill spec (overrides solid fill). Alias: gradient.", "aliases": ["gradient"], "add": true }, "fill.opacity": { "type": "string", "description": "fill opacity percentage. Alias: opacity.", "aliases": ["opacity"], "add": true, "examples": ["--prop fill.opacity=50"] }, "line.color": { "type": "color", "description": "outline color. Alias: linecolor.", "aliases": ["linecolor"], "add": true, "set": true, "examples": ["--prop line.color=2B579A"] }, "line.width": { "type": "length", "description": "outline width. Alias: linewidth.", "aliases": ["linewidth"], "add": true, "set": true, "examples": ["--prop line.width=1pt"] }, "line.style": { "type": "string", "description": "outline dash style. Alias: linestyle.", "aliases": ["linestyle"], "add": true, "set": true }, "inset.left": { "type": "length", "description": "internal left padding between the box edge and its text. Default 0.1in.", "add": true }, "inset.top": { "type": "length", "description": "internal top padding. Default 0.05in.", "add": true }, "inset.right": { "type": "length", "description": "internal right padding. Default 0.1in.", "add": true }, "inset.bottom": { "type": "length", "description": "internal bottom padding. Default 0.05in.", "add": true }, "textDirection": { "type": "string", "description": "text flow direction inside the box (e.g. vertical). Alias: vert.", "aliases": ["vert"], "add": true }, "textAnchor": { "type": "string", "description": "vertical anchoring of text within the box (top/center/bottom).", "add": true }, "autoFit": { "type": "bool", "description": "resize the box to fit its text ().", "add": true, "examples": ["--prop autoFit=true"] }, "rotation": { "type": "string", "description": "rotation in degrees. Alias: rot.", "aliases": ["rot"], "add": true, "examples": ["--prop rotation=90"] }, "shadow": { "type": "string", "description": "drop-shadow preset.", "add": true }, "alt": { "type": "string", "description": "accessibility / object name (docPr name). Alias: name. Default 'Text Box'.", "aliases": ["name"], "add": true, "examples": ["--prop alt=\"Callout\""] } } }