我classsicthesis
在博士论文中使用样式。由于这种样式在某种程度上倾向于使用外部边距来添加注释和内容,所以我想我也可以将图例放在那里。我用它pgfplots
来创建它们。我对图进行了样式化,以便将图例放在图之外。我不知道如何解决的问题是(我真的想知道是否可以解决):
如何自动确定图表是在偶数页还是奇数页,以便图例始终出现在外部边缘?
目前,我只能通过在每个图的代码中放置以下两行来手动完成此操作:
legend style={at={(-0.1,1)}, anchor=north east}, %for even pages
%legend style={at={( 1.1,1)}, anchor=north west}, %for odd pages
并(取消)注释相应的行 - 当然,这根本不实用。自动化解决方案会很棒 - 否则对于包含大量图表的冗长文档来说,这不值得。
PS:我在 Ubuntu 11.10 上使用 TexLive 2011
编辑:我认为这个问题是一个普遍的问题,但我可能错了,因此我创建了以下 MWE 来说明它对替代答案的帮助:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
% legend style={at={(-0.1,1)}, anchor=north east}, %for even pages
legend style={at={( 1.1,1)}, anchor=north west}, %for odd pages
]
\addplot coordinates { (0,0) (1,1) };
\addlegendentry{Legend entry}
\end{axis}
\end{tikzpicture}
\end{document}
答案1
假设奇数页总是在一侧,偶数页在另一侧,则可以添加包 ifthen
\usepackage{ifthen}
然后使用页码来确定侧面
\ifthenelse{\isodd{\value{page}}}{\def\eastwest{north east}}{\def\eastwest{north west}}
即,如果您要将图包装在一个图中,则只需在图形环境中使用该行即可。现在用以下代码替换您已有的行
legend style={at={(-0.1,1)}, anchor=\eastwest},
我不确定这将如何与浮点数相互作用,但我想它会起作用。
答案2
这个答案依赖于ifoddpage
包。我将 yaxis 标签放在外部(还是内部?)边距中,而图例则放在另一侧。要创建 mwe,我将使用以下两个文件(以使代码更短)。首先是主要文件:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{float}
\usepackage{ifoddpage}
\begin{document}
\begin{figure}[H]
\input{figure}
\caption{first figure}
\end{figure}
\newpage
\begin{figure}[H]
\input{figure}
\caption{first figure}
\end{figure}
\end{document}
以及figure.tex
文件:
\checkoddpage
\ifoddpage
\def\eastweststyle{legend style={at={(1.05,0)}, anchor=north west},ylabel near ticks, yticklabel pos=left}
\else
\def\eastweststyle{legend style={at={(-0.05,0)}, anchor=north east}, ylabel near ticks, yticklabel pos=right}
\fi
\centering
\begin{tikzpicture}[trim axis left,trim axis right]
\begin{axis}[
\eastweststyle, %for odd pages
ylabel=y,
]
\addplot coordinates { (0,0) (1,1) };
\addlegendentry{Legend entry}
\end{axis}
\end{tikzpicture}
它运行良好但仍然存在一些问题。
- 我无法
\checkoddpage
在新命令中或在 中使用 and furtherpgfplotsstyle
。如果我这样做,我会得到一个missing endscname
错误。所以我每次都必须重写这几行... - 要将其与组图一起使用,需要进行一些更改。请参阅这个问题