The Most Quoted Line in Strategy — and the Most Misread
Sun Tzu’s Art of War contains exactly one sentence that has escaped the book and gone freelance on LinkedIn slides, mission statements, and consulting decks:
"Hence to fight and conquer in all your battles is not supreme excellence; supreme excellence consists in breaking the enemy’s resistance without fighting." — Sun Tzu, Ch. III, trans. Lionel Giles (1910)
It is usually quoted as if it endorsed avoidance. As if the supreme strategist were the one who never had to compete. As if the highest virtue were a polite handshake instead of a hard decision. That reading is wrong, and it is wrong in a way that flatters the reader — which is why it survives.
The line is the summary of an argument, not the argument. The argument is the four-tier hierarchy that follows it in the same chapter, and the substance is the hierarchy, not the headline.

Read in order, the hierarchy is unambiguous. In Giles’s translation of §§3-7, Sun Tzu walks the strategist down four steps. The supreme art is to attack the enemy’s plans — to defeat the strategy before it can be executed. The next-best option is to disrupt the adversary’s alliances, isolating him from the partners and resources he was counting on. The third option is to attack his army in the field, where outcomes turn on tactical execution and luck. The last resort, in Giles’s only verbatim phrase from this passage, is to "besiege walled cities" — the slowest, costliest, and most uncertain of all engagements.
The hierarchy ranks options by leverage, not by morality. Each rung down the ladder costs more, takes longer, and yields less control. To quote only the top line is to skip the engineering and keep the slogan.
What "Win Without Fighting" Is Not
Once you read the chapter as a whole, the misreadings become embarrassingly easy to catalogue. The principle is not pacifism, not weakness, not negotiation as appeasement, and not avoidance of all conflict. None of these is what Sun Tzu is recommending, and treating them as such turns a doctrine of dominance into a doctrine of retreat.

What the principle actually requires is overwhelming positional strength. You win without fighting only when the adversary, looking at the board, concludes that resistance is irrational. That conclusion does not come from your goodwill. It comes from your position — your information, your terrain, your alliances, your readiness, your reserves. Sun Tzu’s "supreme art" presupposes intelligence, positioning, and patience long before the moment of confrontation.
This is, in other words, a high-effort outcome dressed in the language of effortlessness. You cannot subdue a stronger opponent by declining to fight; you can only subdue an opponent for whom fighting you has become a losing proposition. The principle is positional dominance, not pacifism. The supreme art is to subdue the enemy without fighting — not to refuse the fight.
That distinction is what most strategy decks miss, and missing it is what produces an entire genre of "collaborative" plans that read like surrender notes.
Three Ways to Attack the Plan
In a business context, "attacking the enemy’s plans" looks far less martial than the language suggests. It looks like winning the contest before it is contested — shaping the conditions under which any future contest will be fought.
The first form is platform lock-in. When a customer’s data, workflows, integrations, and trained staff are bound up in your platform, switching is no longer a marketing question; it is an operational catastrophe. A competitor with a marginally better product cannot dislodge you, because the relevant comparison is not feature-for-feature but feature-for-feature plus the cost of leaving. Shapiro and Varian, in Information Rules (1998), describe this as the central economics of the network economy: lock-in is an asset that compounds with every additional dollar the customer invests in your ecosystem.
The second form is standards-body participation. The companies that show up to the working groups, draft the specifications, and chair the committees do not need to compete on the resulting standard — they have inscribed their assumptions into it. By the time a competitor builds against the standard, they are building inside a house someone else designed. The contest is decided before the participants are named.
The third form is regulatory engagement. Compliance regimes, certification frameworks, and licensing thresholds all create barriers that scale punishingly for new entrants. A firm that helps shape those rules does not need to win a market fight against the next entrant — it has raised the cost of entry to the point where no fight occurs. From the outside, this looks like good corporate citizenship. From the inside, it is the supreme art.
None of these is a marketing tactic. They are all forms of attacking the plan: making sure the adversary’s strategy cannot survive contact with terrain you have already shaped.
Disrupt His Alliances
The second rung of Sun Tzu’s hierarchy is the one businesses underuse most. Giles renders the second-best option as "preventing the junction of the enemy’s forces" — archaic phrasing for what we would now call breaking the adversary’s coalition before it consolidates into a coherent threat. The work is on the network the competitor depends on, not on the competitor itself.

The diagram tells the story without dramatics. In the first panel, the adversary sits at the center of an intact coalition: five allies, five live channels of supply, distribution, talent, or technology. In the second panel, three of those five edges have been cut. The adversary is still standing, but the network they were counting on is now half its former size. The competitive contest has not happened yet, and the outcome has already shifted.
Brandenburger and Nalebuff, in Co-opetition (1996), formalize the structure of these networks through their concept of complementors — the firms whose products and services make the adversary’s offering more valuable. Their analysis makes a quiet but important point: most competitive positions are held up not by the firm itself but by its web of complementors and partners. Pull a few of them away — through better terms, exclusive arrangements, talent recruitment, or simply by being the more attractive coalition partner — and the adversary’s position deteriorates without a single confrontation.
This is alliance attack, not marketing. Locking up a key distribution channel, recruiting the lead engineers from the partner firm that built the integration, or becoming the preferred partner of the standards body the adversary needs — none of these is announced as warfare. All of them are.
When You Must Fight Anyway
Sun Tzu does not promise that battle never happens. He says it should be the last resort, not that it can always be avoided. There are moments when an adversary has positioned well, when a market shifts faster than your shaping work, or when a regulatory window closes before the alliance attack lands. In those cases, you fight.
The discipline is to distinguish necessary conflict from avoidable attrition. Necessary conflict is fought from a position you have already secured — the outcome is shaped, the terrain is yours, and the engagement is the closing argument rather than the opening one. Avoidable attrition is the opposite: a fair fight, on neutral ground, against a well-prepared adversary, decided by execution and luck. Sun Tzu’s hierarchy is a warning that the second kind of fight is what happens when the first two rungs of the ladder were skipped.
Sun Tzu’s lower two tiers reward this same distinction. The third rung — attacking his army in the field — is recoverable: you choose the terrain, set the timing, and commit only the resources the engagement actually needs. A pricing campaign, a contested account, a head-to-head product launch — all are forms of meeting the adversary on terms you can still influence and disengage from. The fourth rung is different. To "besiege walled cities" is to commit yourself to dislodging an entrenched incumbent on their fortified ground, where every advantage of position belongs to them. Sieges occasionally end in victory, but they cost more than any other form of conflict and the casualty figures rarely appear in the press release. The lesson is not that you must never fight; it is that you must never volunteer to be the one outside the walls.
Friday we change doctrines. Sun Tzu’s framework is about shaping — choosing the ground, the timing, the coalition, and the contest itself. Friday’s article picks up where Sun Tzu’s clean hierarchy ends and Clausewitz begins: friction, fog, and the gap between strategy and reality. Article 5 — Clausewitz on Friction, Friday May 8.
Interactive Dashboard
Interactive Dashboard
Explore the data yourself — adjust parameters and see the results update in real time.
References
- Sun Tzu. The Art of War, Chapter III "Attack by Stratagem", translated by Lionel Giles (1910). Project Gutenberg #132. https://www.gutenberg.org/files/132/132-h/132-h.htm
- Shapiro, C. & Varian, H. R. (1998). Information Rules: A Strategic Guide to the Network Economy. Harvard Business School Press. ISBN 978-0-87584-863-1.
- Brandenburger, A. M. & Nalebuff, B. J. (1996). Co-opetition. Currency Doubleday. ISBN 978-0-385-47949-3.
Show R Code
# =============================================================================
# generate_win_without_fighting_images.R
# Charts for "Win Without Fighting: Sun Tzu's Hierarchy of Strategic Options"
# Article 4 of 15 — Strategy That Lasts series (May 2026)
# =============================================================================
#
# This article is FRAMEWORK-FIRST — there is no quantitative spine. The three
# figures are conceptual diagrams, not data charts.
#
# Output files (all bg='white', dpi=100):
# https://inphronesys.com/wp-content/uploads/2026/05/wwf_hierarchy_of_attack.png (800x600 — 4-tier strategic stack)
# https://inphronesys.com/wp-content/uploads/2026/05/wwf_options_stack.png (800x500 — IS NOT / IS comparison)
# https://inphronesys.com/wp-content/uploads/2026/05/wwf_alliance_attack.png (800x550 — 2-panel network diagram)
#
# Translation locked: GILES (1910), public-domain. Project Gutenberg #132.
# https://www.gutenberg.org/files/132/132-h/132-h.htm
# Sun Tzu accent color: #7EB8C4 (May 2026 series tag); dark variant #4A8A99.
# =============================================================================
suppressPackageStartupMessages({
library(ggplot2)
library(dplyr)
library(tidyr)
library(scales)
library(patchwork)
})
source("Scripts/theme_inphronesys.R")
# Sun Tzu series accent (matches Articles 2 & 3 of May 2026 series)
suntzu_teal <- "#7EB8C4"
suntzu_teal_dark <- "#4A8A99"
# Defensive: ensure Images/ exists
dir.create("Images", showWarnings = FALSE)
# =============================================================================
# CHART 1 — The Hierarchy of Attack (CONCEPTUAL)
# =============================================================================
# 4-tier descending stack of Sun Tzu's strategic preferences from Chapter 3.
# Tier 1 (best, top) is teal; Tier 4 (worst, bottom) is grey. The right margin
# carries a vertical "cost-of-conflict" gradient so the reader sees both the
# RANK and the WHY in a single glance.
#
# Source: Sun Tzu, The Art of War, Ch.III §§3-7, trans. Lionel Giles (1910).
# Project Gutenberg #132. https://www.gutenberg.org/files/132/132-h/132-h.htm
# =============================================================================
# Tier band geometry (top -> bottom): each tier is 1.0 unit tall.
tiers <- tibble::tribble(
~order, ~label, ~y_top, ~y_bot, ~fill, ~textcol, ~tagline,
1L, "Attack the enemy's plans", 5.0, 4.0, suntzu_teal, "white", "THE SUPREME ART",
2L, "Disrupt his alliances", 4.0, 3.0, "#A8CDD6", iph_colors$dark, "second-best",
3L, "Attack his army in the field", 3.0, 2.0, "#D6E4E7", iph_colors$dark, "third-best",
4L, "Besiege walled cities", 2.0, 1.0, iph_colors$lightgrey, iph_colors$dark, "LAST RESORT"
)
p1 <- ggplot() +
# ---- Tier rectangles (stacked top-down) ----
geom_rect(data = tiers,
aes(xmin = 1.4, xmax = 7.4,
ymin = y_bot + 0.05, ymax = y_top - 0.05,
fill = fill),
color = "white", linewidth = 1.5) +
scale_fill_identity() +
# ---- Tier label (centered in band) ----
geom_text(data = tiers,
aes(x = 4.4, y = (y_top + y_bot) / 2 + 0.18,
label = label, color = textcol),
fontface = "bold", size = 5.0, family = "Inter") +
# ---- Tier tagline (italic, smaller) ----
geom_text(data = tiers,
aes(x = 4.4, y = (y_top + y_bot) / 2 - 0.20,
label = tagline, color = textcol),
fontface = "italic", size = 3.4, family = "Inter") +
scale_color_identity() +
# ---- Tier ordinal badges (white circles to the LEFT of each band) ----
geom_point(data = tiers,
aes(x = 0.85, y = (y_top + y_bot) / 2),
shape = 21, fill = "white", color = suntzu_teal_dark,
size = 11, stroke = 1.4) +
geom_text(data = tiers,
aes(x = 0.85, y = (y_top + y_bot) / 2, label = order),
fontface = "bold", size = 5.2,
color = suntzu_teal_dark, family = "Inter") +
# ---- Right-side cost-of-conflict gradient ----
# Vertical double-arrow with two pole labels.
annotate("segment", x = 8.05, xend = 8.05, y = 1.0, yend = 5.0,
color = iph_colors$grey, linewidth = 0.6,
arrow = arrow(ends = "both",
length = unit(0.28, "cm"), type = "closed")) +
# Top pole (best)
annotate("text", x = 8.30, y = 4.85,
label = "Lower cost",
hjust = 0, size = 3.7, fontface = "bold",
color = suntzu_teal_dark, family = "Inter") +
annotate("text", x = 8.30, y = 4.55,
label = "Higher leverage",
hjust = 0, size = 3.7, fontface = "bold",
color = suntzu_teal_dark, family = "Inter") +
# Bottom pole (worst)
annotate("text", x = 8.30, y = 1.45,
label = "Higher cost",
hjust = 0, size = 3.7, fontface = "bold",
color = iph_colors$grey, family = "Inter") +
annotate("text", x = 8.30, y = 1.15,
label = "Lower leverage",
hjust = 0, size = 3.7, fontface = "bold",
color = iph_colors$grey, family = "Inter") +
scale_x_continuous(limits = c(0.0, 10.5), expand = c(0, 0)) +
scale_y_continuous(limits = c(0.4, 5.6), expand = c(0, 0)) +
coord_cartesian(clip = "off") +
labs(
title = "Sun Tzu's Hierarchy of Attack",
subtitle = "Sun Tzu's strategic options stack — Chapter 3",
caption = paste(
"After Sun Tzu, The Art of War, Ch.III, trans. Lionel Giles (1910). Tier labels summarised from §§3-7. Project Gutenberg #132.",
"Full text: gutenberg.org/files/132/132-h/132-h.htm",
sep = "\n"
)
) +
theme_inphronesys(grid = "none") +
theme(
axis.title = element_blank(),
axis.text = element_blank(),
panel.grid = element_blank(),
plot.margin = margin(15, 20, 10, 15)
)
ggsave("https://inphronesys.com/wp-content/uploads/2026/05/wwf_hierarchy_of_attack.png", p1,
width = 8, height = 6, dpi = 100, bg = "white")
message("Wrote https://inphronesys.com/wp-content/uploads/2026/05/wwf_hierarchy_of_attack.png (target 800x600)")
# =============================================================================
# CHART 2 — What "Win Without Fighting" Is / Is Not (CONCEPTUAL)
# =============================================================================
# Two-column comparison. Left column (greyed, with X markers) lists the common
# misreadings of the principle. Right column (teal, with check markers) lists
# what the principle actually requires. Editorial frame, no data.
# =============================================================================
is_not_items <- c(
"Pacifism",
"Weakness",
"Negotiation as appeasement",
"Avoiding all conflict"
)
is_items <- c(
"Overwhelming positional strength",
"Raising the cost of opposition",
"Making conflict irrational for the adversary",
"Presupposes intelligence + positioning + patience"
)
n <- length(is_not_items) # 4 rows
y_pos <- seq(from = 3.6, to = 1.0, length.out = n)
is_not_df <- data.frame(x = 2.5, y = y_pos, label = is_not_items)
is_df <- data.frame(x = 7.5, y = y_pos, label = is_items)
p2 <- ggplot() +
# ---- Column header bands ----
annotate("rect", xmin = 0.5, xmax = 4.5, ymin = 4.4, ymax = 5.0,
fill = iph_colors$lightgrey, color = NA) +
annotate("rect", xmin = 5.5, xmax = 9.5, ymin = 4.4, ymax = 5.0,
fill = suntzu_teal_dark, color = NA) +
# ---- Column header markers (geom_point shapes — font-agnostic) ----
annotate("point", x = 1.4, y = 4.7,
shape = 4, color = iph_colors$grey, size = 6, stroke = 1.6) +
annotate("point", x = 6.4, y = 4.7,
shape = 16, color = "white", size = 5) +
# ---- Column header text ----
annotate("text", x = 2.6, y = 4.7, label = "IS NOT",
fontface = "bold", size = 5.2,
color = iph_colors$grey, family = "Inter", hjust = 0.5) +
annotate("text", x = 7.6, y = 4.7, label = "IS",
fontface = "bold", size = 5.2,
color = "white", family = "Inter", hjust = 0.5) +
# ---- IS NOT bullets: X-marker + greyed italic text ----
geom_point(data = is_not_df,
aes(x = x - 1.7, y = y),
shape = 4, color = iph_colors$grey,
size = 4.5, stroke = 1.4) +
geom_text(data = is_not_df,
aes(x = x - 1.4, y = y, label = label),
color = iph_colors$grey, size = 4.0,
fontface = "italic", family = "Inter", hjust = 0) +
# ---- IS bullets: filled teal dot + bold teal text ----
geom_point(data = is_df,
aes(x = x - 2.4, y = y),
shape = 16, color = suntzu_teal_dark, size = 3.8) +
geom_text(data = is_df,
aes(x = x - 2.2, y = y, label = label),
color = suntzu_teal_dark, size = 4.0,
fontface = "bold", family = "Inter", hjust = 0) +
# ---- Vertical separator between columns ----
annotate("segment", x = 5.0, xend = 5.0, y = 0.5, yend = 4.4,
color = iph_colors$lightgrey, linewidth = 0.5, linetype = "11") +
# ---- Bottom editorial note ----
annotate("text", x = 5.0, y = 0.35,
label = "The principle is positional dominance, not pacifism.",
fontface = "italic", size = 3.6,
color = iph_colors$grey, family = "Inter") +
scale_x_continuous(limits = c(0.0, 10.0), expand = c(0, 0)) +
scale_y_continuous(limits = c(0.0, 5.5), expand = c(0, 0)) +
coord_cartesian(clip = "off") +
labs(
title = "What “Win Without Fighting” Is Not.",
subtitle = "The supreme art is to subdue the enemy without fighting — not to refuse the fight."
) +
theme_inphronesys(grid = "none") +
theme(
axis.title = element_blank(),
axis.text = element_blank(),
panel.grid = element_blank(),
plot.margin = margin(15, 15, 10, 15)
)
ggsave("https://inphronesys.com/wp-content/uploads/2026/05/wwf_options_stack.png", p2,
width = 8, height = 5, dpi = 100, bg = "white")
message("Wrote https://inphronesys.com/wp-content/uploads/2026/05/wwf_options_stack.png (target 800x500)")
# =============================================================================
# CHART 3 — Disrupting the Adversary's Alliances (CONCEPTUAL)
# =============================================================================
# Two-panel before/after network diagram showing Sun Tzu's second-best option:
# disrupt his alliances. Pure ggplot2 + patchwork (no igraph).
#
# Layout: hub-and-spoke. Adversary in the center, 5 allies arranged in an arc
# on the right side of the adversary, "You" on the left.
#
# Panel A: all 5 alliance edges intact (teal).
# Panel B: 3 of the 5 edges severed (Allies 1, 3, 5) — drawn dashed grey with
# a red X mark at the break. Severed allies become greyed-out nodes.
#
# Source: Sun Tzu, The Art of War, Ch.III §3, trans. Lionel Giles (1910).
# Project Gutenberg #132. https://www.gutenberg.org/files/132/132-h/132-h.htm
# =============================================================================
# ---- Node positions ----
adv <- data.frame(x = 4.0, y = 4.0, label = "ADVERSARY")
you <- data.frame(x = 0.5, y = 4.0, label = "YOU")
# 5 allies arranged in an arc on the right hemisphere of the adversary
ally_angles <- c(-60, -30, 0, 30, 60) * pi / 180
allies <- data.frame(
x = adv$x + 2.5 * cos(ally_angles),
y = adv$y + 2.5 * sin(ally_angles),
label = c("Ally 1", "Ally 2", "Ally 3", "Ally 4", "Ally 5"),
id = 1:5
)
# Adversary -> ally edges (5 of them)
edges_adv_ally <- data.frame(
x = adv$x, y = adv$y,
xend = allies$x, yend = allies$y,
id = 1:5
)
# You -> adversary line (illustrative, present in both panels)
edge_you_adv <- data.frame(x = you$x, y = you$y, xend = adv$x, yend = adv$y)
# In Panel B, edges 1, 3, 5 are severed
severed_ids <- c(1, 3, 5)
retained_ids <- setdiff(1:5, severed_ids)
# X-mark midpoints for severed edges
sev_breaks <- data.frame(
x = (edges_adv_ally$x[severed_ids] + edges_adv_ally$xend[severed_ids]) / 2,
y = (edges_adv_ally$y[severed_ids] + edges_adv_ally$yend[severed_ids]) / 2
)
allies_severed <- allies[allies$id %in% severed_ids, ]
allies_retained <- allies[allies$id %in% retained_ids, ]
edges_severed <- edges_adv_ally[edges_adv_ally$id %in% severed_ids, ]
edges_retained <- edges_adv_ally[edges_adv_ally$id %in% retained_ids, ]
# Reusable plot scaffold ----------------------------------------------------
panel_scaffold <- function(panel_title) {
list(
scale_x_continuous(limits = c(-0.8, 7.5), expand = c(0, 0)),
scale_y_continuous(limits = c(0.8, 7.5), expand = c(0, 0)),
coord_fixed(clip = "off"),
labs(subtitle = panel_title),
theme_inphronesys(grid = "none"),
theme(
axis.title = element_blank(),
axis.text = element_blank(),
panel.grid = element_blank(),
plot.subtitle = element_text(face = "bold", size = 12,
color = iph_colors$dark, hjust = 0.5,
margin = margin(b = 6)),
plot.margin = margin(8, 6, 8, 6)
)
)
}
# ---- Panel A: intact coalition ----
pA <- ggplot() +
# Adversary -> ally edges (all teal, solid)
geom_segment(data = edges_adv_ally,
aes(x = x, y = y, xend = xend, yend = yend),
color = suntzu_teal, linewidth = 1.0) +
# You -> adversary (illustrative; light dashed grey)
geom_segment(data = edge_you_adv,
aes(x = x, y = y, xend = xend, yend = yend),
color = iph_colors$grey, linewidth = 0.6, linetype = "12") +
# Allies (teal nodes)
geom_point(data = allies, aes(x = x, y = y),
shape = 21, fill = suntzu_teal, color = suntzu_teal_dark,
size = 7, stroke = 1.0) +
geom_text(data = allies,
aes(x = x + 0.45, y = y, label = label),
size = 3.2, hjust = 0,
color = iph_colors$dark, family = "Inter") +
# Adversary (dark teal hub)
geom_point(data = adv, aes(x = x, y = y),
shape = 21, fill = suntzu_teal_dark, color = iph_colors$dark,
size = 13, stroke = 1.0) +
geom_text(data = adv,
aes(x = x, y = y - 0.65, label = label),
size = 3.5, fontface = "bold",
color = iph_colors$dark, family = "Inter") +
# You (light grey node)
geom_point(data = you, aes(x = x, y = y),
shape = 21, fill = iph_colors$lightgrey, color = iph_colors$grey,
size = 10, stroke = 1.0) +
geom_text(data = you,
aes(x = x, y = y - 0.65, label = label),
size = 3.5, fontface = "bold",
color = iph_colors$dark, family = "Inter") +
panel_scaffold("Adversary's coalition: intact")
# ---- Panel B: 3 of 5 alliance edges severed ----
pB <- ggplot() +
# Severed edges (dashed light grey)
geom_segment(data = edges_severed,
aes(x = x, y = y, xend = xend, yend = yend),
color = "#cccccc", linewidth = 0.8, linetype = "12") +
# Retained edges (teal, solid)
geom_segment(data = edges_retained,
aes(x = x, y = y, xend = xend, yend = yend),
color = suntzu_teal, linewidth = 1.0) +
# You -> adversary (still illustrative)
geom_segment(data = edge_you_adv,
aes(x = x, y = y, xend = xend, yend = yend),
color = iph_colors$grey, linewidth = 0.6, linetype = "12") +
# Severed-edge X marks (red, editorial signal)
geom_point(data = sev_breaks, aes(x = x, y = y),
shape = 4, color = iph_colors$red, size = 5, stroke = 1.6) +
# Severed allies (greyed out, hollow)
geom_point(data = allies_severed, aes(x = x, y = y),
shape = 21, fill = "white", color = "#cccccc",
size = 7, stroke = 1.0) +
geom_text(data = allies_severed,
aes(x = x + 0.45, y = y, label = label),
size = 3.2, hjust = 0,
color = iph_colors$grey, family = "Inter") +
# Retained allies (still teal)
geom_point(data = allies_retained, aes(x = x, y = y),
shape = 21, fill = suntzu_teal, color = suntzu_teal_dark,
size = 7, stroke = 1.0) +
geom_text(data = allies_retained,
aes(x = x + 0.45, y = y, label = label),
size = 3.2, hjust = 0,
color = iph_colors$dark, family = "Inter") +
# Adversary (still hub, but isolated)
geom_point(data = adv, aes(x = x, y = y),
shape = 21, fill = suntzu_teal_dark, color = iph_colors$dark,
size = 13, stroke = 1.0) +
geom_text(data = adv,
aes(x = x, y = y - 0.65, label = label),
size = 3.5, fontface = "bold",
color = iph_colors$dark, family = "Inter") +
# You
geom_point(data = you, aes(x = x, y = y),
shape = 21, fill = iph_colors$lightgrey, color = iph_colors$grey,
size = 10, stroke = 1.0) +
geom_text(data = you,
aes(x = x, y = y - 0.65, label = label),
size = 3.5, fontface = "bold",
color = iph_colors$dark, family = "Inter") +
panel_scaffold("After the alliance attack: fragmented")
# ---- Compose with patchwork ----
p3 <- (pA | pB) +
plot_annotation(
title = "Disrupting the Adversary's Alliances",
subtitle = "The second-best strategic option: disrupt his alliances (Ch. 3)",
caption = paste(
"Source: Sun Tzu, The Art of War, Ch.III §3, trans. Lionel Giles (1910). Project Gutenberg #132.",
"Full text: gutenberg.org/files/132/132-h/132-h.htm",
sep = "\n"
),
theme = theme_inphronesys(grid = "none") +
theme(
plot.title = element_text(face = "bold", size = 15,
color = iph_colors$dark,
margin = margin(b = 4)),
plot.subtitle = element_text(size = 12,
color = iph_colors$grey,
margin = margin(b = 12)),
plot.caption = element_text(size = 9,
color = iph_colors$grey,
hjust = 0,
margin = margin(t = 8),
lineheight = 1.3),
plot.margin = margin(15, 15, 10, 15)
)
)
ggsave("https://inphronesys.com/wp-content/uploads/2026/05/wwf_alliance_attack.png", p3,
width = 8, height = 5.5, dpi = 100, bg = "white")
message("Wrote https://inphronesys.com/wp-content/uploads/2026/05/wwf_alliance_attack.png (target 800x550)")
# =============================================================================
# Confirmation output
# =============================================================================
message("\n=== Win Without Fighting images generated ===")
message("https://inphronesys.com/wp-content/uploads/2026/05/wwf_hierarchy_of_attack.png (CONCEPTUAL: 4-tier strategic stack)")
message("https://inphronesys.com/wp-content/uploads/2026/05/wwf_options_stack.png (CONCEPTUAL: IS NOT / IS comparison)")
message("https://inphronesys.com/wp-content/uploads/2026/05/wwf_alliance_attack.png (CONCEPTUAL: 2-panel network diagram)")
message("Translation: Lionel Giles (1910), Project Gutenberg #132.")

Schreibe einen Kommentar