Tikz-cd problems whilst also using breqn package
Clash Royale CLAN TAG#URR8PPP
up vote
5
down vote
favorite
Running the following:
documentclass[11pt,a4paper]article usepackagetikz-cd
usepackagetikz-cd
begindocument
begintikzcd 0 arrowr & kerh arrowr & H(C;G) arrowr & Hom(H_n(C),G) arrowr & 0 \ endtikzcd
enddocument
Gives me the diagram that I want with no problems. Trying to compile this whilst including the package breqn leads to TexMaker trying to compile the PDF forever. The problem appears to be caused by the semicolon in my tikz diagram. If I remove the semicolon, it compiles. If I don't use the package breqn, it compiles.
I am struggling to understand why breqn would cause this issue. I'm not actually using that package, now, but I think that I would rather keep it if possible. Is there a way to work around this?
I've tried setting up a new command for ";", and using that in place of the ";" in my code, but that caused the same issue. Similarly, Enclosing the ";" in curly braces or anything else does not seem to work.
Could anyone tell me why including the package breqn is causing this problem? I'm using texmaker, but this appears to also cause the same problem in overleaf.
tikz-pgf tikz-cd breqn
New contributor
add a comment |
up vote
5
down vote
favorite
Running the following:
documentclass[11pt,a4paper]article usepackagetikz-cd
usepackagetikz-cd
begindocument
begintikzcd 0 arrowr & kerh arrowr & H(C;G) arrowr & Hom(H_n(C),G) arrowr & 0 \ endtikzcd
enddocument
Gives me the diagram that I want with no problems. Trying to compile this whilst including the package breqn leads to TexMaker trying to compile the PDF forever. The problem appears to be caused by the semicolon in my tikz diagram. If I remove the semicolon, it compiles. If I don't use the package breqn, it compiles.
I am struggling to understand why breqn would cause this issue. I'm not actually using that package, now, but I think that I would rather keep it if possible. Is there a way to work around this?
I've tried setting up a new command for ";", and using that in place of the ";" in my code, but that caused the same issue. Similarly, Enclosing the ";" in curly braces or anything else does not seem to work.
Could anyone tell me why including the package breqn is causing this problem? I'm using texmaker, but this appears to also cause the same problem in overleaf.
tikz-pgf tikz-cd breqn
New contributor
1
Generally don't usebreqn
, it changes a lot of things that are not compatible with other packages and has several bugs.
– daleif
Nov 19 at 13:40
add a comment |
up vote
5
down vote
favorite
up vote
5
down vote
favorite
Running the following:
documentclass[11pt,a4paper]article usepackagetikz-cd
usepackagetikz-cd
begindocument
begintikzcd 0 arrowr & kerh arrowr & H(C;G) arrowr & Hom(H_n(C),G) arrowr & 0 \ endtikzcd
enddocument
Gives me the diagram that I want with no problems. Trying to compile this whilst including the package breqn leads to TexMaker trying to compile the PDF forever. The problem appears to be caused by the semicolon in my tikz diagram. If I remove the semicolon, it compiles. If I don't use the package breqn, it compiles.
I am struggling to understand why breqn would cause this issue. I'm not actually using that package, now, but I think that I would rather keep it if possible. Is there a way to work around this?
I've tried setting up a new command for ";", and using that in place of the ";" in my code, but that caused the same issue. Similarly, Enclosing the ";" in curly braces or anything else does not seem to work.
Could anyone tell me why including the package breqn is causing this problem? I'm using texmaker, but this appears to also cause the same problem in overleaf.
tikz-pgf tikz-cd breqn
New contributor
Running the following:
documentclass[11pt,a4paper]article usepackagetikz-cd
usepackagetikz-cd
begindocument
begintikzcd 0 arrowr & kerh arrowr & H(C;G) arrowr & Hom(H_n(C),G) arrowr & 0 \ endtikzcd
enddocument
Gives me the diagram that I want with no problems. Trying to compile this whilst including the package breqn leads to TexMaker trying to compile the PDF forever. The problem appears to be caused by the semicolon in my tikz diagram. If I remove the semicolon, it compiles. If I don't use the package breqn, it compiles.
I am struggling to understand why breqn would cause this issue. I'm not actually using that package, now, but I think that I would rather keep it if possible. Is there a way to work around this?
I've tried setting up a new command for ";", and using that in place of the ";" in my code, but that caused the same issue. Similarly, Enclosing the ";" in curly braces or anything else does not seem to work.
Could anyone tell me why including the package breqn is causing this problem? I'm using texmaker, but this appears to also cause the same problem in overleaf.
tikz-pgf tikz-cd breqn
tikz-pgf tikz-cd breqn
New contributor
New contributor
New contributor
asked Nov 19 at 13:27
Matt
1284
1284
New contributor
New contributor
1
Generally don't usebreqn
, it changes a lot of things that are not compatible with other packages and has several bugs.
– daleif
Nov 19 at 13:40
add a comment |
1
Generally don't usebreqn
, it changes a lot of things that are not compatible with other packages and has several bugs.
– daleif
Nov 19 at 13:40
1
1
Generally don't use
breqn
, it changes a lot of things that are not compatible with other packages and has several bugs.– daleif
Nov 19 at 13:40
Generally don't use
breqn
, it changes a lot of things that are not compatible with other packages and has several bugs.– daleif
Nov 19 at 13:40
add a comment |
2 Answers
2
active
oldest
votes
up vote
5
down vote
accepted
In order to cope with babel
that may make ;
into an active character (with French, for instance), Tikz provides a definition for the active ;
as tikz@nonactivesemicolon
which is just a standard category code 12 semicolon.
However, breqn
changes the mathcode of ;
to "8000
(hexadecimal, in decimal it is 32768), usually known as math active. This means that when TeX finds a semicolon in math mode it looks for its definition as an active character, which is tikz@nonactivesemicolon
that becomes ;
, which is math active, so it is replaced by its definition, which is tikz@nonactivesemicolon
…
Infinite loop.
Of course, breqn
defines the active semicolon in a different way, but in a tikzpicture
(or tikz-cd
which internally is a tikzpicture
) this meaning is overridden.
You could input the semicolon as
mathcharnumexpr"6000+`;relax
but it's simpler to not use breqn
.
documentclass[11pt,a4paper]article
usepackageamsmath
usepackagetikz-cd
usepackagebreqn
DeclareMathOperatorHomHom
begindocument
begintikzcd
0 arrow[r] & ker h arrow[r] &
H(Cmathcharnumexpr"6000+`;relax G) arrow[r] & Hom(H_n(C),G) arrow[r] & 0
endtikzcd
enddocument
Note how I input ker
and define an operator name for Hom
.
A more friendly solution:
documentclass[11pt,a4paper]article
usepackageamsmath
usepackagetikz-cd
makeatletter
protectededeftikz@nonactivesemicolon%
noexpandifmmode
mathcharthemathcode`;
noexpandelse
;%
noexpandfi
makeatother
usepackagebreqn
DeclareMathOperatorHomHom
begindocument
begintikzcd
0 arrow[r] & ker h arrow[r] &
H(C;G) arrow[r] & Hom(H_n(C),G) arrow[r] & 0
endtikzcd
enddocument
Note that also colon, bar and exclamation mark might give a similar problem. A complete fix:
documentclass[11pt,a4paper]article
usepackageamsmath
usepackagetikz-cd
makeatletter
deffixtikzforbreqn#1#2%
protectededef#1noexpandifmmodemathcharthemathcode`#2 noexpandelse#2noexpandfi%
fixtikzforbreqntikz@nonactivesemicolon;
fixtikzforbreqntikz@nonactivecolon:
fixtikzforbreqntikz@nonactivebar|
fixtikzforbreqntikz@nonactiveexlmark!
makeatother
usepackagebreqn
DeclareMathOperatorHomHom
begindocument
begintikzcd
0 arrow[r] & ker h arrow[r] &
H(C;G) arrow[r] & Hom(H_n(C),G) arrow[r] & 0:!|
endtikzcd
enddocument
Thank you for this informative answer.
– Matt
Nov 19 at 15:29
add a comment |
up vote
3
down vote
I agree with @daleif and @egreg that you shouldn't use breqn. Here is a way to use it, if you absolutely must, and do not have the egreg's knowledge about active characters, but want to add something that causes trouble. Just use a savebox.
documentclass[11pt,a4paper]article
usepackagetikz-cd
usepackagebreqn
% usepackageamsmath
% DeclareMathOperatorHomHom
% DeclareMathOperatorkerker
newsaveboxDontUseBreqn
begindocument
saveboxDontUseBreqn$H(C; G)$
begintikzcd
0 arrowr & mathrmker h arrowr & useboxDontUseBreqn arrowr &
mathrmHom(H_n(C),G) arrowr & 0 \
endtikzcd
enddocument
But really you should just not use breqn.
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
5
down vote
accepted
In order to cope with babel
that may make ;
into an active character (with French, for instance), Tikz provides a definition for the active ;
as tikz@nonactivesemicolon
which is just a standard category code 12 semicolon.
However, breqn
changes the mathcode of ;
to "8000
(hexadecimal, in decimal it is 32768), usually known as math active. This means that when TeX finds a semicolon in math mode it looks for its definition as an active character, which is tikz@nonactivesemicolon
that becomes ;
, which is math active, so it is replaced by its definition, which is tikz@nonactivesemicolon
…
Infinite loop.
Of course, breqn
defines the active semicolon in a different way, but in a tikzpicture
(or tikz-cd
which internally is a tikzpicture
) this meaning is overridden.
You could input the semicolon as
mathcharnumexpr"6000+`;relax
but it's simpler to not use breqn
.
documentclass[11pt,a4paper]article
usepackageamsmath
usepackagetikz-cd
usepackagebreqn
DeclareMathOperatorHomHom
begindocument
begintikzcd
0 arrow[r] & ker h arrow[r] &
H(Cmathcharnumexpr"6000+`;relax G) arrow[r] & Hom(H_n(C),G) arrow[r] & 0
endtikzcd
enddocument
Note how I input ker
and define an operator name for Hom
.
A more friendly solution:
documentclass[11pt,a4paper]article
usepackageamsmath
usepackagetikz-cd
makeatletter
protectededeftikz@nonactivesemicolon%
noexpandifmmode
mathcharthemathcode`;
noexpandelse
;%
noexpandfi
makeatother
usepackagebreqn
DeclareMathOperatorHomHom
begindocument
begintikzcd
0 arrow[r] & ker h arrow[r] &
H(C;G) arrow[r] & Hom(H_n(C),G) arrow[r] & 0
endtikzcd
enddocument
Note that also colon, bar and exclamation mark might give a similar problem. A complete fix:
documentclass[11pt,a4paper]article
usepackageamsmath
usepackagetikz-cd
makeatletter
deffixtikzforbreqn#1#2%
protectededef#1noexpandifmmodemathcharthemathcode`#2 noexpandelse#2noexpandfi%
fixtikzforbreqntikz@nonactivesemicolon;
fixtikzforbreqntikz@nonactivecolon:
fixtikzforbreqntikz@nonactivebar|
fixtikzforbreqntikz@nonactiveexlmark!
makeatother
usepackagebreqn
DeclareMathOperatorHomHom
begindocument
begintikzcd
0 arrow[r] & ker h arrow[r] &
H(C;G) arrow[r] & Hom(H_n(C),G) arrow[r] & 0:!|
endtikzcd
enddocument
Thank you for this informative answer.
– Matt
Nov 19 at 15:29
add a comment |
up vote
5
down vote
accepted
In order to cope with babel
that may make ;
into an active character (with French, for instance), Tikz provides a definition for the active ;
as tikz@nonactivesemicolon
which is just a standard category code 12 semicolon.
However, breqn
changes the mathcode of ;
to "8000
(hexadecimal, in decimal it is 32768), usually known as math active. This means that when TeX finds a semicolon in math mode it looks for its definition as an active character, which is tikz@nonactivesemicolon
that becomes ;
, which is math active, so it is replaced by its definition, which is tikz@nonactivesemicolon
…
Infinite loop.
Of course, breqn
defines the active semicolon in a different way, but in a tikzpicture
(or tikz-cd
which internally is a tikzpicture
) this meaning is overridden.
You could input the semicolon as
mathcharnumexpr"6000+`;relax
but it's simpler to not use breqn
.
documentclass[11pt,a4paper]article
usepackageamsmath
usepackagetikz-cd
usepackagebreqn
DeclareMathOperatorHomHom
begindocument
begintikzcd
0 arrow[r] & ker h arrow[r] &
H(Cmathcharnumexpr"6000+`;relax G) arrow[r] & Hom(H_n(C),G) arrow[r] & 0
endtikzcd
enddocument
Note how I input ker
and define an operator name for Hom
.
A more friendly solution:
documentclass[11pt,a4paper]article
usepackageamsmath
usepackagetikz-cd
makeatletter
protectededeftikz@nonactivesemicolon%
noexpandifmmode
mathcharthemathcode`;
noexpandelse
;%
noexpandfi
makeatother
usepackagebreqn
DeclareMathOperatorHomHom
begindocument
begintikzcd
0 arrow[r] & ker h arrow[r] &
H(C;G) arrow[r] & Hom(H_n(C),G) arrow[r] & 0
endtikzcd
enddocument
Note that also colon, bar and exclamation mark might give a similar problem. A complete fix:
documentclass[11pt,a4paper]article
usepackageamsmath
usepackagetikz-cd
makeatletter
deffixtikzforbreqn#1#2%
protectededef#1noexpandifmmodemathcharthemathcode`#2 noexpandelse#2noexpandfi%
fixtikzforbreqntikz@nonactivesemicolon;
fixtikzforbreqntikz@nonactivecolon:
fixtikzforbreqntikz@nonactivebar|
fixtikzforbreqntikz@nonactiveexlmark!
makeatother
usepackagebreqn
DeclareMathOperatorHomHom
begindocument
begintikzcd
0 arrow[r] & ker h arrow[r] &
H(C;G) arrow[r] & Hom(H_n(C),G) arrow[r] & 0:!|
endtikzcd
enddocument
Thank you for this informative answer.
– Matt
Nov 19 at 15:29
add a comment |
up vote
5
down vote
accepted
up vote
5
down vote
accepted
In order to cope with babel
that may make ;
into an active character (with French, for instance), Tikz provides a definition for the active ;
as tikz@nonactivesemicolon
which is just a standard category code 12 semicolon.
However, breqn
changes the mathcode of ;
to "8000
(hexadecimal, in decimal it is 32768), usually known as math active. This means that when TeX finds a semicolon in math mode it looks for its definition as an active character, which is tikz@nonactivesemicolon
that becomes ;
, which is math active, so it is replaced by its definition, which is tikz@nonactivesemicolon
…
Infinite loop.
Of course, breqn
defines the active semicolon in a different way, but in a tikzpicture
(or tikz-cd
which internally is a tikzpicture
) this meaning is overridden.
You could input the semicolon as
mathcharnumexpr"6000+`;relax
but it's simpler to not use breqn
.
documentclass[11pt,a4paper]article
usepackageamsmath
usepackagetikz-cd
usepackagebreqn
DeclareMathOperatorHomHom
begindocument
begintikzcd
0 arrow[r] & ker h arrow[r] &
H(Cmathcharnumexpr"6000+`;relax G) arrow[r] & Hom(H_n(C),G) arrow[r] & 0
endtikzcd
enddocument
Note how I input ker
and define an operator name for Hom
.
A more friendly solution:
documentclass[11pt,a4paper]article
usepackageamsmath
usepackagetikz-cd
makeatletter
protectededeftikz@nonactivesemicolon%
noexpandifmmode
mathcharthemathcode`;
noexpandelse
;%
noexpandfi
makeatother
usepackagebreqn
DeclareMathOperatorHomHom
begindocument
begintikzcd
0 arrow[r] & ker h arrow[r] &
H(C;G) arrow[r] & Hom(H_n(C),G) arrow[r] & 0
endtikzcd
enddocument
Note that also colon, bar and exclamation mark might give a similar problem. A complete fix:
documentclass[11pt,a4paper]article
usepackageamsmath
usepackagetikz-cd
makeatletter
deffixtikzforbreqn#1#2%
protectededef#1noexpandifmmodemathcharthemathcode`#2 noexpandelse#2noexpandfi%
fixtikzforbreqntikz@nonactivesemicolon;
fixtikzforbreqntikz@nonactivecolon:
fixtikzforbreqntikz@nonactivebar|
fixtikzforbreqntikz@nonactiveexlmark!
makeatother
usepackagebreqn
DeclareMathOperatorHomHom
begindocument
begintikzcd
0 arrow[r] & ker h arrow[r] &
H(C;G) arrow[r] & Hom(H_n(C),G) arrow[r] & 0:!|
endtikzcd
enddocument
In order to cope with babel
that may make ;
into an active character (with French, for instance), Tikz provides a definition for the active ;
as tikz@nonactivesemicolon
which is just a standard category code 12 semicolon.
However, breqn
changes the mathcode of ;
to "8000
(hexadecimal, in decimal it is 32768), usually known as math active. This means that when TeX finds a semicolon in math mode it looks for its definition as an active character, which is tikz@nonactivesemicolon
that becomes ;
, which is math active, so it is replaced by its definition, which is tikz@nonactivesemicolon
…
Infinite loop.
Of course, breqn
defines the active semicolon in a different way, but in a tikzpicture
(or tikz-cd
which internally is a tikzpicture
) this meaning is overridden.
You could input the semicolon as
mathcharnumexpr"6000+`;relax
but it's simpler to not use breqn
.
documentclass[11pt,a4paper]article
usepackageamsmath
usepackagetikz-cd
usepackagebreqn
DeclareMathOperatorHomHom
begindocument
begintikzcd
0 arrow[r] & ker h arrow[r] &
H(Cmathcharnumexpr"6000+`;relax G) arrow[r] & Hom(H_n(C),G) arrow[r] & 0
endtikzcd
enddocument
Note how I input ker
and define an operator name for Hom
.
A more friendly solution:
documentclass[11pt,a4paper]article
usepackageamsmath
usepackagetikz-cd
makeatletter
protectededeftikz@nonactivesemicolon%
noexpandifmmode
mathcharthemathcode`;
noexpandelse
;%
noexpandfi
makeatother
usepackagebreqn
DeclareMathOperatorHomHom
begindocument
begintikzcd
0 arrow[r] & ker h arrow[r] &
H(C;G) arrow[r] & Hom(H_n(C),G) arrow[r] & 0
endtikzcd
enddocument
Note that also colon, bar and exclamation mark might give a similar problem. A complete fix:
documentclass[11pt,a4paper]article
usepackageamsmath
usepackagetikz-cd
makeatletter
deffixtikzforbreqn#1#2%
protectededef#1noexpandifmmodemathcharthemathcode`#2 noexpandelse#2noexpandfi%
fixtikzforbreqntikz@nonactivesemicolon;
fixtikzforbreqntikz@nonactivecolon:
fixtikzforbreqntikz@nonactivebar|
fixtikzforbreqntikz@nonactiveexlmark!
makeatother
usepackagebreqn
DeclareMathOperatorHomHom
begindocument
begintikzcd
0 arrow[r] & ker h arrow[r] &
H(C;G) arrow[r] & Hom(H_n(C),G) arrow[r] & 0:!|
endtikzcd
enddocument
edited Nov 19 at 14:15
answered Nov 19 at 13:54
egreg
699k8518593130
699k8518593130
Thank you for this informative answer.
– Matt
Nov 19 at 15:29
add a comment |
Thank you for this informative answer.
– Matt
Nov 19 at 15:29
Thank you for this informative answer.
– Matt
Nov 19 at 15:29
Thank you for this informative answer.
– Matt
Nov 19 at 15:29
add a comment |
up vote
3
down vote
I agree with @daleif and @egreg that you shouldn't use breqn. Here is a way to use it, if you absolutely must, and do not have the egreg's knowledge about active characters, but want to add something that causes trouble. Just use a savebox.
documentclass[11pt,a4paper]article
usepackagetikz-cd
usepackagebreqn
% usepackageamsmath
% DeclareMathOperatorHomHom
% DeclareMathOperatorkerker
newsaveboxDontUseBreqn
begindocument
saveboxDontUseBreqn$H(C; G)$
begintikzcd
0 arrowr & mathrmker h arrowr & useboxDontUseBreqn arrowr &
mathrmHom(H_n(C),G) arrowr & 0 \
endtikzcd
enddocument
But really you should just not use breqn.
add a comment |
up vote
3
down vote
I agree with @daleif and @egreg that you shouldn't use breqn. Here is a way to use it, if you absolutely must, and do not have the egreg's knowledge about active characters, but want to add something that causes trouble. Just use a savebox.
documentclass[11pt,a4paper]article
usepackagetikz-cd
usepackagebreqn
% usepackageamsmath
% DeclareMathOperatorHomHom
% DeclareMathOperatorkerker
newsaveboxDontUseBreqn
begindocument
saveboxDontUseBreqn$H(C; G)$
begintikzcd
0 arrowr & mathrmker h arrowr & useboxDontUseBreqn arrowr &
mathrmHom(H_n(C),G) arrowr & 0 \
endtikzcd
enddocument
But really you should just not use breqn.
add a comment |
up vote
3
down vote
up vote
3
down vote
I agree with @daleif and @egreg that you shouldn't use breqn. Here is a way to use it, if you absolutely must, and do not have the egreg's knowledge about active characters, but want to add something that causes trouble. Just use a savebox.
documentclass[11pt,a4paper]article
usepackagetikz-cd
usepackagebreqn
% usepackageamsmath
% DeclareMathOperatorHomHom
% DeclareMathOperatorkerker
newsaveboxDontUseBreqn
begindocument
saveboxDontUseBreqn$H(C; G)$
begintikzcd
0 arrowr & mathrmker h arrowr & useboxDontUseBreqn arrowr &
mathrmHom(H_n(C),G) arrowr & 0 \
endtikzcd
enddocument
But really you should just not use breqn.
I agree with @daleif and @egreg that you shouldn't use breqn. Here is a way to use it, if you absolutely must, and do not have the egreg's knowledge about active characters, but want to add something that causes trouble. Just use a savebox.
documentclass[11pt,a4paper]article
usepackagetikz-cd
usepackagebreqn
% usepackageamsmath
% DeclareMathOperatorHomHom
% DeclareMathOperatorkerker
newsaveboxDontUseBreqn
begindocument
saveboxDontUseBreqn$H(C; G)$
begintikzcd
0 arrowr & mathrmker h arrowr & useboxDontUseBreqn arrowr &
mathrmHom(H_n(C),G) arrowr & 0 \
endtikzcd
enddocument
But really you should just not use breqn.
answered Nov 19 at 13:59
marmot
77.5k487164
77.5k487164
add a comment |
add a comment |
Matt is a new contributor. Be nice, and check out our Code of Conduct.
Matt is a new contributor. Be nice, and check out our Code of Conduct.
Matt is a new contributor. Be nice, and check out our Code of Conduct.
Matt is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f460746%2ftikz-cd-problems-whilst-also-using-breqn-package%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Generally don't use
breqn
, it changes a lot of things that are not compatible with other packages and has several bugs.– daleif
Nov 19 at 13:40