Skip to content

Comment faire en sorte que l'accolade des cas soit un lien.

Nous vérifions minutieusement chaque actualité sur notre site Web dans le but de vous montrer à tout moment des informations exactes et à jour.

Solution :

On peut essayer d'adapter votre solution Comment colorer les délimiteurs, qui est basée sur la collecte du matériel et son utilisation dans un... vphantom. Le site amsmath a l'avantage d'être pratique [email protected] pour aider à cela, mais vous devez également utiliser le package ifnum0 de Knuth, comme dans https://tex.stackexchange.com/a/319031/15925, pour éviter les problèmes de regroupement lorsqu'il est utilisé à l'intérieur d'un package align, gather, array ou des constructions similaires construites sur haligns :

Échantillon de sortie

documentclass{article}

usepackage{amsmath}
usepackage{hyperref}
usepackage{xcolor}

newcommand{BracKern}{kern-nulldelimiterspace}
makeatletter
newcommand{@Brach}[2]{%
  %left bracket with hyperlink
  mathopen{hyperlink{sec:cases}{color{red}left#1vphantom{#2}BracKernright.}}
    #2%  content
}

renewenvironment{cases}{% From amsmath.sty
  {ifnum0=`}fi[email protected]cases[email protected][email protected]}%
  {ifnum0=`{fi}}

def[email protected]#1{%
  @Brach{lbrace}%
    {let@ifnextchar[email protected]
    defarraystretch{1.2}%
    array{@{}[email protected]{quad}[email protected]{}}%
    #1
    endarray}%
}

makeatother

begin{document}

section{Cases Environment}label{sec:cases}
The verb|cases| environment is used for dots.

clearpage
section{Piecewise Defined Function}

begin{equation*}
f(x)  =
    begin{cases}
        1 & x < 0, \
        0 & x = 0, \
       -1 & x > 0.
    end{cases}
end{equation*}

begin{align*}
  g(x) &= e^x,\
  f(x) &=
    begin{cases}
        1 & x < 0, \
        0 & x = 0, \
       -1 & x > 0,
     end{cases}\
  h(x) &= x^2.
end{align*}

end{document}

La solution d'Andrew Swann était la deuxième chose à laquelle j'avais vaguement pensé.
(mais, bien sûr, c'est une chose d'avoir une vague intuition, et une autre de la transformer en code fonctionnel).
et une autre de la transformer en code fonctionnel !).
de mettre en œuvre le comportement souhaité au niveau des commandes primitives de TeX. L'objectif de cette réponse est simplement de fournir une sorte de preuve de concept de la façon dont cela peut être réalisé.
concept de la façon dont cela peut être réalisé : à mon avis, la stratégie d'Andrew reste la meilleure.
reste la meilleure. Bien sûr, l'implémentation réelle dépend
du moteur de composition utilisé, mais le principe (c'est-à-dire le placement correct
placement des noeuds "whatsit" dans une liste mathématique) devrait rester le même
dans tous les moteurs. Ce qui suit se réfère spécifiquement à pdfTeX, cependant.

Comme il est bien connu, après avoir construit une liste mathématique, TeX la convertit en une liste
horizontale selon les règles détaillées dans l'appendice G du document Le site
TeXbook
. Dans cette conversion, un élément de délimitation (le type de nœud qui
left{ génère) est finalement converti en une simple boîte, alors
ce que nous voulons réellement obtenir, c'est que cette boîte soit correctement mise entre parenthèses
entre des éléments appropriés pdfstartlink et pdfendlink appropriés. L'idée
est que, connaissant à la fois les règles exactes qui régissent la construction des
listes mathématiques, expliquées au chapitre 26, et les détails de la façon dont TeX
mélange les choses lors de la conversion d'une liste mathématique en une liste horizontale,
on peut concevoir la séquence de commandes appropriée qui produira finalement
les bons nœuds aux bons endroits.

Il y a cependant une légère complication : une commande de type leftright produit toujours un atome interne (p. 292) dont le noyau contient l'élément .qui, lors de la conversion de la liste mathématique en liste horizontale, est toujours enfermé dans un niveau supplémentaire de boxe (p. 443, règle 7, et p. 445, règle 17, première phrase). Cela signifie que le simple fait de mettre un pdfstartlink avant un nœud left{ et un nœud pdfendlink après ne fonctionnera pas, car les deux nœuds se retrouvent à des niveaux de boxe différents. Une expérience simple le confirme :

% My standard header for TeX.SX answers:
documentclass[a4paper]{article} % To avoid confusion, let us explicitly 
                                 % declare the paper format.

usepackage[T1]{fontenc}         % Not always necessary, but recommended.
% End of standard header.  What follows pertains to the problem at hand.

newcommand*{ShowLists}{%
    begingroup
        showboxbreadth = 1000
        showboxdepth = 10
        tracingonline = 1
        showlists
    endgroup
}

begin{document}

Very simple:
(
    special{Comment: B}
    left(
    special{Comment: E}
    xyz
    right)
    ShowLists
).ShowLists

end{document}

Le premier ShowLists affiche la liste des mathématiques, comme suit :

### math mode entered at line 22
special{Comment: B}
mathinner
.left"28300
.special{Comment: E}
.mathord
..fam1 x
.mathord
..fam1 y
.mathord
..fam1 z
.right"29301

Le second affiche la liste horizontale qui résulte de ce qui précède :

### horizontal mode entered at line 21
hbox(0.0+0.0)x15.0
T1/cmr/m/n/10 V
kern-0.83313
T1/cmr/m/n/10 e
T1/cmr/m/n/10 r
T1/cmr/m/n/10 y
glue 3.33252 plus 1.66626 minus 1.11084
T1/cmr/m/n/10 s
T1/cmr/m/n/10 i
T1/cmr/m/n/10 m
T1/cmr/m/n/10 p
T1/cmr/m/n/10 l
T1/cmr/m/n/10 e
T1/cmr/m/n/10 :
glue 4.44336 plus 3.33252 minus 0.55542
mathon
special{Comment: B}
hbox(7.5+2.5)x23.84497
.hbox(7.5+2.5)x3.8889
..OT1/cmr/m/n/10 (
.special{Comment: E}
.OML/cmm/m/it/10 x
.OML/cmm/m/it/10 y
.kern0.35878
.OML/cmm/m/it/10 z
.kern0.4398
.hbox(7.5+2.5)x3.8889
..OT1/cmr/m/n/10 )
mathoff
T1/cmr/m/n/10 .
spacefactor 3000

On constate que, comme dit précédemment, les deux listes de specials se retrouvent à des niveaux de boxe différents, ce qui n'est pas bon.

Mais (pdf-)e-TeX a obtenu middleaussi. Maintenant, je dois admettre que je ne connais aucune source de documentation qui soit une référence aussi précise pour les détails de la conversion des listes mathématiques dans e-TeX que l'appendice G de The TeXbook est pour TeX (les suggestions sont les bienvenues, bien sûr) ; mais on peut toujours expérimenter. Une idée qui se suggère presque d'elle-même est la suivante :

% My standard header for TeX.SX answers:
documentclass[a4paper]{article} % To avoid confusion, let us explicitly 
                                 % declare the paper format.

usepackage[T1]{fontenc}         % Not always necessary, but recommended.
% End of standard header.  What follows pertains to the problem at hand.

newcommand*{ShowLists}{%
    begingroup
        showboxbreadth = 1000
        showboxdepth = 10
        tracingonline = 1
        showlists
    endgroup
}

begin{document}

Still pretty simple:
(
    left. kern -nulldelimiterspace
    special{Comment: B}
    middle(
    special{Comment: E}
    xyz
    right)
    ShowLists
).ShowLists

end{document}

La liste horizontale finale est

### horizontal mode entered at line 21
hbox(0.0+0.0)x15.0
T1/cmr/m/n/10 S
T1/cmr/m/n/10 t
T1/cmr/m/n/10 i
T1/cmr/m/n/10 l
T1/cmr/m/n/10 l
glue 3.33252 plus 1.66626 minus 1.11084
T1/cmr/m/n/10 p
T1/cmr/m/n/10 r
T1/cmr/m/n/10 e
T1/cmr/m/n/10 t
T1/cmr/m/n/10 t
kern-0.27771
T1/cmr/m/n/10 y
glue 3.33252 plus 1.66626 minus 1.11084
T1/cmr/m/n/10 s
T1/cmr/m/n/10 i
T1/cmr/m/n/10 m
T1/cmr/m/n/10 p
T1/cmr/m/n/10 l
T1/cmr/m/n/10 e
T1/cmr/m/n/10 :
glue 4.44336 plus 3.33252 minus 0.55542
mathon
hbox(7.5+2.5)x23.84497
.hbox(0.0+0.0)x1.2, shifted -2.5
.kern -1.2
.special{Comment: B}
.hbox(7.5+2.5)x3.8889
..OT1/cmr/m/n/10 (
.special{Comment: E}
.OML/cmm/m/it/10 x
.OML/cmm/m/it/10 y
.kern0.35878
.OML/cmm/m/it/10 z
.kern0.4398
.hbox(7.5+2.5)x3.8889
..OT1/cmr/m/n/10 )
mathoff
T1/cmr/m/n/10 .
spacefactor 3000

Cette fois, nous avons réussi : les deux nœuds "whatsit" sont au même niveau, et mettent entre parenthèses la case contenant les parenthèses.

Nous sommes maintenant prêts à fournir la preuve de concept que nous avions promise :

documentclass[a4paper]{article}
usepackage[T1]{fontenc}
usepackage{amsmath}

makeatletter

newcommand*hyperleft[3]{%
    left. kern -nulldelimiterspace
    pdfstartlink attr{#2} user{#3}
    middle #1%
    pdfendlink
}

% We prefer to keep the original "cases":
newenvironment*{hypercases}{% From amsmath.sty
    % [email protected]cases % obviously not needed in our case
    [email protected]@cases
}{%
    endarrayright.%
}
newcommand*[email protected]@cases{%
    let@ifnextchar[email protected]
    hyperleftlbrace
        % the following two lines are obviously just a stub:
        {/Border[0 0 1]/H/I/C[0 1 1]}%
        {/Subtype/Link/A<>}%
    defarraystretch{1.2}%
    array{@{}[email protected]{quad}[email protected]{}}%
}

makeatother

begin{document}

section{Piecewise Defined Function}

Two examples follow, so that you can compare results.

The first one uses the texttt{cases} environment:
[
f(x)  = 
    begin{cases}
        1 & x < 0 \
        0 & x = 0 \
       -1 & x > 0.
    end{cases}
]

The second one uses the texttt{hypercases} environment:
[
f(x)  = 
    begin{hypercases}
        1 & x < 0 \
        0 & x = 0 \
       -1 & x > 0.
    end{hypercases}
]

end{document}

Bien sûr, un travail supplémentaire est nécessaire pour mettre cela sous une forme utilisable.


Addition

J'ai jeté un coup d'œil au code de l' hperref et il semble que le "hack grossier" que je mentionne dans un commentaire devrait fonctionner comme prévu, avec toutefois un raffinement.

L'idée est d'utiliser la méthode montrée dans la première partie de cette réponse, mais en utilisant les commandes normales qui... hyperref fournit pour la création de liens pour délivrer le pdfstartlink et pdfendlink au bon endroit, en faisant peser toute la charge de la génération de la syntaxe PDF de bas niveau sur le fichier hyperref lui-même. En première approximation, on pourrait essayer avec

left. kern -nulldelimiterspace
href{http://www.tug.org/}{middlelbrace}

(pour un lien vers une page web) et espérer que cela englobera le package middle entre des nœuds "whatsit" appropriés (dont le type exact dépend du pilote) qui, comme on l'a vu ci-dessus, se retrouveront au bon endroit lorsque la liste mathématique sera convertie en liste horizontale. Malheureusement, cela ne fonctionne pas.

La raison en est que les hyperref enferme le texte du lien à l'intérieur de plusieurs groupes, ce qui interfère évidemment avec le paquet left. ... middlelbrace ... right. de la construction. C'est ici qu'intervient notre "hack grossier" : nous ajoutons au début du paquet middlelbrace autant de endgroup qu'il est nécessaire pour retourner à l'élément left et ajouter un nombre égal de jetons begingroup après lui. L'inspection du code du groupe hyperref et du paquet hpdftex suggère que cela ne devrait pas perturber le placement correct des paquets pdfstartlink et pdfendlink et, en effet, cela semble fonctionner. Notez, cependant, qu'il sera perturber tout mécanisme qui s'appuie sur aftergroup pour délivrer des noeuds "whatsit" à l'extrémité de la liaison ; en particulier, le mécanisme colorlinks va pas fonctionnera pas avec nos liens (voir ci-dessous).

Le nombre de groupes qui doivent être sortis dépend non seulement de la commande utilisée pour générer le lien (par exemple, href{...}{...} vs. hyperref[...]{...}), mais aussi sur d'autres facteurs et, en principe, sur le conducteur us.ed; par exemple, dans le cas de la href elle pourrait dépendre du type de l'URL à laquelle il est fait référence (par exemple, http: vs. file: vs. run:...). La meilleure stratégie consiste donc à déterminer ce nombre de façon dynamique, soit par le biais de currentgrouplevel soit au moyen de currentgrouptype: dans le code présenté ci-dessous, nous avons choisi le deuxième test. Il est également possible d'effectuer les deux tests et d'émettre un message d'erreur s'ils ne concordent pas.

En fait, les idées exposées ci-dessus peuvent être appliquées à une situation plus générale. Dans le code ci-dessous, nous définissons les quatre commandes suivantes :

  • leftLinkToLabel{ typesets comme un
    délimiteur gauche de taille variable qui est un lien vers l'endroit
    dans le document marqué par label{.

  • rightLinkToLabel{ fait la même chose, mais avec
    un délimiteur droit.

  • leftLinkToURL{} met en page comme un
    délimiteur gauche de taille variable qui est un lien vers .

  • rightLinkToURL{} fait la même chose, mais avec
    un délimiteur droit.

Bien sûr, cet ensemble n'est pas exhaustif, mais il est facile de l'étendre (par exemple, en fournissant le caractère middle... des variantes des commandes ci-dessus). Après avoir fait cela, nous utilisons leftLinkTo... pour implémenter deux cases-qui, nous l'espérons, présenteront le comportement requis. Malheureusement, nous ne pouvons pas utiliser newcases pour le faire, car nos nouveaux environnements prennent un argument.

Voici le code :

documentclass[a4paper]{article}
usepackage[T1]{fontenc}
usepackage{amsmath}
usepackage{hyperref}

makeatletter

% Common syntax: #1 = delimiter, #2 = link.
newcommand*leftLinkToLabel[2]{%
   @[email protected]@wrapper{#1}{hyperref[#2]}%
}
newcommand*rightLinkToLabel[2]{%
   @[email protected]@wrapper{#1}{hyperref[#2]}%
}
newcommand*leftLinkToURL[2]{%
   @[email protected]@wrapper{#1}{href{#2}}%
}
newcommand*rightLinkToURL[2]{%
   @[email protected]@wrapper{#1}{href{#2}}%
}

newcommand*@[email protected]@wrapper[2]{%
   left. kern -nulldelimiterspace
   @[email protected]@helper{#1}{#2}%
}
newcommand*@[email protected]@wrapper[2]{%
   @[email protected]@helper{#1}{#2}%
   kern -nulldelimiterspace right.
}

@ifdefinable@[email protected]@[email protected]@[email protected]{} % just check that we can use it
newcommand*@[email protected]@[email protected]{%
   ifnum currentgrouptype=[email protected]@n else
       % typeout{Exiting group level numbercurrentgrouplevel.}%
       endgroup
       xdef@[email protected]@[email protected]@[email protected]{%
           @[email protected]@[email protected]@[email protected]
           begingroup
       }%
       expandafter@[email protected]@[email protected]
   fi
}
newcommand*@[email protected]@helper[2]{%
   globallet @[email protected]@[email protected]@[email protected] @empty
   #2{% #2 is either "hyperref[...]" or "href{...}"
       @[email protected]@[email protected]
       middle #1%
       @[email protected]@[email protected]@[email protected]
   }%
}

newenvironment*{linkToLabelCases}{% From amsmath.sty
   % [email protected]cases % obviously not needed in our case
   [email protected]@casesleftLinkToLabel
}{%
   endarrayright.%
}
newenvironment*{linkToURLCases}{% From amsmath.sty
   % [email protected]cases % obviously not needed in our case
   [email protected]@casesleftLinkToURL
}{%
   endarrayright.%
}
newcommand*[email protected]@cases[2]{%
   let@ifnextchar[email protected]
   #1lbrace{#2}%
   defarraystretch{1.2}%
   array{@{}[email protected]{quad}[email protected]{}}%
}

makeatother

begin{document}

section{Target}
label{S:Target}

This is the target of our links.

newpage

section{Links}
label{S:Links}

Some examples of links follow.

A simple bracket:
begin{align*}
   left[xyzright] &= left[xyzright] \
   leftLinkToLabel[{S:Target}xyzright]
       &= left[xyzrightLinkToLabel]{S:Target}
end{align*}

Now with fractions:
begin{align*}
   left{frac{x}{y}right} &= left{frac{x}{y}right} \
   leftLinkToLabel{{S:Target}frac{x}{y}right}
       &= left{frac{x}{y}rightLinkToLabel}{S:Target}
end{align*}

Now with matrices:
begin{align*}
   left(
       begin{matrix}
           1 & 0 & 0 \
           0 & 1 & 0 \
           0 & 0 & 1
       end{matrix}
   right) &= left(
       begin{matrix}
           1 & 0 & 0 \
           0 & 1 & 0 \
           0 & 0 & 1
       end{matrix}
   right) \
   leftLinkToLabel({S:Target}
       begin{matrix}
           1 & 0 & 0 \
           0 & 1 & 0 \
           0 & 0 & 1
       end{matrix}
   right) &= left(
       begin{matrix}
           1 & 0 & 0 \
           0 & 1 & 0 \
           0 & 0 & 1
       end{matrix}
   rightLinkToLabel){S:Target}
end{align*}

Again with matrices, but this time linking to a URL@:
begin{align*}
   left(
       begin{matrix}
           1 & 0 & 0 & 0 \
           0 & 1 & 0 & 0 \
           0 & 0 & 1 & 0 \
           0 & 0 & 0 & 1
       end{matrix}
   right) &= left(
       begin{matrix}
           1 & 0 & 0 & 0 \
           0 & 1 & 0 & 0 \
           0 & 0 & 1 & 0 \
           0 & 0 & 0 & 1
       end{matrix}
   right) \
   leftLinkToURL({http://www.tug.org/}
       begin{matrix}
           1 & 0 & 0 & 0 \
           0 & 1 & 0 & 0 \
           0 & 0 & 1 & 0 \
           0 & 0 & 0 & 1
       end{matrix}
   right) &= left(
       begin{matrix}
           1 & 0 & 0 & 0 \
           0 & 1 & 0 & 0 \
           0 & 0 & 1 & 0 \
           0 & 0 & 0 & 1
       end{matrix}
   rightLinkToURL){http://www.tug.org/}
end{align*}

section{Piecewise defined function}
label{S:Piece}

No link at all:
[
   f(x) = begin{cases}
            1 & x < 0 \
            0 & x = 0 \
           -1 & x > 0
       end{cases}
]

Linking to a label:
[
   f(x) = begin{linkToLabelCases}{S:Target}
            1 & x < 0 \
            0 & x = 0 \
           -1 & x > 0
       end{linkToLabelCases}
]

Linking to a URL@:
[
   f(x) = begin{linkToURLCases}{http://www.tug.org/}
            1 & x < 0 \
            0 & x = 0 \
           -1 & x > 0
       end{linkToURLCases}
]

% showboxbreadth = 1000
% showboxdepth = 10
% showlists

end{document}

Vous pouvez décommenter les commandes de diagnostic vers la fin pour vérifier que les nœuds sont correctement disposés. Par exemple, voici l'extrait de la liste qui concerne l'accolade de l'environnement. linkToURLCases (la dernière) :

hbox(24.09993+19.09991)x89.71133, shifted 127.64433, display
.OML/cmm/m/it/10 f
.kern1.0764
.OT1/cmr/m/n/10 (
.OML/cmm/m/it/10 x
.OT1/cmr/m/n/10 )
.glue(thickmuskip) 2.77771 plus 2.77771
.OT1/cmr/m/n/10 =
.glue(thickmuskip) 2.77771 plus 2.77771
.hbox(24.09993+19.09991)x56.91278
..hbox(0.0+0.0)x1.2, shifted -2.5
..kern -1.2
..pdfstartlink(*+*)x* attr{/Border[0 0 1]/H/I/C[0 1 1]} action user{/Subtype/L
ink/A<>}
..vbox(0.0+42.00043)x8.8889, shifted -23.50021
...hbox(0.0+9.00009)x8.8889
....OMX/cmex/m/n/10 8
...hbox(0.0+3.00003)x8.8889
....OMX/cmex/m/n/10 >
...hbox(0.0+18.00018)x8.8889
....OMX/cmex/m/n/10 <
...hbox(0.0+3.00003)x8.8889
....OMX/cmex/m/n/10 >
...hbox(0.0+9.00009)x8.8889
....OMX/cmex/m/n/10 :
..pdfendlink
..vbox(24.09993+19.09991)x46.82388

Si vous voulez une sortie DVI, vous pouvez vérifier que notre solution fonctionne (plus ou moins) avec l'environnement hypertex également. Voici la trace correspondante que vous obtenez si vous spécifiez ce pilote et compilez avec latex au lieu de pdflatex:

hbox(24.09993+19.09991)x89.71133, shifted 127.64433, display
.OML/cmm/m/it/10 f
.kern1.0764
.OT1/cmr/m/n/10 (
.OML/cmm/m/it/10 x
.OT1/cmr/m/n/10 )
.glue(thickmuskip) 2.77771 plus 2.77771
.OT1/cmr/m/n/10 =
.glue(thickmuskip) 2.77771 plus 2.77771
.hbox(24.09993+19.09991)x56.91278
..hbox(0.0+0.0)x1.2, shifted -2.5
..kern -1.2
..special{html:}
..vbox(0.0+42.00043)x8.8889, shifted -23.50021
...hbox(0.0+9.00009)x8.8889
....OMX/cmex/m/n/10 8
...hbox(0.0+3.00003)x8.8889
....OMX/cmex/m/n/10 >
...hbox(0.0+18.00018)x8.8889
....OMX/cmex/m/n/10 <
...hbox(0.0+3.00003)x8.8889
....OMX/cmex/m/n/10 >
...hbox(0.0+9.00009)x8.8889
....OMX/cmex/m/n/10 :
..special{html:}
..vbox(24.09993+19.09991)x46.82388

D'autre part, comme nous l'avons dit plus haut, l'option colorlinks ne fonctionnera pas comme prévu, et la trace suivante (obtenue avec l'option pdflatex) montre ce qui se passe :

hbox(24.09993+19.09991)x89.71133, shifted 127.64433, display
.OML/cmm/m/it/10 f
.kern1.0764
.OT1/cmr/m/n/10 (
.OML/cmm/m/it/10 x
.OT1/cmr/m/n/10 )
.glue(thickmuskip) 2.77771 plus 2.77771
.OT1/cmr/m/n/10 =
.glue(thickmuskip) 2.77771 plus 2.77771
.hbox(24.09993+19.09991)x56.91278
..hbox(0.0+0.0)x1.2, shifted -2.5
..kern -1.2
..pdfstartlink(*+*)x* attr{/Border[0 0 0]/H/I/C[0 1 1]} action user{/Subtype/L
ink/A<>}
..pdfcolorstack 0 push {0 1 0 0 k 0 1 0 0 K}
..pdfcolorstack 0 pop
..vbox(0.0+42.00043)x8.8889, shifted -23.50021
...hbox(0.0+9.00009)x8.8889
....OMX/cmex/m/n/10 8
...hbox(0.0+3.00003)x8.8889
....OMX/cmex/m/n/10 >
...hbox(0.0+18.00018)x8.8889
....OMX/cmex/m/n/10 <
...hbox(0.0+3.00003)x8.8889
....OMX/cmex/m/n/10 >
...hbox(0.0+9.00009)x8.8889
....OMX/cmex/m/n/10 :
..pdfendlink
..vbox(24.09993+19.09991)x46.82388

Comme vous le voyez, l'option pdfcolorstack 0 pop est livré prématurément, donc le lien n'obtient aucune couleur ; mais puisque le nœud pdfendlink par contre, est au bon endroit, le lien sera néanmoins actif.

J'utilise la commande orignale, ajouter de la couleur à l'accolade. color{red}leftlbracenormalcolor, reculer d'un espace, faire un lien hypertexte sur cet espace. hyperlink{sec:cases}{hspace{-1em} }, puis avancer hspace{1em}. Cela semble fonctionner.
Entrez la description de l'image ici

expandafternewifcsname [email protected]endcsname
documentclass{article}
usepackage{amsmath}
usepackage{hyperref}
usepackage{xcolor}

%% http://tex.stackexchange.com/questions/85033/colored-symbols
newcommand*{mathcolor}{}
defmathcolor#1#{mathcoloraux{#1}}
newcommand*{mathcoloraux}[3]{%
  protectleavevmode
  begingroup
    color#1{#2}#3%
  endgroup
}

makeatletter% 
    renewenvironment{cases}{%  From amsmath.sty
      [email protected]cases[email protected]
    }{%
      endarrayright.%
    }
    def[email protected]{%
      let@ifnextchar[email protected]
      color{red}leftlbrace%                        <--- How do I replace this,
        normalcolor
        hyperlink{sec:cases}{hspace{-1em} }hspace{1em}% <-- with something like this, but get the right size
      defarraystretch{1.2}%
      array{@{}[email protected]{quad}[email protected]{}}%
    }
makeatother

begin{document}
section{Cases Environment}label{sec:cases}
The verb|cases| environment is used for dots.

clearpage
section{Piecewise Defined Function}

begin{align*}
  exp(x) &= e^x\
  f(x) &=
    {begin{cases}
        1 & x < 0, \
       -1 & x > 0,
     end{cases}} \
  g(x) &= x^2.
end{align*}
begin{align*}
  exp(x) &= e^x\
  f(x) &=
    {begin{cases}
        1 & x < 0, \
        0 & x = 0, \
        0 & x = 0, \
        0 & x = 0, \
       -1 & x > 0,
     end{cases}} \
  g(x) &= x^2.
end{align*}

end{document}

Avis et notes

Si ce message vous a été utile, il serait très utile que vous le partagiez avec d'autres passionnés de programmation, de cette façon vous nous aidez à diffuser nos informations.



Utilisez notre moteur de recherche

Ricerca
Generic filters

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.