Skill Tracer
Skills › Financial Services › pitch-deck › xml-reference.md

xml-reference.md

492 lines · plugins/vertical-plugins/investment-banking/skills/pitch-deck/reference/xml-reference.md at 6056506

Open on GitHub
1# PowerPoint XML Reference
2
3This file contains XML patterns for programmatic PowerPoint editing. Use these patterns when working directly with OOXML format.
4
5**Note:** Color values in examples (e.g., `E67E22`, `D35400`) are placeholders. Replace with your template's brand colors.
6
7---
8

PowerPoint XML Reference

This file contains XML patterns for programmatic PowerPoint editing. Use these patterns when working directly with OOXML format.

Note: Color values in examples (e.g., E67E22, D35400) are placeholders. Replace with your template's brand colors.


Raw lines 1 to 8
9## ⚠️ When to Use This Reference
11**Use python-pptx for:**
12- Creating new tables (handles cell structure and relationships automatically)
13- Adding text boxes
14- Inserting images
15- Most shape creation
16- Any operation where python-pptx provides an API
18**Use direct XML editing only for:**
19- Modifying properties of existing elements that python-pptx doesn't expose
20- Fine-tuning cell formatting after table creation via python-pptx
21- Adjusting specific shape properties not available via the python-pptx API
23**NEVER use direct XML for:**
24- Creating tables from scratch (relationship management is error-prone and will likely corrupt the file)
25- Initial shape creation (shape ID collision risk)
26- Anything you can accomplish via python-pptx
28The XML patterns in this file are for **reference and targeted modifications**, not wholesale element construction.
30---

⚠️ When to Use This Reference

Use python-pptx for:

  • Creating new tables (handles cell structure and relationships automatically)
  • Adding text boxes
  • Inserting images
  • Most shape creation
  • Any operation where python-pptx provides an API

Use direct XML editing only for:

  • Modifying properties of existing elements that python-pptx doesn't expose
  • Fine-tuning cell formatting after table creation via python-pptx
  • Adjusting specific shape properties not available via the python-pptx API

NEVER use direct XML for:

  • Creating tables from scratch (relationship management is error-prone and will likely corrupt the file)
  • Initial shape creation (shape ID collision risk)
  • Anything you can accomplish via python-pptx

The XML patterns in this file are for reference and targeted modifications, not wholesale element construction.


Raw lines 9 to 31
32## XML Editing Risks
34Direct XML editing can corrupt PowerPoint files if not done carefully:
35- PowerPoint XML has interdependencies (relationship files, content types)
36- Invalid XML or missing relationships can corrupt the entire file
37- Shape IDs must be unique across each slide
39**Always work on a backup copy** — never edit the original file directly.
41---

XML Editing Risks

Direct XML editing can corrupt PowerPoint files if not done carefully:

  • PowerPoint XML has interdependencies (relationship files, content types)
  • Invalid XML or missing relationships can corrupt the entire file
  • Shape IDs must be unique across each slide

Always work on a backup copy — never edit the original file directly.


