清理我的 TeX 代码

清理我的 TeX 代码

我最近完成了第一篇用 LaTeX 编写的论文。我仔细检查了代码,并尝试对其进行整理,使其更加合理 - 这是一个相当大的挑战。我不希望您真正重新安排任何东西。但也许可以指出一些缺陷/可以更高效、更易于管理的事情?这是我的代码。

\documentclass[a4paper,12pt]{article}
\usepackage[danish]{babel}
\usepackage[latin1]{inputenc}
\usepackage{lmodern}
\usepackage[T1]{fontenc}

\usepackage{tikz}
\usepackage{pgfplots}

\usepackage{graphics}
\usetikzlibrary{calc}                               
\usetikzlibrary{decorations.pathreplacing}     

\makeatletter 
\g@addto@macro
\@floatboxreset\centering
 \makeatother


\usepackage{scrpage2}
\renewcommand{\headfont}{\itshape}
\pagestyle{scrplain}
\ohead[Frederik Hestvang, ØP Hold 1]{}
\cfoot[]{}
\ofoot[\pagemark]{}

\pagestyle{scrplain}

\usepackage[md]{titlesec}

\usepackage{changepage}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{caption}
\usepackage[font=small, justification=justified, singlelinecheck=false]{caption}
\setlength{\topmargin}{-.3in}
\setlength{\textheight}{9.5in}
\setlength{\oddsidemargin}{-4ex}
\setlength{\textwidth}{6.7in}

\title{\vspace{-5ex}Obligatorisk opgave 2, x. september 2013.}

\date{\vspace{-5ex}}
\setlength{\abovecaptionskip}{0.5ex}

\begin{document}
\renewcommand{\labelitemi}{{\tiny$\bullet$}}

\maketitle

\vspace{-7ex}

\section{Opgave 1}
\subsection{}
\textcolor{black!40}{Tegn produktionsmulighedsområdet på ugebasis for henholdsvis Robinson
og Fredag. Beskriv hvad det angiver.}
\\
\begin{figure}[ht]
\begin{tikzpicture}
\begin{axis}[
    scale only axis,
    grid=major, grid style={dotted, black!30},
    axis lines=middle,
    inner axis line style={->},
    xlabel={$Kartofler$},
    ylabel={$Fisk$},
    ytick={0,1,...,8},
    xtick={0,1,...,8},
    ymin=-0.5,
    ymax=8,
    xmin=-0.5,
    xmax=8,
]
\addplot[color=red,thick] coordinates { %ROBINSON
            (6, 0)
            (0, 6)
        };
        \addlegendentry{Robinson}
\addplot[color=blue,thick] coordinates { %FREDAG
            (3, 0)
            (0, 2)
        };
        \addlegendentry{Fredag}

        \addplot[color=black,thick, dotted] coordinates { %HÆLDNINGROB
            (2, 4)
            (3, 4)
        };
         \addplot[color=black,thick, dotted] coordinates { %HÆLDNINGROB
            (3, 4)
            (3, 3)
         };
         \addplot[color=black,thick, dotted] coordinates { %HÆLDNINGROB
            (1, 1.3)
            (2, 1.3)
        };
         \addplot[color=black,thick, dotted] coordinates { %HÆLDNINGROB
            (2, 1.3)
            (2, 0.66)
         };

\node [right] at (axis cs:  3,  3.5) {$-1$};
\node [right] at (axis cs:  2,  1) {$-\frac{2}{3}$};

\end{axis}
\end{tikzpicture}
\end{figure}


\begin{adjustwidth}{1cm}{1cm}
Produktionsmulighedsområdet angiver mængden af de mulige forbrugskombinationer en agent eller et samfund har. Altså er det her den ramme, som Robinson og Fredag har, at sammensætte deres produktion af fisk og kartofler indenfor.
\end{adjustwidth}

\subsection{}
\textcolor{black!40}{Definér begrebet absolutte fordel og argumentér for hvem der har den
absolutte fordel i produktionen af henholdsvis fisk og kartofler?}

\begin{adjustwidth}{1cm}{1cm}
En producent siges at have absolut fordel i produktion af et gode, hvis denne har en højere produktivitet (produktion pr. tidsenhed) end den anden producent.
    Robinson har den absolutte fordel for begge goder, da hans produktivitet for begge varer er højere end Fredags.
