
Eu fiz o seguinteQuadrado de Eisenhower (ou matriz)inspirado nissoresposta fantástica:
Eu gostaria que o meu fosse muito mais eficiente em termos de espaço: tamanho de texto/caixas de seleção menores, bordas mais finas, sem espaço/margem/medianiz entre quadrados, sem linhas horizontais dentro de quadrados,
etc. tamanho que o texto do item da lista de verificação deve ter.
Mas depois de muitos ajustes, ainda não consigo alterar as seguintes propriedades:
- Fronteiras
- Torne as bordas ultrafinas (1 px seria suficiente)
- Itens/caixas da lista de verificação
- Remover linhas horizontais
- Faça a verificação
\Box
de cada item da lista de verificação menor e/ou dimensionada com texto - Torna os itens mais apertados/mais próximos verticalmente?
label
texto- Alinhado ao centro na borda esquerda/superior de quadrados individuais
Abaixo está meu documento:
main.tex
\documentclass[english]{book}
\usepackage{amssymb, tikz}
\usetikzlibrary{shapes.multipart, positioning, fit, backgrounds}
...
% \eisenbox: for making each box of an Eisenhower square
\newcommand{\eisenbox}[6][] {
\node [rectangle split,rectangle split parts={#6}, fill=white,
text width=5.25cm,align=left,text=#2,draw,sharp corners,draw=#2,
#1]
(multi-#3)
{\strut$\Box$\nodepart{two}\strut$\Box$\nodepart{three}\strut$\Box$\nodepart{four}\strut$\Box$
\nodepart{five}\strut$\Box$\nodepart{six}\strut$\Box$\nodepart{seven}\strut$\Box$
\nodepart{eight}\strut$\Box$\nodepart{nine}\strut$\Box$\nodepart{ten}\strut$\Box$};
\node[left=1pt of multi-#3.south west,anchor=south west,rotate=90,text=black]
(label-#3) {#5};
\begin{scope}[on background layer]
\node[fit=(multi-#3),fill=#2,sharp corners,
label={[text=#2,anchor=south west,font=\bfseries]above left:#4}] (fit-#3){};
\end{scope}
}
% \eisensquare: creates a fancy Eisenhower square
\newcommand{\eisensquare}[1] {
\eisenbox{black}{tl}{\footnotesize Urgent}{\footnotesize Important}{#1}
\eisenbox[right=0.2cm of multi-tl]{black}{tr}{\footnotesize Not Urgent}{}{#1}
\eisenbox[below=0.2cm of multi-tl]{black}{bl}{}{\footnotesize Not Important}{#1}
\eisenbox[right=0.2cm of multi-bl]{black}{br}{}{}{#1}
}
...
\begin{document}
\frontmatter
\maketitle
...
\mainmatter
...
\subfile{./folder/subfile.tex}
\backmatter
\end{document}
subfile.tex
\documentclass[../main.tex]{subfiles}
\begin{document}
...
\paragraph{Foo}\mbox{}\\
\begin{tikzpicture}[font=\sffamily]
\eisensquare{7}
\end{tikzpicture}
...
\end{document}
Não tenho certeza do que estou fazendo de errado. tikz
ignora/lança um erro onde quer que eu coloque o width
, line width
, etc. em qualquer lugar dentro \node [options]
do \eisenbox
.
Eu sou completamente novo em pgf
/tikz
, então qualquer informação seria muito apreciada.
ConformeGernot resposta exemplarEstou quase conseguindo. Tudo o que resta é a modificação do número variável de itens por “quadrante”. Normalmente eu nunca seria tão específico, não fosse pelo fato de que usarei isso todos os dias por muito tempo.
Como alguém faria linhas em branco/vazias para quando as linhas restantes > número de itens?
main.tex
\newcommand\eisenlabel[1]{{\footnotesize\sffamily#1}}
% arguments: 1st is total # lines, 2nd is # items
\newcommand{\eisenbox}[2]{\fbox{%
\begin{tabular}{l}
\multido{}{#1}{%
\makebox[0.44\textwidth][l]{$\square$} %adding \\ here makes errors, but I believe its absence is FUBARing the table
}
\end{tabular}%
}}
% first argument: max lines, then items per quadrant starting with urgent+important
% could do this without 1st arg by determining largest value
% but not familiar enough with this so we'll just supply it manually (for now)
\newcommand{\eisensquare}[5] {%
\fboxrule=0.1ex% <<< adjust line width
\begin{tabular}{@{}r@{\hspace{0.3em}}c@{\hspace{-\fboxrule}}c@{}} % <<< adjust distance between rotated labels and box
& \eisenlabel{urgent} & \eisenlabel{not urgent} \\
\turnbox{90}{\makebox[0pt]{\eisenlabel{important}}}
& \eisenbox{#1}{#2} & \eisenbox{#1}{#3} \\[-\fboxrule]
\turnbox{90}{\makebox[0pt]{\eisenlabel{not important}}}
& \eisenbox{#1}{#4} & \eisenbox{#1}{#5}
\end{tabular}%
}
subfile.tex
\(\eisensquare{5}{3}{4}{5}{3}\)
Responder1
Aqui está uma solução flexível. Como \multido
não funciona bem em um tabular
, usei comandos ainda mais básicos. O comando de nível superior é
\eisensquare{height of single box}{width of single box}{top left}{top right}{bottom left}{bottom right}
height
e width
podem ser dimensões absolutas ou múltiplos de comprimentos como \baselineskip
(altura de uma linha) ou \textwidth
.
\documentclass{article}
\usepackage{amssymb,rotating,multido}
% \eisenlabel{width}{label}
\newcommand\eisenlabel[2]{\makebox[#1]{\footnotesize\sffamily#2}}
% \veisenlabel{height}{label}
\newcommand\veisenlabel[2]{\turnbox{90}{\eisenlabel{#1}{#2}}\ }
% \eisenbox{height}{width}{number of items}
\newcommand\eisenbox[3]{\fbox{%
\vbox to #1{%
\multido{}{#3}{\hbox to #2{$\square$\hfill}}%
\vfill
}%
}}
% \eisensquare{height of single box}{width of single box}{top left}{top right}{bottom left}{bottom right}
\newcommand\eisensquare[6]{{%
\fboxrule=0.1ex%
\vbox{%
\hbox{\ \eisenlabel{#2}{urgent}\ \eisenlabel{#2}{not urgent}}%
\hbox{\veisenlabel{#1}{important}\eisenbox{#1}{#2}{#3}\hspace{-\fboxrule}\eisenbox{#1}{#2}{#4}}%
\nointerlineskip
\vspace{-\fboxrule}%
\hbox{\veisenlabel{#1}{not important}\eisenbox{#1}{#2}{#5}\hspace{-\fboxrule}\eisenbox{#1}{#2}{#6}}%
}}}
\begin{document}
\noindent
\eisensquare{5\baselineskip}{0.4\textwidth}{3}{4}{5}{3}
\noindent
\eisensquare{2cm}{5cm}{3}{4}{5}{3}
\end{document}
Responder2
Tikz é um pacote maravilhoso, mas para um design tão simples sugiro usar tabelas. Pode ser mais aparente onde modificar a aparência.
Sugiro usar em
ou ex
como unidades de comprimento, pois elas mudam com o tamanho da fonte. No código marquei os locais onde ajustar a largura das caixas, a largura da linha e a distância dos rótulos verticais.
\documentclass{article}
\usepackage{amssymb,rotating}
\newcommand\eisenlabel[1]{{\footnotesize\sffamily#1}}
\newcommand\eisenline{\makebox[0.44\textwidth][l]{$\square$}}% <<< adjust width of boxes
\newcommand\eisenbox{\fbox{%
\begin{tabular}{l}
\eisenline\\
\eisenline\\
\eisenline\\
\eisenline\\
\eisenline\\
\eisenline\\
\eisenline
\end{tabular}%
}}
\newcommand\eisensquare{{%
\fboxrule=0.1ex% <<< adjust line width
\begin{tabular}{@{}r@{\hspace{0.3em}}c@{\hspace{-\fboxrule}}c@{}} % <<< adjust distance between rotated labels and box
& \eisenlabel{urgent} & \eisenlabel{not urgent} \\
\turnbox{90}{\makebox[0pt]{\eisenlabel{important}}}
& \eisenbox & \eisenbox \\[-\fboxrule]
\turnbox{90}{\makebox[0pt]{\eisenlabel{not important}}}
& \eisenbox & \eisenbox
\end{tabular}%
}}
\begin{document}
\noindent
\eisensquare
\end{document}