четверг, 24 ноября 2011 г.

Создание PDF документов в C# с использованием библиотеки PDFSharp

По долгу службы мне приходится программировать на C#. Однажды передо мной встала задача написать модуль, который бы генерировал PDF документы "на лету". После сравнительного анализа различных библиотек я остановился на PDFSharp потому, что она позволяет вставлять картинки, работать с таблицами и, самое главное, в ней реализован компонент для просмотра сгенерированных документов.

воскресенье, 6 ноября 2011 г.

Таблицы с большим количеством текста

Обычно не возникает проблем с включением в ячейки таблиц большого количества текста. Тех сам растянет ячейки под нужный размер. Главное не забыть ограничить ширину ячеек указав вместо стандартного параметра c,l или r параметры p,m,b позволяющие указывать ширину ячейки.
Например:
\begin{tabular}{| p{0.5\linewidth} | c |}
\hline
Конгруэ́нтность (лат. congruens, -ntis — соразмерный, соответствующий) в широком смысле — равенство, адекватность друг другу различных экземпляров чего-либо (обычно — содержания, выраженного в различных формах, представлениях) или согласованность элементов системы между собой.
&
Конгруэ́нтность (лат. congruens, -ntis — соразмерный, соответствующий) в широком смысле — равенство, адекватность друг другу различных экземпляров чего-либо (обычно — содержания, выраженного в различных формах, представлениях) или согласованность элементов системы между собой.
\\ \hline
\end{tabular}  


Но вот если использовать объединение ячеек между рядами multirow, то стандартный механизм уже не работает. Высота полученной ячейки будет равна сумме высот объединенных ячеек. И в результате может получится что-то такое:
Видите? Текста слишком много и он накладывается на текст в других ячейках. Единственный, известный мне, способ этого избежать - увеличить высоту ячеек. Делается это следующим трюком:

\newlength{\rowA}
\setlength{\rowA}{8ex} % modify as needed
\newcommand{\strutA}{% no space before strut
\rule[-0.45\rowA]{0pt}{\rowA}% put text approx mid strut

}
    \begin{tabular}{|p{0.45\linewidth}|p{0.15\linewidth}|p{0.15\linewidth}|}
    \hline
    Вариант испытания&Ожидаемый логический уровень & Напряжение на выходе (В)\\ \hline
\multirow{2}{\linewidth}{Выход не имеет нагрузки} & 0&0\\ \cline{2-3}
                                        & 1& 1.27 -- 0 \\ \hline
\multirow{2}{\linewidth}{Выход имеет нагрузку, резистор 1000 Ом,
                подключенную к цепи GND }&0& 0 \strutA \\ \cline{2-3}
                                        &1 &0 \strutA \\ \hline
\multirow{2}{\linewidth}{Выход имеет нагрузку резистор 1000 Ом,
                подключенную к цепи питания VCC +5В} &0& 5 \strutA \\ \cline{2-3}
                                                    & 1&4.3\strutA \\ \hline
\multirow{2}{\linewidth}{Выход имеет нагрузку резистор 1000 Ом,
                подключенную к дополнительному источнику
                питания постоянного тока напряжением 3В. }&0&2.4\strutA \\ \cline{2-3}
                                                        & 1&3\strutA \\ \hline
\multirow{2}{\linewidth}{Выход имеет нагрузку резистор 1000 Ом,
                подключенную к дополнительному источнику
                питания постоянного тока напряжением 5В.}&0&4.3\strutA \\ \cline{2-3}
                                                        &1 &5 \strutA \\ \hline
\multirow{2}{\linewidth}{Выход имеет нагрузку резистор 1000 Ом,
                подключенную к дополнительному источнику
                питания постоянного тока напряжением 10В.}   &0& 9.2\strutA \\ \cline{2-3}
                                                            &1& 10\strutA \\ \hline
    \end{tabular}


Эту хитрость я нашел здесь: http://nepsweb.co.uk/docs/tableTricks.pdf


пятница, 28 октября 2011 г.

Решение систем уравнений в Octave

В прошлом посте я рассказывал как поставить Octave, а теперь расскажу о том, что с ним можно делать. А именно о решении систем уравнений.

среда, 26 октября 2011 г.

Установка Octave

В этом посте я расскажу как устанавливать такую замечательную вещь, как Octave.
Octave - это свободная/бесплатная програмка/язык программирования для математических расчетов. GNU аналог матлаба. Подробнее про то, что это такое и как устанавливать это под нормальными операционными системами  написал тов. virens вот тут.
Дальше для таких же как и я пользователей windows:

пятница, 21 октября 2011 г.

Графы в Латех

В ЛаТеХ можно рисовать графы, используя пакет XY.
Подробный, но нерусский, мануал XY guide.
Если верить мануалу, то
XY-pic is a package for typesetting graphs and diagrams
using Knuth's TEX typesetting system. XY-pic works with
most of the many formats available; e.g., plain TEX,
LATEX, and AMS-TEX. Several styles of input for various
diagram types are supported; they all share a mnemonic
notation based on the logical composition of visual com-
ponents. This guide concentrates on how to typeset
\matrix-like" diagrams, such as commutative diagrams.

пятница, 14 октября 2011 г.