\end{adjustwidth}

\pagebreak


\subsection{}
\textcolor{black!40}{Definér begrebet alternativomkostninger og argumentér for hvilken
sammenhæng der er mellem produktionsmulighedsområdet (her menes vel transformationskurven?) og begrebet alternativomkostninger.}
\begin{adjustwidth}{1cm}{1cm}
Alternativomkostningen ved en handling er værdien af det bedste alternativ, som man må afgive for at gennemføre en handling.
Hældningen på transformationenskurven angiver alternativomkostningen målt i et gode, ved at producere en enhed mere af et andet gode.
\end{adjustwidth}

\subsection{}
\textcolor{black!40}{Definér begrebet komparativ fordel og argumentér for hvem der har
den komparative fordel i produktionen af henholdsvis fisk og kartofler. Hvordan
bør Robinson og Fredag specialisere sig ifølge Ricardos teori om komparative
fordele, hvis de skal opnå en gevinst ved at handle med hinanden?}
\begin{adjustwidth}{1cm}{1cm}
En producent siges at have komparativ fordel hvis denne har den laveste alternativomkostning ved produktionen af et gode.
\\
Robinsons alternativomkostninger er ens for både fisk og kartofler. Fredags alternativomkostning ved at producere 1 kilo kartofler mere er $\frac{2}{3}$ kilo kartofler, og dermed $\frac{3}{2}$ kilo fisk ved at producere 1 kilo kartofler mere (fordi alternativomkostningen mellem de to varer er reciprok). Altså har...
\begin{itemize}
  \item \textbf{Robsinson den komparativ fordel i produktion af fisk: 1 kg/kartoffel}
  \item \textbf{Fredag  komparative fordel i produktion af kartofler: $\frac{2}{3}$ kg/fisk}
\end{itemize}

\vspace{1ex}

\noindent Da det ikke er givet, om Robinson eller Fredag har nogle forbrugspræferencer, skal de specialsere sig fuldt, i den vare de har størst komparativ fordel i. 
Når de handler, skal det være i intervallet mellem alternativomkostningerne, altså [$\frac{2}{3}$;1].
\\
De kan f.eks. handle 1 kg
\\
Robinson: 3 kg fisk giver 4 kg kartoffel.
\\
Fredag: 2 kg kartoffel giver 1.5 kg fisk


\begin{figure}[ht]
\begin{tikzpicture}
\begin{axis}[
    scale only axis,
    grid=major, grid style={dotted, black!30},
    axis lines=middle,
    inner axis line style={->},
    xlabel={$Kartofler$},
    ylabel={$Fisk$},
    ytick={0,1,...,8},
    xtick={0,1,...,8},
    ymin=-0.5,
    ymax=8,
    xmin=-0.5,
    xmax=8,
]
\addplot[color=red,thick] coordinates { %ROBINSON
            (6, 0)
            (0, 6)
        };
        \addlegendentry{Robinson}
\addplot[color=blue,thick] coordinates { %FREDAG
            (3, 0)
            (0, 2)
        };
        \addlegendentry{Fredag}

        \addplot[color=blue,thick, mark=*] coordinates { %FREDAG
            (1.5, 1.5)

        };
 \addplot[color=red,thick, mark=*] coordinates { %ROBINSON
            (4, 3)

        };

\end{axis}
\end{tikzpicture}
\end{figure}

\end{adjustwidth}

\end{document}

答案1

理想情况下,在乳胶文档的正文中,您不应该有字体或间距命令,文档应该标记文档结构使用其他地方指定的结构样式。这使得文档更加可用,并且如果您改变了格式的想法,或者将其发送给期刊并且他们需要将其格式化为期刊样式,或者如果您想要转换为 html,或者基本上任何用途,都可以轻松重新格式化。

有时理想情况是无法实现的,对于最终排版版本,您需要控制系统并插入强制空格和分页符以获得最佳质量。这就是生活,无法避免,但此类命令应明确标记并留给最终版本,以便在文档重新使用时轻松取消定义或删除它们。

