抱歉,标题有点奇怪,我努力想出了别的东西。
我已经定义了自己的引文环境,并在引文周围加上了括号。为了做到这一点,我使用了 tikz,并将引文内容放在一个节点中。如果我现在在这个节点中使用 \footnote,它就直接位于引文下方。我宁愿将脚注放在页面末尾,那么我如何才能“脱离”tikz 节点似乎创建的本地组?
\documentclass[parskip=half]{scrartcl}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{environ,xcolor}
\usepackage{lipsum}
\NewEnviron{bquote}{%
\noindent%
\par%
\addmargin{30pt}
\begin{tikzpicture}%
\node[text width=0.97\linewidth](q){\BODY};%
\draw[ultra thick,line width=7pt,overlay,gray!30] (q.north west) -- ($(q.north
west) - (15pt,0)$) -- ($(q.south west) - (15pt,0)$) -- (q.south west);%
\draw[ultra thick, line width=7pt,overlay,gray!30] (q.north east) -- ($(q.north
east) + (15pt,0)$) -- ($(q.south east) + (15pt,0)$) -- (q.south east);%
\end{tikzpicture}%
\footnote{Outside the group}%just a test
\par%
}%
\begin{document}
\lipsum[1]
\begin{bquote}
\lipsum[3]\footnote{Inside the node and sadly local}
\end{bquote}
\lipsum[1]
\end{document}
答案1
您可以使用footnote
将 打包并包装tikzpicture
在savenotes
环境中。这将存储所有内部脚注,否则这些脚注将由 的内部minipage
TikZ 用途收集\node [text width=<length>]
。
这里的代码还有一些其他的改进:
\documentclass[parskip=half]{scrartcl}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{xcolor}
\usepackage{footnote}
\usepackage{lipsum}
\newenvironment{bquote}{%
\par%
\noindent%
\addmargin{30pt}%
\begin{savenotes}%
\begin{tikzpicture}%
\node[text width=0.97\linewidth](q)\bgroup
}{%
\egroup;%
\draw[ultra thick,line width=7pt,overlay,gray!30] (q.north west) -- ($(q.north
west) - (15pt,0)$) -- ($(q.south west) - (15pt,0)$) -- (q.south west);%
\draw[ultra thick, line width=7pt,overlay,gray!30] (q.north east) -- ($(q.north
east) + (15pt,0)$) -- ($(q.south east) + (15pt,0)$) -- (q.south east);%
\end{tikzpicture}%
\end{savenotes}%
\footnote{Outside the group}%just a test
\par%
}%
\begin{document}
\lipsum[1]
\begin{bquote}
\lipsum*[3]\footnote{Inside the node and sadly local} bla bla
\end{bquote}
\lipsum[1]
\end{document}
答案2
据我从其他问题中了解,TikZ 为节点创建了一个小页面,因此这解释了为什么脚注会放在节点内。要获得所需的其他行为,您可以尝试\footnotemark
在希望脚注出现的位置使用,然后使用\footnotetext{the text of the note}
外部环境,以使其出现在页面的底部。
您还可以尝试自动化该过程:
\def\pendingfootnotes{}
\let\ex\expandafter
\newcommand\externfootnote[1]{%
\ex\global\ex\def\ex\pendingfootnotes\ex{\ex\pendingfootnotes\footnotetext{#1}}%
\footnotemark%
}
并在环境的最后添加
\pendingfootnotes
\global\def\pendingfootnotes{}
将它们插入到末尾。我使用“externfootnote”,这样如果您仍然想要“正常”\footnote
行为,它仍然可用。我认为您需要\global
确保更改在 TikZ 环境之外传播,但我可能错了...