diff options
author | Karl Berry <karl@freefriends.org> | 2013-05-02 21:47:19 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-05-02 21:47:19 +0000 |
commit | ec14d89f021dfd980cdfa7d093dff1030c8abc1f (patch) | |
tree | 19af02b6b0c13ceb30a7bf286b80cc153816c6d8 /Master/texmf-dist/doc/generic/dcpic/manDCPiCpt.tex | |
parent | 7c33bd298b907ca27ef2ffb207f127054fa08e71 (diff) |
dcpic (2may13)
git-svn-id: svn://tug.org/texlive/trunk@30206 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/generic/dcpic/manDCPiCpt.tex')
-rw-r--r-- | Master/texmf-dist/doc/generic/dcpic/manDCPiCpt.tex | 846 |
1 files changed, 846 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/dcpic/manDCPiCpt.tex b/Master/texmf-dist/doc/generic/dcpic/manDCPiCpt.tex new file mode 100644 index 00000000000..01e86498105 --- /dev/null +++ b/Master/texmf-dist/doc/generic/dcpic/manDCPiCpt.tex @@ -0,0 +1,846 @@ +% $Id: manDCPiCpt.tex 13 2013-04-21 15:28:45Z pedro $ +\documentclass[a4paper,11pt]{article} +\usepackage{a4wide} +\usepackage[portuguese]{babel} +\usepackage{ae} % Virtual fonts for PDF-files with T1 encoded CMR-fonts. +\usepackage[T1]{fontenc} +\usepackage[utf8x]{inputenc} +\usepackage{dcpic,pictex} +\usepackage{alltt} +\usepackage{verbatim} +\usepackage{longtable} +\usepackage{svn-multi} +\usepackage{listings} +\usepackage{url} + +\svnidlong +{$HeadURL: svn+ssh://gentzen.mat.uc.pt/var/lib/svn/DCPiC/CTAN5.0/manDCPiCpt.tex $} +{$LastChangedDate: 2013-05-01 19:49:49 +0100 (Qua, 01 Mai 2013) $} +{$LastChangedRevision: 15 $} +{$LastChangedBy: pedro $} + +\svnid{$Id: manDCPiCpt.tex 13 2013-04-21 15:28:45Z pedro $} + +\newcommand{\docversion}{\svnyear/\svnmonth/\svnday\ (v\svnrev)} + +\def\dcpicversion{v5.0.0} + +\lstset{language=TeX, + frame = single, + morekeywords={begindc,enddc,cmor,pup,commdiag,undigraph,digraph,cdigraph,cundigraph,obj,mor,pleft,pup,pdown,pright,north,northeast,east,southeast,south,southwest,west,northwest,atright,atleft,solidarrow,dashArrow,dotArrow,solidline,dashline,dotline,injectionarrow,aplicationarrow,surjectivearrow,equalline,doublearrow,doubleopposite,nullarrow}, + basicstyle=\scriptsize} + + +\title{DCpic (5.0) --- Manual de Utilização\\ +\docversion} + +\author{Pedro Quaresma\\ CISUC/Departamento de Matemática, + Universidade de Coimbra\\ 3001-454 COIMBRA, PORTUGAL\\ + \url{pedro@mat.uc.pt}\quad phone: +351-239~791~137\quad fax: + +351-239~832~568} + +\date{2013/05/01} + +\begin{document} + +\maketitle + +\begin{abstract} + O {\em DCpic\/} é um conjunto de comandos para a escrita de grafos, + para tal desenvolveu-se um conjunto de comandos, com uma sintaxe + simples, que permite a construção de quase todo o tipo de grafos. + + Originalmente o {\em DCpic\/} ({\bf D}iagramas {\bf C}omutativos + utilizando o {\bf PiC}TeX) foi concebido para a construção de + diagramas comutativos tal como são usados em Teoria das + Categorias~\cite{Herrlich73,Pierce98}, temos então grafos etiquetados + e com elementos nos nós. A partir da versão 4.0 o conjunto de + comandos foi alterada de forma a considerar-se também a construção de + grafos dirigidos, e grafos não dirigidos. A forma de os especificar + recorre à colocação dos diferentes objectos (nós e arestas) num dado + referencial ortonormado, + + O {\em DCpic} está baseado no \PiCTeX\ necessitando deste para poder + ser usado. +\end{abstract} + +\vfill +\begin{quotation} +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3 +of this license or (at your option) any later version. +The latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of LaTeX +version 2005/12/01 or later. +This work has the LPPL maintenance status `maintained'. + +The Current Maintainer of this work is Pedro Quaresma (\url{pedro@mat.uc.pt}). + +This work consists of the files dcpic.sty. +\end{quotation} + +\vspace*{2cm} +\noindent Coimbra, 2013/04/21\\ +Pedro Quaresma + +\pagebreak +\section{Hist\'oria} + +\begin{description} +\item[11/1990 - versão 1.0] +\item[10/1991 - versão 1.1] +\item[9/1993 - versão 1.2:] argumento ``distância entre as + extremidades da seta e os objectos'' passou a ser opcional; uma nova + opção para as ``setas'' (opção 3). +\item[2/3/1995 - versão 1.3:] foi acrescentado o tipo de seta de + aplicação (opção 4) a distância da etiqueta + à seta respectiva passou a ser fixa (10 unidades de medida). + +\item[15/7/1996 - vers\~ao 2.1:] o comando {\tt mor} passou a ter uma + sintaxe distinta. Os parâmetros 5 e 6 passaram a ser a + distância entre os objectos e os extremos da seta o + parâmetro 7 é o nome do morfismo e os parâmetros 8 e 9, + colocação do morfismo e tipo de morfismo passaram a ser + opcionais. + +\item[5/2001 - versão 3.0:] implementação do comando + {\tt cmor} baseado no comando de desenho de curvas quadráticas pelo + \PiCTeX. + +\item[11/2001 - versão 3.1:] modificação das pontas das + setas de forma a estas ficarem semelhantes às setas + (símbolos) dos TeX. + +\item[1/2002 - versão 3.2:] modificação dos comandos {\tt obj} + e {\tt mor} de forma a introduzir a especificação lógica + dos morfismos, isto é, passa-se a dizer qual é o objecto de + partida e/ou o objecto de chegada em vez de ter de especificar o + morfismo em termos de coordenadas. Por outro lado o tamanho das + setas passa a ser ajustado automaticamente em relação ao + tamanho dos objectos. + +\item[5/2002 - vers\~ao 4.0:] {\bf vers\~ao incompatível com as + anteriores}. Modificação dos comandos {\tt begindc} e {\tt obj}. O + primeiro passou a ter um argumento (obrigat\'orio) que nos + permite especificar o tipo de grafo que estamos a querer + especificar: + \begin{itemize} + \item {\tt commdiag} (0), para diagramas comutativos; + \item {\tt digraph} (1), para grafos orientados; + \item {\tt undigraph} (2), para grafos n\~ao orientados. + \end{itemize} + + O comando {\tt obj} modificou a sua sintaxe passou a ter um (após a + especifica\c c\~ao das coordenadas, um argumento opcional, um argumento + obrigat\'orio, e um argumento opcional. O primeiro argumento opcional + d\'a-nos a etiqueta que serve como refer\^encia para a especifica\c c\~ao dos + morfismos, na sua aus\^encia usa-se o argumento obrigat\'orio para esse + efeito, o argumento obrigat\'orio d\'a-nos o ``conte\'udo'' do objecto, nos + diagramas comutativos \'e centrado no ponto dado pelas coordenadas + sendo o argumento seguinte simplesmente ignorado, nos grafos o + ``conte\'udo'' \'e colocado numa posi\c c\~ao a norte, a noroeste, a este, \ldots, + sendo que a posi\c c\~ao concreta \'e especificada pelo \'ultimo dos + argumentos deste comando, o valor por omiss\~ao \'e o {\tt norte}. + +\item[3/2003 - vers\~ao 4.1:] a pedido de Jon Barker \url{<jeb1@soton.ac.uk>} + criei um novo tipo de seta, a seta de sobrejec\c c\~ao. Para j\'a a dupla + seta s\'o fica bem nas setas horizontais ou verticais. + +\item[12/2004 - vers\~ao 4.1.1:] nova vers\~ao das setas de sobrejec\c c\~ao que + corrigue completamente os problemas da solu\c c\~ao anterior. + +\item[3/2007 - vers\~ao 4.2:] acrescenta a directiva + ``providespackage''. Acrescenta linhas a ponteado e a tracejado. + +\item[5/2008 - vers\~ao 4.2.1:] apaga alguns contadores para tentar + diminuir o excessivo uso dos mesmos por parte do PiCTeX. + +\item[8/2008 - vers\~ao 4.3:] gra\c cas a Ruben Debeerst + \url{<debeerst@mathematik.uni-kassel.de>}, acrescentei uma nova + ``seta'' a ``equalline''. Ap\'os isso decidi tamb\'em acrescentar + setas duplas, com o mesmo ou diferentes sentidos. Acrescentou-se + também a seta nula, isto é, sem representação gráfica, a qual pode + ser usada para acrescentar etiquetas a outras ``setas''. + +\item[12/2008 - version 4.3.1:] para evitar conflitos com outros + pacotes o comando ``id'' \'e internalizado. O comando ``dasharrow'' \'e + modificado para ``dashArrow'' para evitar um conflito com o AMSTeX. + +\item[12/2009 - version 4.3.2:] para evitar um conflito com o pacote + ``hyperref'' mudou-se o contador ``d'' para ``deuc'', aproveitei e + mudei os contadores ``x'' e ``y'' para ``xO'' e ``yO'' + +\item[4/2013 - version 4.4.0:] graças a Xingliang Liang + \url{jkl9543@gmail.com>} acrescentou-se uma nova seta ``dotarrow''. + +\item[4/2013 - version 5.0:] {\bf uma nova unidade para o sistema de + coordenadas}, 1/10 da anterior. Esta nova unidade permite + corriguir um problema com a construção das setas duplas, além de + permitir uma especificação mais fina dos diagramas. +\end{description} + +\section{Introdução} + +O conjunto de comandos {\em DCpic} é um conjunto de comandos +\TeX~\cite{Knuth86} dedicado à escrita de diagramas tal como são +usados em Teoria das Categorias~\cite{Herrlich73,Pierce98}, assim como +de grafos dirigidos e não dirigidos~\cite{Harary72}. + +Pretendeu-se com a sua escrita ter uma forma simples de especificar +grafos, fazendo-o através da especificação de um conjunto de +``objectos'' (nós do grafo) colocados num dado referencial +ortonormado, e através de um conjuntos de morfismos (arestas) que os +são posicionados explicitamente no referido referencial, ou então, +a são posição é dada especificando qual é o seu nó de +partida e qual é o seu nó de chegada. + +O gráfico em si é construído recorrendo aos comandos gráficos +do \PiCTeX. + +\section{Utilização} + +Antes de mais é necessário carregar os dois conjuntos de comandos +acima referidos, no caso de um documento \LaTeX~\cite{Lamport94} isso +pode ser feito com o seguinte comando (no preâmbulo). + +\begin{verbatim} +\usepackage{dcpic,pictex} +\end{verbatim} + +Nos outros formatos ter-se-á de usar um comando equivalente. Após +isso os diagramas podem ser escritos através dos comandos +disponibilizados pelo {\em DCpic}. Por exemplo, os comandos: + + +\begin{lstlisting} +\begindc{\commdiag}[200] + \obj(1,4){$A^B$} + \obj(1,1){$C$} + \obj(3,4){$A$} + \obj(3,1){$C\times{}B$} + \obj(6,4){$A^B\times{}B$} + \mor{$C$}{$A^B$}{$f$} + \mor{$C\times{}B$}{$A$}{$\bar f$}[\atleft,\dashArrow] + \mor{$A^B\times{}B$}{$A$}{$ev$}[\atright,\solidarrow] + \mor{$C\times{}B$}{$A^B\times{}B$}{$f\times{}id$}[\atright,\solidarrow] +\enddc +\end{lstlisting} + +produzem o seguinte diagrama: + +$$ +\begindc{\commdiag}[200] + \obj(1,4){$A^B$} + \obj(1,1){$C$} + \obj(3,4){$A$} + \obj(3,1){$C\times{}B$} + \obj(6,4){$A^B\times{}B$} + \mor{$C$}{$A^B$}{$f$} + \mor{$C\times{}B$}{$A$}{$\bar f$}[\atleft,\dashArrow] + \mor{$A^B\times{}B$}{$A$}{$ev$}[\atright,\solidarrow] + \mor{$C\times{}B$}{$A^B\times{}B$}{$f\times{}id$}[\atright,\solidarrow] +\enddc +$$ + +O meio ambiente {\tt begindc}, {\tt enddc} permite-nos construir um +grafo por colocação dos objectos num referencial ortonormado tendo +a origem em (0,0). As arestas (morfismos) vão ligar pares de nós +(objectos) entre si. + +\section{Comandos Disponíveis} + +De seguida apresenta-se a descrição dos comandos, a sua sintaxe e +a sua funcionalidade. Os argumentos entre parêntesis rectos são +opcionais. + +\begin{description} +\item[\tt $\backslash$begindc\{\#1\}[\#2\mbox{]}] -- entrada no ambiente de + escrita de grafos: + + \begin{tabular}{r@{ -- }l} + {\tt \#1} & tipo de grafo\\ + \multicolumn{2}{l}{\quad $0\equiv\backslash$commdiag, diagrama comutativo;}\\ + \multicolumn{2}{l}{\quad $1\equiv\backslash$digraph, grafo orientado;}\\ + \multicolumn{2}{l}{\quad $2\equiv\backslash$undigraph, grafo não orientado;}\\ + \multicolumn{2}{l}{\quad $3\equiv\backslash$cdigraph, grafo orientado, com + objectos circunscritos;}\\ + \multicolumn{2}{l}{\quad $4\equiv\backslash$cundigraph, grafo não orientado, + com objectos circunscritos.}\\ + {\tt \#2} & factor de escala (opcional)\\ + \multicolumn{2}{l}{\quad valor por omissão: 300} + \end{tabular} + +\item[\tt $\backslash$enddc] -- saída do meio ambiente para a + escrita de grafos. + +\item[{\tt $\backslash$obj(\#1,\#2)[\#3]\{\#4\}[\#5]}:] comando de colocação + dos nós (objectos). + + \begin{tabular}{r@{ -- }l} + {\tt \#1} e {\tt \#2}& coordenadas do centro da caixa que vai + conter o texto\\ + {\tt \#3} & etiqueta para identificar o objecto (opcional)\\ + {\tt \#4} & texto (conte{\'u}do do nó)\\ + {\tt \#5} & colocação relativa do objecto (opcional)\\ + \multicolumn{2}{l}{\qquad\quad $0\doteq\backslash$pcent, centrado}\\ + \multicolumn{2}{l}{\qquad\quad $1\doteq\backslash$north, norte}\\ + \multicolumn{2}{l}{\qquad\quad $2\doteq\backslash$northeast, nordeste}\\ + \multicolumn{2}{l}{\qquad\quad $3\doteq\backslash$east, este}\\ + \multicolumn{2}{l}{\qquad\quad $4\doteq\backslash$southeast, sudeste}\\ + \multicolumn{2}{l}{\qquad\quad $5\doteq\backslash$south, sul}\\ + \multicolumn{2}{l}{\qquad\quad $6\doteq\backslash$southwest, sudoeste}\\ + \multicolumn{2}{l}{\qquad\quad $7\doteq\backslash$west, oeste}\\ + \multicolumn{2}{l}{\qquad\quad $8\doteq\backslash$northwest, noroeste} + \end{tabular} + +A etiqueta explícita-se quando não é possível usar o objecto como +forma de identificação do nó, por exemplo num dado grafo não orientado +os nós podem não ter conteúdo e como tal serem todos iguais em termos +de identificação: + +Em alguns casos, por exemplo comandos dos \LaTeX\ complexos, pode ser +necessário explicitar o argumento {\tt \#3} mesmo que seja através da +etiqueta vazia {\tt []}. Esse especificar da etiqueta vazia torna-se +necessário para que o mecanismo interno do DCpic de comunicação entre +comandos (pilhas) não se baralhe e entre num ciclo infinito. + + +$$ +\begindc{\undigraph}[200] +\obj(1,1)[1]{} +\obj(3,2)[2]{} +\obj(5,1)[3]{} +\obj(3,4)[4]{} +\mor{1}{2}{} +\mor{1}{3}{} +\mor{2}{3}{} +\mor{4}{1}{} +\mor{4}{3}{} +\mor{2}{4}{} +\enddc +$$ +foi produzido por: +\begin{lstlisting} +\begindc{\undigraph}[200] +\obj(1,1)[1]{} +\obj(3,2)[2]{} +\obj(5,1)[3]{} +\obj(3,4)[4]{} +\mor{1}{2}{} +\mor{1}{3}{} +\mor{2}{3}{} +\mor{4}{1}{} +\mor{4}{3}{} +\mor{2}{4}{} +\enddc +\end{lstlisting} + + +O parâmetro referente à colocação do objecto só é relevante quando se +pensa na identificação dos nós num dado grafo orientado (ou não), por +exemplo o grafo ``Around the Word''~\cite{Harary72}: + +$$ +\begindc{\undigraph}[70] +\obj(6,4){18}[\south] +\obj(18,4){17}[\south] +\obj(8,7){11}[\west] +\obj(12,8){12}[\south] +\obj(16,7){13}[\east] +\obj(8,11){10}[\west] +\obj(10,12){6}[\northwest] +\obj(12,10){5} +\obj(14,12){4}[\northeast] +\obj(16,11){14}[\east] +\obj(2,16){19} +\obj(6,15){9} +\obj(9,16){8} +\obj(11,14){7} +\obj(13,14){3} +\obj(15,16){2} +\obj(18,15){15} +\obj(22,16){16} +\obj(12,19){1}[\northeast] +\obj(12,22){20} +\mor{18}{17}{}\mor{18}{11}{}\mor{18}{19}{} +\mor{11}{12}{}\mor{11}{10}{}\mor{12}{13}{} +\mor{12}{5}{}\mor{10}{6}{}\mor{10}{9}{} +\mor{5}{6}{}\mor{5}{4}{}\mor{13}{17}{} +\mor{13}{14}{}\mor{9}{19}{}\mor{9}{8}{} +\mor{6}{7}{}\mor{4}{3}{}\mor{4}{14}{} +\mor{19}{20}{}\mor{8}{1}{}\mor{8}{7}{} +\mor{7}{3}{}\mor{3}{2}{}\mor{2}{1}{} +\mor{2}{15}{}\mor{14}{15}{}\mor{17}{16}{} +\mor{16}{20}{}\mor{1}{20}{}\mor{15}{16}{} +\enddc +$$ +foi produzido por +\begin{lstlisting} +\begindc{\undigraph}[70] +\obj(6,4){18}[\south] +\obj(18,4){17}[\south] +\obj(8,7){11}[\west] +\obj(12,8){12}[\south] +\obj(16,7){13}[\east] +\obj(8,11){10}[\west] +\obj(10,12){6}[\northwest] +\obj(12,10){5} +\obj(14,12){4}[\northeast] +\obj(16,11){14}[\east] +\obj(2,16){19} +\obj(6,15){9} +\obj(9,16){8} +\obj(11,14){7} +\obj(13,14){3} +\obj(15,16){2} +\obj(18,15){15} +\obj(22,16){16} +\obj(12,19){1}[\northeast] +\obj(12,22){20} +\mor{18}{17}{}\mor{18}{11}{}\mor{18}{19}{} +\mor{11}{12}{}\mor{11}{10}{}\mor{12}{13}{} +\mor{12}{5}{}\mor{10}{6}{}\mor{10}{9}{} +\mor{5}{6}{}\mor{5}{4}{}\mor{13}{17}{} +\mor{13}{14}{}\mor{9}{19}{}\mor{9}{8}{} +\mor{6}{7}{}\mor{4}{3}{}\mor{4}{14}{} +\mor{19}{20}{}\mor{8}{1}{}\mor{8}{7}{} +\mor{7}{3}{}\mor{3}{2}{}\mor{2}{1}{} +\mor{2}{15}{}\mor{14}{15}{}\mor{17}{16}{} +\mor{16}{20}{}\mor{1}{20}{}\mor{15}{16}{} +\enddc +\end{lstlisting} + + + +\item[{\tt $\backslash$mor\{\#1\}\{\#2\}[\#5,\#6]\{\#7\}[\#8,\#9]}:] + Comando de colocação da seta (morfismo) de ligação de dois objectos + -- Primeira variante. + + A numeração errada dos argumentos é aqui feita propositadamente, + aquando da explicação da segunda variante deste comando + compreender-se-á o porquê desta opção de escrita. + + \begin{longtable}{r@{ -- }p{32em}} + {\tt \#1} & referência do nó de partida\\ + {\tt \#2} & referência do nó de chegada\\ + {\tt \#5} e {\tt \#6} & distância do centro dos objectos às + extremidades inicial e final respectivamente da seta. Valores por + omissão: 10, 10 (para diagramas) 2, 2 (para os grafos)\\ + {\tt \#7} & texto, ``nome'' do morfismo\\ + {\tt \#8} & colocação do nome do morfismo em relação à seta. Valor + por omissão, $\backslash$atleft. \\ + \multicolumn{2}{l}{\hspace*{4.5em} 1 $\doteq\backslash$atright, à direita}\\ + \multicolumn{2}{l}{\hspace*{4.5em} -1 $\doteq\backslash$atleft, à esquerda}\\ + {\tt \#9} & tipo da seta. Valor por omissão, $\backslash$solidarrow.\\ + \multicolumn{2}{l}{\hspace*{4.5em} 0 $\doteq\backslash$solidarrow, seta sólida} \\ + \multicolumn{2}{l}{\hspace*{4.5em} 1 $\doteq\backslash$dashArrow, seta tracejada} \\ + \multicolumn{2}{l}{\hspace*{4.5em} 2 $\doteq\backslash$dotArrow, seta ponteada} \\ + \multicolumn{2}{l}{\hspace*{4.5em} 3 $\doteq\backslash$solidline, linha sólida} \\ + \multicolumn{2}{l}{\hspace*{4.5em} 4 $\doteq\backslash$dashline, linha a tracejado} \\ + \multicolumn{2}{l}{\hspace*{4.5em} 5 $\doteq\backslash$dotline, linha a ponteado} \\ + \multicolumn{2}{l}{\hspace*{4.5em} 6 $\doteq\backslash$injectionarrow, seta de + injecção. Valor anterior 3 (vers\~ao $<$ 4.2) } \\ + \multicolumn{2}{l}{\hspace*{4.5em} 7 $\doteq\backslash$aplicationarrow, seta de + aplicação. Valor anterior 4 (vers\~ao $<$ 4.2) } \\ + \multicolumn{2}{l}{\hspace*{4.5em} 8 $\doteq\backslash$surjectivearrow, seta de + função sobrejectiva. Valor anterior 5 (vers\~ao $<$ 4.2) }\\ + \multicolumn{2}{l}{\hspace*{4.5em} 9 $\doteq\backslash$equalline, linha dupla}\\ + \multicolumn{2}{l}{\hspace*{4.5em} 10 + $\doteq\backslash$doublearrow, seta dupla}\\ + \multicolumn{2}{l}{\hspace*{4.5em} 11 + $\doteq\backslash$doubleopposite, seta dupla em sentidos opostos}\\ + \multicolumn{2}{l}{\hspace*{4.5em} 12 + $\doteq\backslash$nullarrow, seta nula, serve o propósito de + acrescentar etiquetas as outras ``setas''.}\\ + \end{longtable} + +\item[{\tt $\backslash$mor(\#1,\#2)(\#3,\#4)[\#5,\#6]\{\#7\}[\#8,\#9]}:] + Comando de colocação da seta (morfismo) de ligação de dois objectos + -- Segunda variante. + + \begin{longtable}{r@{ -- }p{32em}} + {\tt \#1} e {\tt \#2} & coordenadas do nó de partida\\ + {\tt \#3} e {\tt \#4} & coordenadas do nó de chegada\\ + \end{longtable} + + Todos os outros argumentos têm o significado já explicado (por + isso a numeração errada). É de notar que para a primeira variante é + feito o cálculo das coordenadas dos nós de forma automática e depois + são passados esses valores para a segunda variante do comando. + + +\item[{\tt $\backslash$cmor(\#1) \#2(\#3,\#4)\{\#5\}[\#6]}] comando para a + especificação de setas curvas. O algoritmo de construção das setas é + o do \PiCTeX\ o que implica que se está a especificar uma linha + quadrática através de um número ímpar de pontos. + + \begin{tabular}{c@{---}l} + {\tt \#1} & lista de pontos, em número ímpar \\ + {\tt \#2} & direccionamento da seta \\ + \multicolumn{2}{l}{\qquad 0 $\doteq\backslash$pup, apontar para cima}\\ + \multicolumn{2}{l}{\qquad 1 $\doteq \backslash$pdown, apontar para + baixo}\\ + \multicolumn{2}{l}{\qquad 2 $\doteq \backslash$pright, apontar para a + direita}\\ + \multicolumn{2}{l}{\qquad 3 $\doteq \backslash$pleft, apontar para a + esquerda}\\ + {\tt \#3} & abcissa do morfismo\\ + {\tt \#4} & ordenada do morfismo\\ + {\tt \#5} & morfismo\\ + {\tt \#6} & tipo de ``seta'', valor por omissão: 0, seta + sólida.\\ + \multicolumn{2}{l}{\hspace*{4.5em} Os restantes valores poss\'\i veis + s\~ao os descritos na variante anterior.}\\ + + \end{tabular} + + O comando {\tt cmor} no caso em que não tem o último parâmetro opcional + tem de ser seguido por um espaço. O espaço antes do direccionamento + da seta é obrigatório. + + No caso de se ter o valor 2 (``$\backslash$solidline'') o valor para o + direccionamento da seta não é tipo em conta, no entanto dado se + tratar de um do parâmetro obrigatório é necessário dar-lhe um valor +\end{description} + + +\section{Alguns Exemplos} + + +\subsection{Setas Duplas, Transformações Naturais, \ldots} + +É de notar que alguns casos aparentemente omissos na actual versão +podem perfeitamente ser construídos através de uma utilização +imaginativa dos actuais comandos. Por exemplo os seguintes diagramas: + +$$ +\begindc{\commdiag}[30] +\obj(5,5){$A$} +\obj(20,5){$B$} +\mor{$A$}{$B$}{$f$}[\atright,\doublearrow] +\mor{$A$}{$B$}{$g$}[\atleft,\nullarrow] +\enddc +\qquad\qquad\qquad +\begindc{\commdiag}[140] +\obj(5,5){$A$} +\obj(9,5){$B$} +\mor(5,6)(9,6){$\downarrow\sigma$}[\atright,\solidarrow] +\mor{$A$}{$B$}{} +\mor(5,4)(9,4){$\downarrow\tau$} +\enddc +$$ + +Podem ser construídos com a actual versão. Eis como: + + +\begin{lstlisting} +\begindc{\commdiag}[30] +\obj(5,5){$A$} +\obj(20,5){$B$} +\mor{$A$}{$B$}{$f$}[\atright,\doublearrow] +\mor{$A$}{$B$}{$g$}[\atleft,\nullarrow] + +\begindc{\commdiag}[14] +\obj(5,5){$A$} +\obj(9,5){$B$} +\mor(5,6)(9,6){$\downarrow\sigma$}[\atright,\solidarrow] +\mor{$A$}{$B$}{} +\mor(5,4)(9,4){$\downarrow\tau$} +\enddc +\end{lstlisting} + + +\subsection{Grafos Orientados com Objectos Circunscritos} + + +$$ +\begindc{\cdigraph}[250] +\obj(1,5){A} +\obj(1,4){B} +\obj(1,1){C} +\obj(5,5){E} +\obj(5,3){F} +\obj(5,1){G} +\mor{A}{E}[80,80]{5} +\mor{A}{F}[80,80]{3} +\mor{B}{F}[80,80]{6}[\atright,\solidarrow] +\mor{B}{E}[80,80]{1} +\mor{C}{F}[80,80]{5} +\mor{C}{G}[80,80]{7} +\enddc +$$ + +Foi produzido através dos seguintes comandos: + + +\begin{lstlisting} +\begindc{\commdiag}[250] +\obj(1,5){A} +\obj(1,4){B} +\obj(1,1){C} +\obj(5,5){E} +\obj(5,3){F} +\obj(5,1){G} +\mor{A}{E}[80,80]{5} +\mor{A}{F}[80,80]{3} +\mor{B}{F}[80,80]{6}[\atright,\solidarrow] +\mor{B}{E}[80,80]{1} +\mor{C}{F}[80,80]{5} +\mor{C}{G}[80,80]{7} +\enddc +\end{lstlisting} + +\subsection{Diferentes Tipos de Setas/Linhas} + + +\begin{lstlisting} +\begindc{\commdiag}[250] +\obj(10,10)[A]{$OOOOOO$} +\obj(15,10)[A0]{$A_0$} +\obj(14,11)[A1]{$A_1$} +\obj(13,12)[A2]{$A_2$} +\obj(12,13)[A3]{$A_3$} +\obj(10,14)[A4]{$A_4$} +\obj(9,13)[A5]{$A_5$} +\obj(8,12)[A6]{$A_6$} +\obj(7,11)[A7]{$A_7$} +\obj(6,10)[A8]{$A_8$} +\obj(7,9)[A9]{$A_9$} +\obj(9,8)[A10]{$A_{10}$} +\obj(12,8)[A11]{$A_{11}$} +\mor{A}{A0}{$a_0$}[\atright,\solidarrow] +\mor{A}{A1}{$a_1$}[\atright,\dashArrow] +\mor{A}{A2}{$a_2$}[\atright,\dotArrow] +\mor{A}{A3}{$a_3$}[\atright,\solidline] +\mor{A}{A4}{$a_4$}[\atright,\dashline] +\mor{A}{A5}{$a_5$}[\atleft,\dotline] +\mor{A}{A6}{$a_6$}[\atleft,\injectionarrow] +\mor{A}{A7}{$a_7$}[\atleft,\aplicationarrow] +\mor{A}{A8}{$a_8$}[\atleft,\surjectivearrow] +\mor{A}{A9}{$a_9$}[\atleft,\equalline] +\mor{A}{A10}{$a_{10}$}[\atleft,\doublearrow] +\mor{A}{A11}{$a_{11}$}[\atleft,\doubleopposite] +\mor{A}{A11}{$a_{12}$}[\atright,\nullarrow] +\enddc +\end{lstlisting} + +$$ +\begindc{\commdiag}[250] +\obj(10,10)[A]{$OOOOOO$} +\obj(15,10)[A0]{$A_0$} +\obj(14,11)[A1]{$A_1$} +\obj(13,12)[A2]{$A_2$} +\obj(12,13)[A3]{$A_3$} +\obj(10,14)[A4]{$A_4$} +\obj(9,13)[A5]{$A_5$} +\obj(8,12)[A6]{$A_6$} +\obj(7,11)[A7]{$A_7$} +\obj(6,10)[A8]{$A_8$} +\obj(7,9)[A9]{$A_9$} +\obj(9,8)[A10]{$A_{10}$} +\obj(12,8)[A11]{$A_{11}$} +\mor{A}{A0}{$a_0$}[\atright,\solidarrow] +\mor{A}{A1}{$a_1$}[\atright,\dashArrow] +\mor{A}{A2}{$a_2$}[\atright,\dotArrow] +\mor{A}{A3}{$a_3$}[\atright,\solidline] +\mor{A}{A4}{$a_4$}[\atright,\dashline] +\mor{A}{A5}{$a_5$}[\atleft,\dotline] +\mor{A}{A6}{$a_6$}[\atleft,\injectionarrow] +\mor{A}{A7}{$a_7$}[\atleft,\aplicationarrow] +\mor{A}{A8}{$a_8$}[\atleft,\surjectivearrow] +\mor{A}{A9}{$a_9$}[\atleft,\equalline] +\mor{A}{A10}{$a_{10}$}[\atleft,\doublearrow] +\mor{A}{A11}{$a_{11}$}[\atleft,\doubleopposite] +\mor{A}{A11}{$a_{12}$}[\atright,\nullarrow] +\enddc +$$ + +\subsection{Diagramas com Setas Curvas} + + + +\begin{lstlisting} +\begindc{\commdiag}[30] +\obj(14,11){$A$} +\obj(39,11){$B$} +\mor(14,12)(39,12){$f$} +\mor(39,10)(14,10){$g$} +\cmor((10,10)(6,11)(5,15)(6,19)(10,20)(14,19)(15,15)) + \pdown(2,20){$id_A$} +\cmor((40,7)(41,3)(45,2)(49,3)(50,7)(49,11)(45,12)) + \pleft(54,3){$id_B$} +\enddc + +\begindc{\commdiag}[30] +\obj(10,15)[A]{$A$} +\obj(40,15)[Aa]{$A$} +\obj(25,15)[B]{$B$} +\mor{A}{B}{$f$} +\mor{B}{Aa}{$g$} +\cmor((10,11)(11,7)(15,6)(25,6)(35,6)(39,7)(40,11)) + \pup(25,3){$id_A$} +\enddc +\end{lstlisting} + +$$ +\begindc{\commdiag}[30] +\obj(14,11){$A$} +\obj(39,11){$B$} +\mor(14,12)(39,12){$f$}%[\atright,\solidarrow] +\mor(39,10)(14,10){$g$}%[\atright,\solidarrow] +\cmor((10,10)(6,11)(5,15)(6,19)(10,20)(14,19)(15,15)) + \pdown(2,20){$id_A$} +\cmor((40,7)(41,3)(45,2)(49,3)(50,7)(49,11)(45,12)) + \pleft(54,3){$id_B$} +\enddc +\qquad +\begindc{\commdiag}[30] +\obj(10,15)[A]{$A$} +\obj(40,15)[Aa]{$A$} +\obj(25,15)[B]{$B$} +\mor{A}{B}{$f$}%[\atright,\solidarrow] +\mor{B}{Aa}{$g$}%[\atright,\solidarrow] +\cmor((10,11)(11,7)(15,6)(25,6)(35,6)(39,7)(40,11)) + \pup(25,3){$id_A$} +\enddc +$$ + +\subsection{Um Exemplo Complexo} + +O diagrama seguinte foi proposto por Feruglio~\cite{Feruglio94} como +um caso de teste. Como \'e poss\'\i vel ver o DCpic produz o diagrama +correctamente a partir de uma especifica\c c\~ao simples. + + +\begin{lstlisting} +\newcommand{\barraA}{\vrule height2em width0em depth0em} +\newcommand{\barraB}{\vrule height1.6em width0em depth0em} +\begindc{\commdiag}[350] +\obj(1,1)[Gr]{$G$} +\obj(3,1)[Grstar]{$G_{r^*}$} +\obj(5,1)[H]{$H$} +\obj(2,2)[SigmaG]{$\Sigma^G$} +\obj(6,2)[SigmaH]{$\Sigma^H$} +\obj(1,3)[Lm]{$L_m$} +\obj(3,3)[Krm]{$K_{r,m}$} +\obj(5,3)[Rmstar]{$R_{m^*}$} +\obj(1,5)[L]{$L$} +\obj(3,5)[Lr]{$L_r$} +\obj(5,5)[R]{$R$} +\obj(2,6)[SigmaL]{$\Sigma^L$} +\obj(6,6)[SigmaR]{$\Sigma^R$} +\mor{Gr}{SigmaG}{$\lambda^G$} +\mor{Grstar}{Gr}{$i_5$}[\atleft,\aplicationarrow] +\mor{Grstar}{H}{$r^*$}[\atright,\solidarrow] +\mor{H}{SigmaH}{$\lambda^H$}[\atright,\dashArrow] +\mor{SigmaG}{SigmaH}{$\varphi^{r^*}$}[\atleft,\solidarrow] +\mor{Lm}{Gr}{$m$}[\atright,\solidarrow] +\mor{Lm}{L}{$i_2$}[\atleft,\aplicationarrow] +\mor{Krm}{Lm}{$i_3\quad$}[\atright,\aplicationarrow] +\mor{Krm}{Rmstar}{$r$} +\mor{Krm}{Lr}{$i_4$}[\atright,\aplicationarrow] +\mor{Krm}{Grstar}{\barraA$m$} +\mor{Rmstar}{R}{$i_6$}[\atright,\aplicationarrow] +\mor{Rmstar}{H}{\barraB$m^*$} +\mor{L}{SigmaL}{$\lambda^L$} +\mor{Lr}{L}{$i_1\quad$}[\atright,\aplicationarrow] +\mor{Lr}{R}{$r$} +\mor{R}{SigmaR}{$\lambda^R$}[\atright,\solidarrow] +\mor{SigmaL}{SigmaG}{$\varphi^m$}[\atright,\solidarrow] +\mor{SigmaL}{SigmaR}{$\varphi^r$} +\mor{SigmaR}{SigmaH}{$\varphi^{m^*}$} +\enddc +\end{lstlisting} + +\newcommand{\barraA}{\vrule height2em width0em depth0em} +\newcommand{\barraB}{\vrule height1.6em width0em depth0em} +$$\begindc{\commdiag}[350] +\obj(1,1)[Gr]{$G$} +\obj(3,1)[Grstar]{$G_{r^*}$} +\obj(5,1)[H]{$H$} +\obj(2,2)[SigmaG]{$\Sigma^G$} +\obj(6,2)[SigmaH]{$\Sigma^H$} +\obj(1,3)[Lm]{$L_m$} +\obj(3,3)[Krm]{$K_{r,m}$} +\obj(5,3)[Rmstar]{$R_{m^*}$} +\obj(1,5)[L]{$L$} +\obj(3,5)[Lr]{$L_r$} +\obj(5,5)[R]{$R$} +\obj(2,6)[SigmaL]{$\Sigma^L$} +\obj(6,6)[SigmaR]{$\Sigma^R$} +\mor{Gr}{SigmaG}{$\lambda^G$} +\mor{Grstar}{Gr}{$i_5$}[\atleft,\aplicationarrow] +\mor{Grstar}{H}{$r^*$}[\atright,\solidarrow] +\mor{H}{SigmaH}{$\lambda^H$}[\atright,\dashArrow] +\mor{SigmaG}{SigmaH}{$\varphi^{r^*}$}[\atleft,\solidarrow] +\mor{Lm}{Gr}{$m$}[\atright,\solidarrow] +\mor{Lm}{L}{$i_2$}[\atleft,\aplicationarrow] +\mor{Krm}{Lm}{$i_3\quad$}[\atright,\aplicationarrow] +\mor{Krm}{Rmstar}{$r$} +\mor{Krm}{Lr}{$i_4$}[\atright,\aplicationarrow] +\mor{Krm}{Grstar}{\barraA$m$} +\mor{Rmstar}{R}{$i_6$}[\atright,\aplicationarrow] +\mor{Rmstar}{H}{\barraB$m^*$} +\mor{L}{SigmaL}{$\lambda^L$} +\mor{Lr}{L}{$i_1\quad$}[\atright,\aplicationarrow] +\mor{Lr}{R}{$r$} +\mor{R}{SigmaR}{$\lambda^R$}[\atright,\solidarrow] +\mor{SigmaL}{SigmaG}{$\varphi^m$}[\atright,\solidarrow] +\mor{SigmaL}{SigmaR}{$\varphi^r$} +\mor{SigmaR}{SigmaH}{$\varphi^{m^*}$} +\enddc +$$ + + +%\bibliographystyle{plain} +%\bibliography{pedro} + +\newcommand{\noopsort}[1]{} \newcommand{\singleletter}[1]{#1} +\begin{thebibliography}{1} + +\bibitem{Feruglio94} +{Gabriel Valiente} Feruglio. +\newblock Typesetting commutative diagrams. +\newblock {\em TUGboat}, 15(4):466--484, 1994. + +\bibitem{Harary72} +Frank Harary. +\newblock {\em Graph Theory}. +\newblock Addison-Wesley, Reading, Massachusetts, 1972. + +\bibitem{Herrlich73} +Horst Herrlich and George Strecker. +\newblock {\em Category Theory}. +\newblock Allyn and Bacon Inc., 1973. + +\bibitem{Knuth86} +Donald~E. Knuth. +\newblock {\em The {\TeX}book}. +\newblock Addison-Wesley Publishing Company, Reading, Massachusetts, 1986. + +\bibitem{Lamport94} +Leslie Lamport. +\newblock {\em {\LaTeX}: A Document Preparation System}. +\newblock Addison-Wesley Publishing Company, Reading,Massachusetts, 2nd + edition, 1994. + +\bibitem{Pierce98} +Benjamin Pierce. +\newblock {\em Basic Category Theory for Computer Scientists}. +\newblock Foundations of Computing. The MIT Press, London, England, 1998. + +\end{thebibliography} + +\appendix +\section{O Código} + +{\scriptsize +\verbatiminput{dcpic.sty}} + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: |