Настройка глобальных параметров tikz напрямую, а не внутри стиля «каждая картинка»

Настройка глобальных параметров tikz напрямую, а не внутри стиля «каждая картинка»

В руководстве TikZ & PGF для версии 3.0.1a в описании стиля /tikz/every pictureна стр. 125 указано:

не следует использовать \tikzsetдля задания параметров напрямую. Например, если вы хотите использовать ширину линии 1ptпо умолчанию, не пытайтесь сказать \tikzset{line width=1pt}в начале документа. Это не сработает, так как ширина линии меняется во многих местах. Вместо этого скажите

\tikzset{каждая картинка/.style={ширина линии=1pt}}

Это даст желаемый эффект.

Почему тот факт, что ширина линии изменяется во многих местах, влияет на прямой параметр, но не на тот же параметр внутри стиля?

решение1

TikZ устанавливает аргумент по умолчанию в начале каждогокартина. Он использует преимущества поведения TeXничего не удаляется, а только перезаписывается.

Таким образом, при настройке изображения TikZ он также устанавливает ширину линии, цвет по умолчанию и т. д., а ближе к концу инициализации он выполняет every ...ключи.

Так что очень грубо получается

\tikzset{ line width = 0.3 pt,
          line join = miter, 
          ...,
          every picture, 
          every path,
          every node
          every label
          ...
          }

(Я просто предполагаю порядок, я его вообще не проверял).

Итак, существует порядок ключей every ..., и если какой-либо из них содержит line widthключ, он перезапишет предыдущие, и об этом говорится.

Но если установить его только один раз, он всегда будет перезаписан множеством других ключей.

Связанный контент