我正在使用该forest
包绘制一棵简单的树。forest
与 Springer-Nature 模板一起使用时,必须在调用之前通过标注forest
指定。不幸的是,这会改变树结构。为了简单起见,我提供了一个 MWE(在最后),其中使用复制了问题。\RequirePackage
\documentclass
article
documentclass
预期输出:
观察分叉点与父节点分离
交替输出
当在 MWE 中取消注释该命令时\RequirePackage[edges]{forest}
,我得到一个备用树,其中分叉点连接到父级(见下文)。
问题:我该如何修复\RequirePackage
,forest
使第二幅图像看起来与第一幅图像一样?回想一下,我无法删除 ,\RequirePackage
因为 Springer-Naturedocumentclass
需要它。
article
为简单起见,使用 MWE 基础
% \RequirePackage[edges]{forest}
\documentclass{article}
\usepackage[edges]{forest}
\begin{document}
\scriptsize
\begin{forest}
for tree={
draw=black!75,
line width=1pt,
if level=0{%
forked edges,
l sep+=0.35cm,
s sep+=0.5in,
align=center,
}{%
if level=1{%
l sep+=0.35cm,
s sep+=0.5in,
}{
},
},%
},
[Node~A
[Node~B
]
[Node~C
[Node~D
]
[Node~E
]
]
]
\end{forest}
\end{document}
答案1
类加载与或冲突的sn-jnl
包。来自 CTAN:program
forest
edges
其主要提供的是程序环境;programbox 环境可用于不会破坏页面的片段。
如果您不需要这样的programbox环境,则可以避免加载该program
包。
使用
\makeatletter%
\disable@package@load{program}{}
\makeatother
阻止该program
包被加载。
% !TeX TS-program = pdflatex
\makeatletter% added <<<<<<<<<<<<<<<<
\disable@package@load{program}{}
\makeatother
\documentclass[pdflatex,sn-mathphys]{sn-jnl}
\usepackage[edges]{forest} % added <<<<<<<<<<<<<<,
\begin{document}
\scriptsize
\begin{forest}
for tree={
draw=black!75,
line width=1pt,
if level=0{%
forked edges,
l sep+=0.35cm,
s sep+=0.5in,
}{%
if level=1{%
l sep+=0.35cm,
s sep+=0.5in,
}{
},
},%
},
[Node~A
[Node~B
]
[Node~C
[Node~D
]
[Node~E
]
]
]
\end{forest}
\end{document}
另一个选择是使用大卫·卡莱尔的回答
% !TeX TS-program = pdflatex
\documentclass[pdflatex,sn-mathphys]{sn-jnl}
\catcode`\|=12\relax % added <<<<<<<<<<
\usepackage[edges]{forest} % added <<<<<<<<<<<<<<,
\begin{document}
\scriptsize
\begin{forest}
for tree={
draw=black!75,
line width=1pt,
if level=0{%
forked edges,
l sep+=0.35cm,
s sep+=0.5in,
}{%
if level=1{%
l sep+=0.35cm,
s sep+=0.5in,
}{
},
},%
},
[Node~A
[Node~B
]
[Node~C
[Node~D
]
[Node~E
]
]
]
\end{forest}
\end{document}
答案2
这似乎有效,不要问我为什么。
\RequirePackage{forest}
\documentclass{article}
\useforestlibrary{edges}