Raw lines 32 to 42
43## Contents
44- [Table Implementation](#table-implementation)
45- [Arrow Shapes](#arrow-shapes)
46- [Text Boxes](#text-boxes)
47- [Shapes with Fill](#shapes-with-fill)
48- [Image Insertion](#image-insertion)
49- [Connector Lines](#connector-lines)
50- [Unit Conversions](#unit-conversions)
52---

Contents

  • Table Implementation
  • Arrow Shapes
  • Text Boxes
  • Shapes with Fill
  • Image Insertion
  • Connector Lines
  • Unit Conversions

Raw lines 43 to 53
54## Table Implementation

Table Implementation

Raw lines 54 to 55
56### CRITICAL: Verify Tables Are Actual Table Objects
58After creating any table, you MUST verify it is an actual table object, not text with separators.
60**Programmatic verification (python-pptx):**
61```python
62for shape in slide.shapes:
63 if shape.has_table:
64 print(f"✓ Found table: {len(shape.table.rows)} rows, {len(shape.table.columns)} columns")
65```
67**Visual verification (in exported image):**
68- Columns align perfectly regardless of content length
69- Cell borders are consistent
70- Selecting the table selects all cells as a unit
72**Failure indicators — you have created TEXT, not a table:**
73- `|` characters visible between values
74- Columns misalign when content length varies
75- Tab characters (`\t`) used for spacing
76- Multiple text boxes arranged to look like a table
78Text-based "tables" cannot be edited by the recipient, will misalign when fonts change, and signal amateur work. There is no acceptable use case for pipe/tab-separated tabular data in a pitch deck.
80---

CRITICAL: Verify Tables Are Actual Table Objects

After creating any table, you MUST verify it is an actual table object, not text with separators.

Programmatic verification (python-pptx):

for shape in slide.shapes:
    if shape.has_table:
        print(f"✓ Found table: {len(shape.table.rows)} rows, {len(shape.table.columns)} columns")

Visual verification (in exported image):

  • Columns align perfectly regardless of content length
  • Cell borders are consistent
  • Selecting the table selects all cells as a unit

Failure indicators — you have created TEXT, not a table:

  • | characters visible between values
  • Columns misalign when content length varies
  • Tab characters (\t) used for spacing
  • Multiple text boxes arranged to look like a table

Text-based "tables" cannot be edited by the recipient, will misalign when fonts change, and signal amateur work. There is no acceptable use case for pipe/tab-separated tabular data in a pitch deck.


Raw lines 56 to 81
82### Basic Table Structure
84```xml
85<a:tbl>
86 <a:tblPr firstRow="1" bandRow="1">
87 <a:tableStyleId>{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}</a:tableStyleId>
88 </a:tblPr>
89 <a:tblGrid>
90 <a:gridCol w="2000000"/> <!-- Source column - width in EMUs -->
91 <a:gridCol w="1200000"/> <!-- 2024 Size column -->
92 <a:gridCol w="1200000"/> <!-- CAGR column -->
93 <a:gridCol w="1200000"/> <!-- 2030 Projection column -->
94 </a:tblGrid>
95 <!-- Row definitions follow -->
96</a:tbl>
97```

Basic Table Structure

<a:tbl>
  <a:tblPr firstRow="1" bandRow="1">
    <a:tableStyleId>{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}</a:tableStyleId>
  </a:tblPr>
  <a:tblGrid>
    <a:gridCol w="2000000"/>  <!-- Source column - width in EMUs -->
    <a:gridCol w="1200000"/>  <!-- 2024 Size column -->
    <a:gridCol w="1200000"/>  <!-- CAGR column -->
    <a:gridCol w="1200000"/>  <!-- 2030 Projection column -->
  </a:tblGrid>
  <!-- Row definitions follow -->
</a:tbl>
Raw lines 82 to 98
99### Table Row with Cells
101```xml
102<a:tr h="370840"> <!-- Row height in EMUs -->
103 <a:tc>
104 <a:txBody>
105 <a:bodyPr/>
106 <a:lstStyle/>
107 <a:p>
108 <a:pPr algn="l"/> <!-- Left alignment for text columns -->
109 <a:r>
110 <a:rPr lang="en-US" sz="1000" b="0"/>
111 <a:t>Grand View Research</a:t>
112 </a:r>
113 </a:p>
114 </a:txBody>
115 <a:tcPr/>
116 </a:tc>
117 <a:tc>
118 <a:txBody>
119 <a:bodyPr/>
120 <a:lstStyle/>
121 <a:p>
122 <a:pPr algn="ctr"/> <!-- Center alignment for numeric columns -->
123 <a:r>
124 <a:rPr lang="en-US" sz="1000"/>
125 <a:t>22.1</a:t>
126 </a:r>
127 </a:p>
128 </a:txBody>
129 <a:tcPr/>
130 </a:tc>
131 <!-- Additional cells... -->
132</a:tr>
133```

Table Row with Cells

<a:tr h="370840">  <!-- Row height in EMUs -->
  <a:tc>
    <a:txBody>
      <a:bodyPr/>
      <a:lstStyle/>
      <a:p>
        <a:pPr algn="l"/>  <!-- Left alignment for text columns -->
        <a:r>
          <a:rPr lang="en-US" sz="1000" b="0"/>
          <a:t>Grand View Research</a:t>
        </a:r>
      </a:p>
    </a:txBody>
    <a:tcPr/>
  </a:tc>
  <a:tc>
    <a:txBody>
      <a:bodyPr/>
      <a:lstStyle/>
      <a:p>
        <a:pPr algn="ctr"/>  <!-- Center alignment for numeric columns -->
        <a:r>
          <a:rPr lang="en-US" sz="1000"/>
          <a:t>22.1</a:t>
        </a:r>
      </a:p>
    </a:txBody>
    <a:tcPr/>
  </a:tc>
  <!-- Additional cells... -->
</a:tr>
Raw lines 99 to 134
135### Header Row Styling
137```xml
138<a:tr h="370840">
139 <a:tc>
140 <a:txBody>
141 <a:bodyPr/>
142 <a:lstStyle/>
143 <a:p>
144 <a:pPr algn="l"/>
145 <a:r>
146 <a:rPr lang="en-US" sz="1000" b="1"> <!-- Bold for headers -->
147 <a:solidFill>
148 <a:srgbClr val="FFFFFF"/> <!-- White text -->
149 </a:solidFill>
150 </a:rPr>
151 <a:t>Source</a:t>
152 </a:r>
153 </a:p>
154 </a:txBody>
155 <a:tcPr>
156 <a:solidFill>
157 <a:srgbClr val="E67E22"/> <!-- Orange background -->
158 </a:solidFill>
159 </a:tcPr>
160 </a:tc>
161 <!-- Additional header cells... -->
162</a:tr>
163```
165---

Header Row Styling

<a:tr h="370840">
  <a:tc>
    <a:txBody>
      <a:bodyPr/>
      <a:lstStyle/>
      <a:p>
        <a:pPr algn="l"/>
        <a:r>
          <a:rPr lang="en-US" sz="1000" b="1">  <!-- Bold for headers -->
            <a:solidFill>
              <a:srgbClr val="FFFFFF"/>  <!-- White text -->
            </a:solidFill>
          </a:rPr>
          <a:t>Source</a:t>
        </a:r>
      </a:p>
    </a:txBody>
    <a:tcPr>
      <a:solidFill>
        <a:srgbClr val="E67E22"/>  <!-- Orange background -->
      </a:solidFill>
    </a:tcPr>
  </a:tc>
  <!-- Additional header cells... -->
</a:tr>

Raw lines 135 to 166
167## Arrow Shapes
169### Right Arrow Shape
171```xml
172<p:sp>
173 <p:nvSpPr>
174 <p:cNvPr id="10" name="Arrow Right"/>
175 <p:cNvSpPr/>
176 <p:nvPr/>
177 </p:nvSpPr>
178 <p:spPr>
179 <a:xfrm>
180 <a:off x="3000000" y="2500000"/> <!-- Position in EMUs -->
181 <a:ext cx="500000" cy="300000"/> <!-- Size in EMUs -->
182 </a:xfrm>
183 <a:prstGeom prst="rightArrow">
184 <a:avLst/>
185 </a:prstGeom>
186 <a:solidFill>
187 <a:srgbClr val="E67E22"/> <!-- Arrow fill color -->
188 </a:solidFill>
189 <a:ln>
190 <a:noFill/> <!-- No outline -->
191 </a:ln>
192 </p:spPr>
193</p:sp>
194```

Right Arrow Shape

<p:sp>
  <p:nvSpPr>
    <p:cNvPr id="10" name="Arrow Right"/>
    <p:cNvSpPr/>
    <p:nvPr/>
  </p:nvSpPr>
  <p:spPr>
    <a:xfrm>
      <a:off x="3000000" y="2500000"/>  <!-- Position in EMUs -->
      <a:ext cx="500000" cy="300000"/>   <!-- Size in EMUs -->
    </a:xfrm>
    <a:prstGeom prst="rightArrow">
      <a:avLst/>
    </a:prstGeom>
    <a:solidFill>
      <a:srgbClr val="E67E22"/>  <!-- Arrow fill color -->
    </a:solidFill>
    <a:ln>
      <a:noFill/>  <!-- No outline -->
    </a:ln>
  </p:spPr>
</p:sp>
Raw lines 169 to 195
196### Down Arrow Shape
198```xml
199<p:sp>
200 <p:nvSpPr>
201 <p:cNvPr id="11" name="Arrow Down"/>
202 <p:cNvSpPr/>
203 <p:nvPr/>
204 </p:nvSpPr>
205 <p:spPr>
206 <a:xfrm>
207 <a:off x="2500000" y="3000000"/>
208 <a:ext cx="300000" cy="500000"/>
209 </a:xfrm>
210 <a:prstGeom prst="downArrow">
211 <a:avLst/>
212 </a:prstGeom>
213 <a:solidFill>
214 <a:srgbClr val="E67E22"/>
215 </a:solidFill>
216 </p:spPr>
217</p:sp>
218```

Down Arrow Shape

<p:sp>
  <p:nvSpPr>
    <p:cNvPr id="11" name="Arrow Down"/>
    <p:cNvSpPr/>
    <p:nvPr/>
  </p:nvSpPr>
  <p:spPr>
    <a:xfrm>
      <a:off x="2500000" y="3000000"/>
      <a:ext cx="300000" cy="500000"/>
    </a:xfrm>
    <a:prstGeom prst="downArrow">
      <a:avLst/>
    </a:prstGeom>
    <a:solidFill>
      <a:srgbClr val="E67E22"/>
    </a:solidFill>
  </p:spPr>
</p:sp>
Raw lines 196 to 219
220### Chevron Shape
222```xml
223<p:sp>
224 <p:nvSpPr>
225 <p:cNvPr id="12" name="Chevron"/>
226 <p:cNvSpPr/>
227 <p:nvPr/>
228 </p:nvSpPr>
229 <p:spPr>
230 <a:xfrm>
231 <a:off x="3000000" y="2500000"/>
232 <a:ext cx="400000" cy="600000"/>
233 </a:xfrm>
234 <a:prstGeom prst="chevron">
235 <a:avLst/>
236 </a:prstGeom>
237 <a:solidFill>
238 <a:srgbClr val="E67E22"/>
239 </a:solidFill>
240 </p:spPr>
241</p:sp>
242```
244---

Chevron Shape

<p:sp>
  <p:nvSpPr>
    <p:cNvPr id="12" name="Chevron"/>
    <p:cNvSpPr/>
    <p:nvPr/>
  </p:nvSpPr>
  <p:spPr>
    <a:xfrm>
      <a:off x="3000000" y="2500000"/>
      <a:ext cx="400000" cy="600000"/>
    </a:xfrm>
    <a:prstGeom prst="chevron">
      <a:avLst/>
    </a:prstGeom>
    <a:solidFill>
      <a:srgbClr val="E67E22"/>
    </a:solidFill>
  </p:spPr>
</p:sp>

Raw lines 220 to 245
246## Text Boxes
248### Basic Text Box
250```xml
251<p:sp>
252 <p:nvSpPr>
253 <p:cNvPr id="5" name="TextBox 4"/>
254 <p:cNvSpPr txBox="1"/>
255 <p:nvPr/>
256 </p:nvSpPr>
257 <p:spPr>
258 <a:xfrm>
259 <a:off x="500000" y="1500000"/>
260 <a:ext cx="4000000" cy="500000"/>
261 </a:xfrm>
262 <a:prstGeom prst="rect">
263 <a:avLst/>
264 </a:prstGeom>
265 <a:noFill/>
266 </p:spPr>
267 <p:txBody>
268 <a:bodyPr wrap="square" rtlCol="0">
269 <a:spAutoFit/>
270 </a:bodyPr>
271 <a:lstStyle/>
272 <a:p>
273 <a:r>
274 <a:rPr lang="en-US" sz="1400" dirty="0"/>
275 <a:t>Text content here</a:t>
276 </a:r>
277 </a:p>
278 </p:txBody>
279</p:sp>
280```

Basic Text Box

<p:sp>
  <p:nvSpPr>
    <p:cNvPr id="5" name="TextBox 4"/>
    <p:cNvSpPr txBox="1"/>
    <p:nvPr/>
  </p:nvSpPr>
  <p:spPr>
    <a:xfrm>
      <a:off x="500000" y="1500000"/>
      <a:ext cx="4000000" cy="500000"/>
    </a:xfrm>
    <a:prstGeom prst="rect">
      <a:avLst/>
    </a:prstGeom>
    <a:noFill/>
  </p:spPr>
  <p:txBody>
    <a:bodyPr wrap="square" rtlCol="0">
      <a:spAutoFit/>
    </a:bodyPr>
    <a:lstStyle/>
    <a:p>
      <a:r>
        <a:rPr lang="en-US" sz="1400" dirty="0"/>
        <a:t>Text content here</a:t>
      </a:r>
    </a:p>
  </p:txBody>
</p:sp>
Raw lines 248 to 281
282### Text Box with Bullet Points
284```xml
285<p:txBody>
286 <a:bodyPr wrap="square">
287 <a:spAutoFit/>
288 </a:bodyPr>
289 <a:lstStyle/>
290 <a:p>
291 <a:pPr marL="342900" indent="-342900">
292 <a:buFont typeface="Wingdings" panose="05000000000000000000" pitchFamily="2" charset="2"/>
293 <a:buChar char="&#252;"/> <!-- Checkmark character -->
294 </a:pPr>
295 <a:r>
296 <a:rPr lang="en-US" sz="1400" dirty="0"/>
297 <a:t>First bullet point</a:t>
298 </a:r>
299 </a:p>
300 <a:p>
301 <a:pPr marL="342900" indent="-342900">
302 <a:buFont typeface="Wingdings" panose="05000000000000000000" pitchFamily="2" charset="2"/>
303 <a:buChar char="&#252;"/>
304 </a:pPr>
305 <a:r>
306 <a:rPr lang="en-US" sz="1400" dirty="0"/>
307 <a:t>Second bullet point</a:t>
308 </a:r>
309 </a:p>
310</p:txBody>
311```

Text Box with Bullet Points

<p:txBody>
  <a:bodyPr wrap="square">
    <a:spAutoFit/>
  </a:bodyPr>
  <a:lstStyle/>
  <a:p>
    <a:pPr marL="342900" indent="-342900">
      <a:buFont typeface="Wingdings" panose="05000000000000000000" pitchFamily="2" charset="2"/>
      <a:buChar char="&#252;"/>  <!-- Checkmark character -->
    </a:pPr>
    <a:r>
      <a:rPr lang="en-US" sz="1400" dirty="0"/>
      <a:t>First bullet point</a:t>
    </a:r>
  </a:p>
  <a:p>
    <a:pPr marL="342900" indent="-342900">
      <a:buFont typeface="Wingdings" panose="05000000000000000000" pitchFamily="2" charset="2"/>
      <a:buChar char="&#252;"/>
    </a:pPr>
    <a:r>
      <a:rPr lang="en-US" sz="1400" dirty="0"/>
      <a:t>Second bullet point</a:t>
    </a:r>
  </a:p>
</p:txBody>
Raw lines 282 to 312
313### Text with White Color (for dark backgrounds)
315```xml
316<a:r>
317 <a:rPr lang="en-US" sz="1000" b="1" i="1" dirty="0">
318 <a:solidFill>
319 <a:srgbClr val="FFFFFF"/> <!-- White text -->
320 </a:solidFill>
321 </a:rPr>
322 <a:t>White text on colored background</a:t>
323</a:r>
324```
326---

Text with White Color (for dark backgrounds)

<a:r>
  <a:rPr lang="en-US" sz="1000" b="1" i="1" dirty="0">
    <a:solidFill>
      <a:srgbClr val="FFFFFF"/>  <!-- White text -->
    </a:solidFill>
  </a:rPr>
  <a:t>White text on colored background</a:t>
</a:r>

Raw lines 313 to 327
328## Shapes with Fill

Shapes with Fill

Raw lines 328 to 329
330### Rectangle with Solid Fill
332```xml
333<p:sp>
334 <p:nvSpPr>
335 <p:cNvPr id="20" name="Rectangle 19"/>
336 <p:cNvSpPr/>
337 <p:nvPr/>
338 </p:nvSpPr>
339 <p:spPr>
340 <a:xfrm>
341 <a:off x="500000" y="2500000"/>
342 <a:ext cx="1000000" cy="2000000"/>
343 </a:xfrm>
344 <a:prstGeom prst="rect">
345 <a:avLst/>
346 </a:prstGeom>
347 <a:solidFill>
348 <a:srgbClr val="E67E22"/> <!-- Orange fill -->
349 </a:solidFill>
350 <a:ln w="12700"> <!-- Border width -->
351 <a:solidFill>
352 <a:srgbClr val="D35400"/> <!-- Darker border -->
353 </a:solidFill>
354 </a:ln>
355 </p:spPr>
356 <p:txBody>
357 <a:bodyPr rtlCol="0" anchor="ctr"/> <!-- Vertically centered text -->
358 <a:lstStyle/>
359 <a:p>
360 <a:pPr algn="ctr"/> <!-- Horizontally centered -->
361 <a:r>
362 <a:rPr lang="en-US" sz="1600" b="1">
363 <a:solidFill>
364 <a:srgbClr val="FFFFFF"/>
365 </a:solidFill>
366 </a:rPr>
367 <a:t>Label Text</a:t>
368 </a:r>
369 </a:p>
370 </p:txBody>
371</p:sp>
372```
374---

Rectangle with Solid Fill

<p:sp>
  <p:nvSpPr>
    <p:cNvPr id="20" name="Rectangle 19"/>
    <p:cNvSpPr/>
    <p:nvPr/>
  </p:nvSpPr>
  <p:spPr>
    <a:xfrm>
      <a:off x="500000" y="2500000"/>
      <a:ext cx="1000000" cy="2000000"/>
    </a:xfrm>
    <a:prstGeom prst="rect">
      <a:avLst/>
    </a:prstGeom>
    <a:solidFill>
      <a:srgbClr val="E67E22"/>  <!-- Orange fill -->
    </a:solidFill>
    <a:ln w="12700">  <!-- Border width -->
      <a:solidFill>
        <a:srgbClr val="D35400"/>  <!-- Darker border -->
      </a:solidFill>
    </a:ln>
  </p:spPr>
  <p:txBody>
    <a:bodyPr rtlCol="0" anchor="ctr"/>  <!-- Vertically centered text -->
    <a:lstStyle/>
    <a:p>
      <a:pPr algn="ctr"/>  <!-- Horizontally centered -->
      <a:r>
        <a:rPr lang="en-US" sz="1600" b="1">
          <a:solidFill>
            <a:srgbClr val="FFFFFF"/>
          </a:solidFill>
        </a:rPr>
        <a:t>Label Text</a:t>
      </a:r>
    </a:p>
  </p:txBody>
</p:sp>

Raw lines 330 to 375
376## Image Insertion

Image Insertion

Raw lines 376 to 377
378### Adding Image to Slide
380```xml
381<p:pic>
382 <p:nvPicPr>
383 <p:cNvPr id="99" name="Company Logo"/>
384 <p:cNvPicPr>
385 <a:picLocks noChangeAspect="1"/>
386 </p:cNvPicPr>
387 <p:nvPr/>
388 </p:nvPicPr>
389 <p:blipFill>
390 <a:blip r:embed="rIdLogo"/> <!-- Reference to relationship ID -->
391 <a:stretch>
392 <a:fillRect/>
393 </a:stretch>
394 </p:blipFill>
395 <p:spPr>
396 <a:xfrm>
397 <a:off x="10800000" y="200000"/> <!-- Top-right position -->
398 <a:ext cx="800000" cy="600000"/> <!-- Logo dimensions -->
399 </a:xfrm>
400 <a:prstGeom prst="rect">
401 <a:avLst/>
402 </a:prstGeom>
403 </p:spPr>
404</p:pic>
405```

Adding Image to Slide

<p:pic>
  <p:nvPicPr>
    <p:cNvPr id="99" name="Company Logo"/>
    <p:cNvPicPr>
      <a:picLocks noChangeAspect="1"/>
    </p:cNvPicPr>
    <p:nvPr/>
  </p:nvPicPr>
  <p:blipFill>
    <a:blip r:embed="rIdLogo"/>  <!-- Reference to relationship ID -->
    <a:stretch>
      <a:fillRect/>
    </a:stretch>
  </p:blipFill>
  <p:spPr>
    <a:xfrm>
      <a:off x="10800000" y="200000"/>  <!-- Top-right position -->
      <a:ext cx="800000" cy="600000"/>   <!-- Logo dimensions -->
    </a:xfrm>
    <a:prstGeom prst="rect">
      <a:avLst/>
    </a:prstGeom>
  </p:spPr>
</p:pic>
Raw lines 378 to 406
407### Adding Image Relationship
409In `ppt/slides/_rels/slideN.xml.rels`:
411```xml
412<Relationship Id="rIdLogo"
413 Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"
414 Target="../media/logo.png"/>
415```
417---

Adding Image Relationship

In ppt/slides/_rels/slideN.xml.rels:

<Relationship Id="rIdLogo" 
  Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" 
  Target="../media/logo.png"/>

Raw lines 407 to 418
419## Connector Lines

Connector Lines

Raw lines 419 to 420
421### Straight Connector
423```xml
424<p:cxnSp>
425 <p:nvCxnSpPr>
426 <p:cNvPr id="15" name="Straight Connector 14"/>
427 <p:cNvCxnSpPr>
428 <a:cxnSpLocks/>
429 </p:cNvCxnSpPr>
430 <p:nvPr/>
431 </p:nvCxnSpPr>
432 <p:spPr>
433 <a:xfrm>
434 <a:off x="500000" y="2500000"/>
435 <a:ext cx="5000000" cy="0"/> <!-- Horizontal line -->
436 </a:xfrm>
437 <a:prstGeom prst="line">
438 <a:avLst/>
439 </a:prstGeom>
440 <a:ln w="12700">
441 <a:solidFill>
442 <a:srgbClr val="E67E22"/>
443 </a:solidFill>
444 </a:ln>
445 </p:spPr>
446</p:cxnSp>
447```

Straight Connector

<p:cxnSp>
  <p:nvCxnSpPr>
    <p:cNvPr id="15" name="Straight Connector 14"/>
    <p:cNvCxnSpPr>
      <a:cxnSpLocks/>
    </p:cNvCxnSpPr>
    <p:nvPr/>
  </p:nvCxnSpPr>
  <p:spPr>
    <a:xfrm>
      <a:off x="500000" y="2500000"/>
      <a:ext cx="5000000" cy="0"/>  <!-- Horizontal line -->
    </a:xfrm>
    <a:prstGeom prst="line">
      <a:avLst/>
    </a:prstGeom>
    <a:ln w="12700">
      <a:solidFill>
        <a:srgbClr val="E67E22"/>
      </a:solidFill>
    </a:ln>
  </p:spPr>
</p:cxnSp>
Raw lines 421 to 448
449### Dashed Line
451```xml
452<p:spPr>
453 <a:xfrm>
454 <a:off x="500000" y="4500000"/>
455 <a:ext cx="5000000" cy="0"/>
456 </a:xfrm>
457 <a:prstGeom prst="line">
458 <a:avLst/>
459 </a:prstGeom>
460 <a:ln w="12700">
461 <a:solidFill>
462 <a:srgbClr val="E67E22"/>
463 </a:solidFill>
464 <a:prstDash val="dash"/> <!-- Dashed style -->
465 </a:ln>
466</p:spPr>
467```
469---

Dashed Line

<p:spPr>
  <a:xfrm>
    <a:off x="500000" y="4500000"/>
    <a:ext cx="5000000" cy="0"/>
  </a:xfrm>
  <a:prstGeom prst="line">
    <a:avLst/>
  </a:prstGeom>
  <a:ln w="12700">
    <a:solidFill>
      <a:srgbClr val="E67E22"/>
    </a:solidFill>
    <a:prstDash val="dash"/>  <!-- Dashed style -->
  </a:ln>
</p:spPr>

Raw lines 449 to 470
471## Unit Conversions
473| Unit | EMUs per unit |
474|------|---------------|
475| 1 inch | 914400 |
476| 1 cm | 360000 |
477| 1 point | 12700 |
478| 1 pixel (96 DPI) | 9525 |

Unit Conversions

UnitEMUs per unit
1 inch914400
1 cm360000
1 point12700
1 pixel (96 DPI)9525
Raw lines 471 to 479
480### Common Slide Dimensions (16:9)
482- Width: 12192000 EMUs (13.333 inches)
483- Height: 6858000 EMUs (7.5 inches)

Common Slide Dimensions (16:9)

  • Width: 12192000 EMUs (13.333 inches)
  • Height: 6858000 EMUs (7.5 inches)
Raw lines 480 to 484
485### Typical Element Positions
487| Element | X Position | Y Position |
488|---------|------------|------------|
489| Logo (top-right) | 10800000 | 200000 |
490| Title | 342583 | 286603 |
491| Subtitle | 402591 | 1767390 |
492| Footer | 342583 | 6435334 |

Typical Element Positions

ElementX PositionY Position
Logo (top-right)10800000200000
Title342583286603
Subtitle4025911767390
Footer3425836435334
Raw lines 485 to 492