Двойной интервал статья продолжений ACM в ЛАТЕКСЕ

C ++ - хороший язык

Я буквально неделю или две назад задолбался в другом вопросе, сказав, что C ++ не был очень хорошим языком. Так что теперь я попробую сказать обратное. ;)

Нет, если серьезно, то, что я пытался сделать, и теперь попробую еще раз, это то, что в C ++ есть много недостатков. Трудно это отрицать. Это настолько сложно, что усвоить его - это то, чему вы можете посвятить всю свою жизнь. Это делает ненужным выполнение многих обычных задач, позволяет пользователю погрузиться головой в море неопределенного поведения и непереносимого кода, без предупреждений, выдаваемых компилятором.

Но это не бесполезный, дряхлый, устаревший, ненавистный язык, который многие люди пытаются сделать это. Это не должно быть сметено под ковром и проигнорировано. Мир не был бы лучшим местом без него. У этого есть некоторые уникальные сильные стороны, которые, к сожалению, скрыты за причудливым синтаксисом, устаревшими и не в последнюю очередь плохими учителями C ++. Но они есть.

В C ++ есть много функций, которые мне отчаянно не хватает при программировании на C # или других «современных» языках. В нем есть чему поучиться на C # и других современных языках.

Он не слепо сфокусирован на ООП, а вместо этого исследовал и впервые применил общее программирование. Это позволяет на удивление выразительно метапрограммировать во время компиляции, производя чрезвычайно эффективный, надежный и чистый код. Уроки функционального программирования потребовались почти десятилетие, прежде чем C # получил LINQ или лямбда-выражения.

Это позволяет вам обнаруживать удивительное количество ошибок во время компиляции с помощью статических утверждений и других приемов метапрограммирования, что значительно облегчает отладку и даже превосходит модульные тесты в некоторых отношениях. (Я бы предпочел поймать ошибку во время компиляции, чем потом, когда я запускаю свои тесты).

Детерминированное уничтожение переменных позволяет RAII, чрезвычайно мощный маленький трюк, который делает блоки try / finally и блоки using в C # избыточными.

И хотя некоторые люди обвиняют его в том, что он «проектируется комитетом», я бы сказал, что да, это так, и в данном случае это на самом деле неплохо. Посмотрите на библиотеку классов Java. Сколько классов снова устарело? Сколько не следует использовать? Сколько дублируют функциональность друг друга? Сколько из них плохо спроектировано?

Стандартная библиотека C ++ намного меньше, но в целом она удивительно хорошо спроектирована, и, за исключением одной или двух незначительных бородавок (например, vector<bool>), ее дизайн все еще остается в силе. очень хорошо. Когда функция добавляется в C ++ или его стандартную библиотеку, она подвергается тщательному анализу. Разве Java не могла извлечь выгоду из того же самого? Также .NET, хотя он и моложе и был несколько лучше спроектирован с самого начала, по-прежнему накапливает большое количество классов, которые не синхронизированы с реальностью или плохо спроектированы с самого начала.

С ++ обладает множеством сильных сторон, с которыми не может сравниться ни один другой язык. Это хороший язык

22
задан reprogrammer 22 January 2013 в 15:54
поделиться

6 ответов

Я полагаю, вы хотите использовать \ usepackage {doublespace} для двойного интервала в документе. Чтобы вставить блок одинарных интервалов, окружите его \ begin {singlespace} и \ end {singlelespace} .

Ссылка: http://web.mit .edu / olh / Latex / ess-latex.html

9
ответ дан 29 November 2019 в 04:02
поделиться

Похоже, что класс acm_proc_article-sp делает некоторые забавные вещи, которые сбивают с толку пакет setspace . В преамбуле вашего документа .tex добавьте следующие строки:

% Redefines \@ptsize to make setspace happy
\makeatletter
\renewcommand{\@ptsize}{0}
\makeatother

% Double-spaces the entire document
\usepackage{setspace}
\doublespacing

Понятия не имею, почему класс acm_proc_article-sp переопределяет \ @ ptsize на быть пустым.

14
ответ дан 29 November 2019 в 04:02
поделиться

По какой-то причине класс acm_proc_article-sp переопределяет \ @ ptsize . Я не знаю, для чего используется \ @ ptsize , поэтому не хочу с этим связываться. Используя команду \ show (см. текст ссылки , чтобы узнать больше об этой фантастической команде), я вижу, что \ doublespacing распаковывается в

\setstretch{1.667} \ifcase \@ptsize \relax \setstretch{1.667} \or 
\setstretch{1.618} \or \setstretch{1.655}\fi

Другими словами, \ doublespacing по существу эквивалентен \ setstretch {1.667} , с немного другими коэффициентами растяжения, если \ @ ptsize оказывается равным 1 или 2 . Поэтому я думаю, что наиболее ненавязчивым решением вашей проблемы является замена \ doublespacing на \ setstretch {1.667} .

\documentclass{acm_proc_article-sp}
\usepackage{setspace}
\setstretch{1.667}
\begin{document}
...
\end{document}
3
ответ дан 29 November 2019 в 04:02
поделиться

\linespread{2} должен работать. Не нуждается в каких-либо пакетах, насколько я могу судить, и вы можете изменить его на 1,9-интервал или 2,1-интервал, если вам это нравится...

22
ответ дан 29 November 2019 в 04:02
поделиться

Не делайте этого. Вам необходимо следовать инструкциям по отправке статей из материалов конференции ACM, которые в любом случае не требуют, чтобы вы помещали статью в два интервала.

-1
ответ дан 29 November 2019 в 04:02
поделиться

Я только что попробовал эту команду (в преамбуле) для двойного интервала, и она отлично сработала:

\usepackage{setspace}
\setstretch{2} 
3
ответ дан 29 November 2019 в 04:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: