我想做类似的事情https://stackoverflow.com/questions/1465665/passing-command-line-arguments-to-latex-document。
为了更好地解释,我将展示一个最小的运行示例:
我的test.cls
:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{test}[2012/01/11 helper class]
\ifdefined\bastitwocolumns%
\LoadClass[DIV14,parskip=full,twocolumns,landscape]{scrartcl}%
\else
\LoadClass[DIV14,parskip=full]{scrartcl}%
\fi
现在我的test.tex
:
\listfiles
\def\bastitwocolumns{}
\documentclass{test}
%\ifdefined\bastitwocolumns\documentclass[DIV14,parskip=full,landscape,twocolumn] {scrartcl}\else\documentclass[DIV14,parskip=full]{scrartcl}\fi
\usepackage{polyglossia}\setdefaultlanguage[spelling=new,babelshorthands=true]{german}
\usepackage{blindtext}
\begin{document}
\blindtext\blindtext\blindtext\\
\blindtext
\par
\blindtext\blindtext\blindtext\\
\blindtext
\end{document}
首先按照xelatex
文件的方式进行编译,结果是一个单列文档 a4。激活第 4 行并注释掉第 3 行,结果是一个双列(太可悲的肖像)a4 文档。方向问题可能会被忽略。
有人能解释一下,为什么我无法在我的课程中启用这个双列设置吗?
好的,这里是另一个最小的运行示例,它更精确地显示了问题:
XeLaTeX 文件:
\listfiles
\def\bastitwocolumns{}
\documentclass{ebelinguebung}
%\ifdefined\bastitwocolumns\documentclass[DIV14,parskip=full,landscape,twocolumn] {scrartcl}\else\documentclass[DIV14,parskip=full] {scrartcl}\fi\usepackage{beamerarticle}\usepackage{oldebelinguebung}
\usepackage{blindtext}
\begin{document}
\blindtext\\ \blindtext \par \blindtext
\end{document}
类文件:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{ebelinguebung}[2012/01/11 helper class]
\ifdefined\bastitwocolumns%
\LoadClass[DIV14,parskip=full,landscape,twocolumn]{scrartcl}%
\else
\LoadClass[DIV14,parskip=full]{scrartcl}%
\fi
\RequirePackage{beamerarticle}
\RequirePackage[l2tabu,orthodox]{nag}
\RequirePackage{polyglossia}\setdefaultlanguage[spelling=new,babelshorthands=true] {german}
\RequirePackage{hyperref}
样式文件:
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{ebelinguebung}[2012/01/11]
\RequirePackage[l2tabu,orthodox]{nag}
\RequirePackage{polyglossia}\setdefaultlanguage[spelling=new,babelshorthands=true]{german}
\RequirePackage{hyperref}
现在切换活动线 3 或 4 我得到了不同的结果(一个肖像,一个风景),我喜欢了解这一点。
好吧,经过多次尝试,我找到了一个解决方案——我不太明白——但顺便说一句:
在我的类 typearea 的 twocolumn 编译日志文件中,显示了(当然)纸张的肖像尺寸。但在包解决方案的日志文件中,typearea 还告诉
Package typearea Info: You've used standard option `landscape'.
(typearea) This is correct!
(typearea) Internally I'm using `paper=landscape'.
(typearea) If you'd like to set the option with \KOMAoptions,
(typearea) you'd have to use `paper=landscape' there
(typearea) instead of `landscape', too.
首先尝试paper=landscape
直接进入类选项只会删除这些提示。其次尝试\KOMAoptions{paper=landscape,twocolumn}%
在 if 子句中设置(并删除类选项)可以实现我想要的效果。
有人能解释一下吗?
答案1
当test.cls
加载时,它会遵循条件的“true”部分,因为文档的第 2 行定义了\bastitwocolumns
,但它当然会忽略该twocolumns
选项,因为正确的名称是twocolumn
。
事实上,转换twocolumns
成twocolumn
intest.cls
会生成一个两列的文档。
为了获得横向格式,可以test.cls
按如下方式修改:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{test}[2012/01/11 helper class]
\ifdefined\bastitwocolumns
\PassOptionsToPackage{landscape}{typearea}
\LoadClass[DIV14,parskip=full,twocolumn]{scrartcl}
\RequirePackage[pass]{geometry} % this ensures the correct paper orientation
\else
\LoadClass[DIV14,parskip=full]{scrartcl}
\fi
如果您注释掉第 2 行test.tex
,那么您将得到一个单列肖像文档。