![暂时禁止使用牛津生物信息学模板中的双列布局](https://linux22.com/image/247462/%E6%9A%82%E6%97%B6%E7%A6%81%E6%AD%A2%E4%BD%BF%E7%94%A8%E7%89%9B%E6%B4%A5%E7%94%9F%E7%89%A9%E4%BF%A1%E6%81%AF%E5%AD%A6%E6%A8%A1%E6%9D%BF%E4%B8%AD%E7%9A%84%E5%8F%8C%E5%88%97%E5%B8%83%E5%B1%80.png)
这牛津生物信息学期刊模板是我最喜欢的模板之一,我用它来完成很多学校作业。模板使用双列布局,但在文档末尾的附录中,我想包含一些源代码。这在双列布局中当然看起来很糟糕,但我无法使用multicol
宏来抑制双列模式。有什么办法可以做到这一点吗?
答案1
只需放在\onecolumn
附录之前。注意命令\onecolumn
并\twocolumn
开始新的一页。
答案2
您可以将源代码放在带星号的图形版本中,该图形将跨越两列文档中的两列(虽然是误用,但效果很好)。
\usepackage{graphicx}
\begin{figure*}
\begin{verbatim}
Your source code here.
\end{verbatim}
\caption{The source code for bla bla bla}
\label{source-1}
\end{figure*}
但是这些带星号的版本要么把图放在自己的新页面中,要么放在页面顶部。(htbp 不能很好地工作)要解决这个问题,可以加载
\usepackage{dblfloatfix}
在序言中。然后可以使用占位符选项 [tbp] 将图形放在页面顶部、底部或新页面中。但 [h] 仍然不可用。
参考:维基百科
答案3
在序言中插入以下内容以便能够拥有全宽代码和多列文本:
\usepackage{xcolor,listings,etoolbox,multicol,lipsum}
\lstnewenvironment{Code}[1][]
{\lstset{language=[LaTeX]TeX}\lstset{%
breaklines=true,
framesep=5pt,
basicstyle=\ttfamily,
showstringspaces=false,
keywordstyle=\ttfamily\textcolor{blue},
stringstyle=\color{orange},
commentstyle=\color{black},
rulecolor=\color{gray!10},
breakatwhitespace=true,
showspaces=false, % shows spacing symbol
xleftmargin=0pt,
xrightmargin=5pt,
aboveskip=0pt, % compact the code looks ugly in type
belowskip=0pt, % user responsible to insert any skips
backgroundcolor=\color{gray!15}, #1
}}
{}
\makeatletter
%% Hack to have one column environments for Code
\def\multicols@string{multicols}
\BeforeBeginEnvironment{Code}{%
\ifx\@currenvir\multicols@string
\xdef\resume@multicols{\noexpand\begin{multicols}{\number\col@number}}%
\end{multicols}%
\else
\global\let\resume@multicols\@empty
\fi}
\AfterEndEnvironment{Code}{\resume@multicols}
\makeatother
附录中的代码写为:
\onecolumn
\begin{multicols}{2}
\lipsum[2]
\begin{Code}
......
\end{Code}
\end{multicols}
一般建议在代码片段之间添加文本,而不是长代码列表,这样看起来会更好。