您的文档并不是那么糟糕(我曾见过$$ title $$用于居中的章节标题 :( 但既然您问了……

  \title{\vspace{-5ex}O...

不:-) 标题周围的空格是在类中设置的,您应该能够重新定义它(或只是\title在序言中重新定义)而不留空格标题(例如在某些类别中最终会出现在 pdf 元数据和其他地方的 /title 字段中)。

\date{\vspace{-5ex}}

如上。

\maketitle
\vspace{-7ex}

如上。

\subsection{}
\textcolor{black!40}{Tegn produktionsmulighedsområdet på ugebasis for henholdsvis Robinson
og Fredag. Beskriv hvad det angiver.}
\\

不要在段落末尾使用\\,只需使用空行,此外,像明显的字体变化这样的明显颜色通常表示有问题。此处的标记很可能应该是

\subsection{Tegn produktionsmulighedsområdet på ugebasis for henholdsvis Robinson
og Fredag. Beskriv hvad det angiver.}

通过类/序言定义\subsection将其标题设置在凹陷的灰色段落中。

\begin{figure}[ht]

主要作用[ht]不允许 p这会阻止浮动页面,从而大大增加浮动无法定位的可能性,在这种情况下,所有浮动都将移至文档末尾。p如果您使用可选参数,则几乎应始终包含它。

\begin{adjustwidth}{1cm}{1cm}

adjustwidth可以是一个有用的包,但环境不应该明确使用,而应该用于定义具有更有意义的文档语义的标记。事实上adjustwidth(像大多数 LaTeX 显示环境一样)只是一个没有标签但有缩进主体的单项列表。在这里你实际上一个列表;此缩进的文本是正文,而灰色文本是标题或标签,因此标记应按\subsection上述建议使用或列表并使用\item,但无论哪种方式,数字、灰色标题和缩进正文之间的相对边距应在文档顶部的一个位置定义,而不是在每个实例中都定义。

\end{itemize}

\vspace{1ex}

\noindent  Da det ikke

那不是一个未缩进的段落,而是列表前段落的延续。LaTeX 付出了很多努力来支持段落内列表,但您必须通过不添加表示段落结束的空行来帮助它。

\end{itemize}
Da det

不会缩进。

答案2

  1. 从长远来看,最好使用 UTF8 作为输入编码(以及编辑器中的适当设置)。
  2. 不要使用 来调整边距\setlength,除非你真的知道自己要做什么。最好使用geometry
  3. 永远不要\\在文本中使用强制换行,在 99.9% 的情况下,强制换行并不是您想要的。
  4. 我会改用\newpageog \pagebreak。后者会拉伸页面。
  5. 文中的使用\vspace也清楚地表明“你做错了”
  6. 这些都是怎么回事adjustwidth

答案3

一些提示。

  1. 在文档中尽可能少地使用明确的标记;应避免使用诸如 1cm 之类的明确长度。

  2. 确定文档的结构并定义用于打印这些逻辑结构的环境或命令。

  3. 尽可能抽象;例如,不要在标题行的规范中硬连线学生的姓名,而是\student为此定义一个命令。

  4. 使用高级包而不是手动操作。例如,使用高级包geometry来设置页面参数而不是摆弄内部结构。

  5. 您的环境使用标准命令定义或用手;当然,使用诸如这样的标准命令\subsection并不是罪过;\assignment如果结果不是您认为最好的,您可以通过将其隐藏在命令()中随意更改它。

  6. 使用诸如 之类的标准环境也没什么不对itemize。但是,每当您开始向标准环境添加格式化指令时,就该创建自己的指令了。对于 这样的环境来说bitemize,它以粗体字样打印项目。

经过准备工作后,这里有一个建议。请注意,对页面参数的更改使您的\pagebreak命令变得毫无用处,无论如何,只有当文档处于最终形式并且您想要纠正错误时才可能添加该命令。始终使用易于搜索的注释标记此类命令,以便您可以在重新编辑文档时删除(或注释掉)它们。

\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc} % or latin1; match the document encoding
\usepackage[danish]{babel}
\usepackage{lmodern}

\usepackage{graphicx}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usetikzlibrary{calc}                               
\usetikzlibrary{decorations.pathreplacing}     

\usepackage{scrpage2}

\usepackage[md]{titlesec}

\usepackage{changepage}
\usepackage{xcolor}

\pagestyle{scrplain}
\makeatletter
\ohead[\@student]{}
\makeatother
\cfoot[]{}
\ofoot[\pagemark]{}
\renewcommand{\headfont}{\itshape}

\usepackage{geometry}
\geometry{
  margin=2cm,
  heightrounded,
  headheight=18pt,
  headsep=12pt,
}

\renewcommand{\labelitemi}{\raisebox{.4ex}{\tiny$\bullet$}}

\makeatletter
\renewcommand{\@maketitle}{%
  {\centering\Large\@title\par}%
  \vspace{12pt}%
}
\newcommand{\student}[1]{\gdef\@student{#1}}
\providecommand\@student{No name given}
\makeatother

\newcommand{\assignment}[1]{%
  \subsection{}%
  {\leavevmode\color{black!40}#1\par}%
}

\newenvironment{image}
 {\begin{center}}
 {\end{center}}

\newenvironment{solution}
 {\begin{adjustwidth}{1cm}{1cm}}
 {\end{adjustwidth}}

\newenvironment{bitemize}
 {\bfseries\begin{itemize}}
 {\end{itemize}}

\begin{document}

\student{Frederik Hestvang, ØP Hold 1}
\title{Obligatorisk opgave 2, x. september 2013.}
\maketitle

\section{Opgave 1}
\assignment{Tegn produktionsmulighedsområdet på ugebasis for henholdsvis Robinson
og Fredag. Beskriv hvad det angiver.}

\begin{image}
\begin{tikzpicture}
\begin{axis}[
    scale only axis,
    grid=major, grid style={dotted, black!30},
    axis lines=middle,
    inner axis line style={->},
    xlabel={Kartofler},
    ylabel={Fisk},
    ytick={0,1,...,8},
    xtick={0,1,...,8},
    ymin=-0.5,
    ymax=8,
    xmin=-0.5,
    xmax=8,
]
\addplot[color=red,thick] coordinates { %ROBINSON
            (6, 0)
            (0, 6)
        };
        \addlegendentry{Robinson}
\addplot[color=blue,thick] coordinates { %FREDAG
            (3, 0)
            (0, 2)
        };
        \addlegendentry{Fredag}

        \addplot[color=black,thick, dotted] coordinates { %HÆLDNINGROB
            (2, 4)
            (3, 4)
        };
         \addplot[color=black,thick, dotted] coordinates { %HÆLDNINGROB
            (3, 4)
            (3, 3)
         };
         \addplot[color=black,thick, dotted] coordinates { %HÆLDNINGROB
            (1, 1.3)
            (2, 1.3)
        };
         \addplot[color=black,thick, dotted] coordinates { %HÆLDNINGROB
            (2, 1.3)
            (2, 0.66)
         };

\node [right] at (axis cs:  3,  3.5) {$-1$};
\node [right] at (axis cs:  2,  1) {$-\frac{2}{3}$};

\end{axis}
\end{tikzpicture}
\end{image}


\begin{solution}
Produktionsmulighedsområdet angiver mængden af de mulige forbrugskombinationer en agent 
eller et samfund har. Altså er det her den ramme, som Robinson og Fredag har, at sammensætte 
deres produktion af fisk og kartofler indenfor.
\end{solution}

\assignment{Definér begrebet absolutte fordel og argumentér for hvem der har den
absolutte fordel i produktionen af henholdsvis fisk og kartofler?}

\begin{solution}
En producent siges at have absolut fordel i produktion af et gode, hvis denne har en højere 
produktivitet (produktion pr. tidsenhed) end den anden producent.

Robinson har den absolutte fordel for begge goder, da hans produktivitet for begge varer er 
højere end Fredags.
\end{solution}

%%% Final adjustment
%\pagebreak



\assignment{Definér begrebet alternativomkostninger og argumentér for hvilken sammenhæng der 
er mellem produktionsmulighedsområdet (her menes vel transformationskurven?) og begrebet 
alternativomkostninger.}

\begin{solution}
Alternativomkostningen ved en handling er værdien af det bedste alternativ, som man må 
afgive for at gennemføre en handling. Hældningen på transformationenskurven angiver 
alternativomkostningen målt i et gode, ved at producere en enhed mere af et andet gode.
\end{solution}

\assignment{Definér begrebet komparativ fordel og argumentér for hvem der har
den komparative fordel i produktionen af henholdsvis fisk og kartofler. Hvordan
bør Robinson og Fredag specialisere sig ifølge Ricardos teori om komparative
fordele, hvis de skal opnå en gevinst ved at handle med hinanden?}

\begin{solution}
En producent siges at have komparativ fordel hvis denne har den laveste alternativomkostning 
ved produktionen af et gode.

Robinsons alternativomkostninger er ens for både fisk og kartofler. Fredags 
alternativomkostning ved at producere 1 kilo kartofler mere er $\frac{2}{3}$ kilo kartofler, 
og dermed $\frac{3}{2}$ kilo fisk ved at producere 1 kilo kartofler mere (fordi 
alternativomkostningen mellem de to varer er reciprok). Altså har\dots
\begin{bitemize}
  \item Robsinson den komparativ fordel i produktion af fisk: 1\,kg/kartoffel
  \item Fredag  komparative fordel i produktion af kartofler: $\frac{2}{3}$\,kg/fisk
\end{bitemize}
Da det ikke er givet, om Robinson eller Fredag har nogle forbrugspræferencer, skal de 
specialsere sig fuldt, i den vare de har størst komparativ fordel i. Når de handler, skal 
det være i intervallet mellem alternativomkostningerne, altså [$\frac{2}{3}$;1].
\begin{itemize}
\item De kan f.eks\@. handle 1\,kg
\item Robinson: 3\,kg fisk giver 4\,kg kartoffel.
\item Fredag: 2\,kg kartoffel giver 1.5\,kg fisk
\end{itemize}

\begin{image}
\begin{tikzpicture}
\begin{axis}[
    scale only axis,
    grid=major, grid style={dotted, black!30},
    axis lines=middle,
    inner axis line style={->},
    xlabel={Kartofler},
    ylabel={Fisk},
    ytick={0,1,...,8},
    xtick={0,1,...,8},
    ymin=-0.5,
    ymax=8,
    xmin=-0.5,
    xmax=8,
]
\addplot[color=red,thick] coordinates { %ROBINSON
            (6, 0)
            (0, 6)
        };
        \addlegendentry{Robinson}
\addplot[color=blue,thick] coordinates { %FREDAG
            (3, 0)
            (0, 2)
        };
        \addlegendentry{Fredag}

        \addplot[color=blue,thick, mark=*] coordinates { %FREDAG
            (1.5, 1.5)

        };
 \addplot[color=red,thick, mark=*] coordinates { %ROBINSON
            (4, 3)

        };

\end{axis}
\end{tikzpicture}
\end{image}

\end{solution}

\end{document}

答案4

您必须首先定义“高效”和“可管理”的含义,以及您期望从代码清理中获得的好处。考虑以下场景:

  1. 你是一个 UNIX 黑客,想编写程序来做类似的事情,“浏览文件 A、B 和 C,并准备一份包含所有部分的摘要,其中卡托夫勒生产公司”。

  2. 您将会制作大量与您发布的文档类似的文档。

  3. 您或您组织中的其他人可能会在您的文档的生命周期内更新您的文件。

如果文档的描述类似于使用标记语言生成的描述,则所有这些步骤都会变得更容易。TeX 不是标记语言,而是排版语言,在某些领域不能忽略这一点:

  1. 数学公式的排版,您可以使用支柱、隐形元素和其他技巧来获得正确的对齐。

  2. 表格的准备,没有“一劳永逸”的简单解决方案,而是一个综合工具包。(看看这些tabularXY包!)

  3. 准备硬段落,如果没有一点帮助,TeX 无法正确分解这些段落。

在其余部分,您几乎可以假装 LaTeX/TeX 确实是一种标记语言。通过定义包含印刷指示的宏,可以将源代码转换为标记语言文件。您可以考虑将其提升到宏或环境中的良好候选片段包括:

\subsection{}
\textcolor{black!40}{…}

\begin{adjustwidth}{1cm}{1cm}
\end{adjustwidth}

您还可以定义一个maketitle包含您的 的自定义宏\lineskip。最好在序言中( 之前\begin{document})定义宏。其他提高清晰度的步骤可能是在包含的文件中推送定义和包加载。我还会将图片放在单独的文件中,因为在编辑源代码时它会分散注意力。

相关内容