Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

算法的行距太小,如何调整算法中的行距 #16

Closed
3 tasks done
TaihuLight opened this issue Mar 21, 2019 · 8 comments
Closed
3 tasks done

算法的行距太小,如何调整算法中的行距 #16

TaihuLight opened this issue Mar 21, 2019 · 8 comments

Comments

@TaihuLight
Copy link

TaihuLight commented Mar 21, 2019

检查

  • 已在 issues 中进行搜索

编译环境

  • 操作系统

    • Windows 10
  • TeX 发行版

    • MiKTeX <2.9.6972>

描述问题

(1)问题:算法的行距太小,如何调整算法中的行距?
(2)尝试调整line33-35的代码,无效

最小工作示例(MWE)

MDPI_template.zip

@RuixiZhang42
Copy link
Member

源代码里面的小毛病挺多的,这里只回答涉及 algorithmic 行距的问题。

首先,请去掉 algorithmic 里的手动换行 \\,一共 3 处。

其实,并不是行距问题——第 1 行算法(4 行文本)与第 2 行算法(2 行文本)的内部是没有问题的,出问题的是这两行算法之间的间距。

改进方法:

% 加在导言区
\usepackage{etoolbox}
\makeatletter
\expandafter\patchcmd\csname\string\algorithmic\endcsname
  {\itemsep\z@}
  {\itemsep=2ex plus2pt\relax}% 根据个人喜好修改 2ex plus2pt 弹性距离
  {}{}
\makeatother

真·改进方法:把算法重写,文本描述精简一些,不要一行算法出现多行文本描述。

@TaihuLight
Copy link
Author

TaihuLight commented Mar 21, 2019

@OsbertWang 您的方法会将所有行距都变大,问题只是每行算法之间的距离太小。
@RuixiZhang42 你给的改进方法,我加入导言区域后没有效果,可否提供下您修改后的全部源码?

@RuixiZhang42
Copy link
Member

你给的改进方法,我加入导言区域后没有效果

那就是 class 的问题了,你试试把 mdpi.cls 里的这句注释掉:

\renewcommand{\item}{\setlength{\itemsep}{\wideitemsep}\olditem}

大概看了一下 mdpi.cls,代码写得不好。例如上面这个修改 \itemsep 的方法是很糟糕的,应该通过 enumitem 这些宏包来实现才对。

@TaihuLight
Copy link
Author

TaihuLight commented Mar 22, 2019

@RuixiZhang42
谢谢你的帮助,
最后我将mdpi.cls中你提示的那句话前面的一句中的-7pt修改为-2pt这个问题就解决了。

%% Bullet lists
\addtolength{\wideitemsep}{-2pt}  %原来是 addtolength{\wideitemsep}{-7pt} 
\let\olditem\item
\renewcommand{\item}{\setlength{\itemsep}{\wideitemsep}\olditem}

@RuixiZhang42
Copy link
Member

不对啊,我修改的 class 是这样的:

%%%% Bullet lists
\newlength{\wideitemsep}
\setlength{\wideitemsep}{.5\itemsep}
\addtolength{\wideitemsep}{-7pt}
\let\olditem\item
%\renewcommand{\item}{\setlength{\itemsep}{\wideitemsep}\olditem}

然后这是我得到的结果:

noissue

一切正常……

@TaihuLight
Copy link
Author

@RuixiZhang42 我重新再在试了下,我们两个的方法都可以实现算法行距的更改,但是会导致每条参考文献之间的间距变大。
所以,还是要想办法在算法这个区域进行修改。

@RuixiZhang42
Copy link
Member

另:官方 https://www.mdpi.com/authors/latex 提供的模板写成这样也是醉了……这种 CTAN 上面没有的 class 或 package 很难排查错误……

现在对现有问题做一个整体分析吧:

  1. algorithmic 环境是通过 list 来实现逐行排版算法的,即每一行算法其实是跟在 \item 之后排版的。
  2. mdpi.cls 通过极其不正确的方法更改 \item 的定义,就为了使用它定义的 \itemsep,模板负分。

如果你一定要用 algorithmic,那么可以通过向导言区添加如下代码实现:

\usepackage{etoolbox}
\AtBeginEnvironment{algorithmic}
  {\let\item\olditem}

这模板简直了……

@TaihuLight

This comment has been minimized.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants